mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: lsorense@csclub.uwaterloo.ca (Lennart Sorensen)
To: Or Sagi <ors@tutis.com>
Cc: linux-kernel@vger.kernel.org, kvm-devel@lists.sourceforge.net
Subject: Re: [RFC] Deferred interrupt handling.
Date: Wed, 18 Jul 2007 11:57:03 -0400	[thread overview]
Message-ID: <20070718155703.GA24545@csclub.uwaterloo.ca> (raw)
In-Reply-To: <005901c7c921$79c006c0$6d401440$@com>

On Wed, Jul 18, 2007 at 12:53:19PM +0300, Or Sagi wrote:
> Gentlepeople,
> 
> We're currently working on PCI device pass-through support for KVM. In this
> model all physical hardware access to specific devices will be performed by
> the VM, and not by the host.
> 
> In particular, this requires interrupt handling to be done by the guest --
> The host shouldn't load the corresponding device driver or otherwise access
> the device. Since the host kernel is not aware of the device semantics it
> cannot acknowledge the interrupt at the device level.
> 
> As far as the host kernel is concerned the VM is a user level process. We
> require the ability to forward interrupt handling to such entities. The
> current kernel interrupt handling path doesn't allow deferring interrupt
> handling _and_ acknowledgement.
> 
> We believe that this requires changing the current interrupt path in several
> fashions:
> 
> 0. Adding an IRQ_DEFERRED mechanism to the interrupt handling path. ISRs
> returning IRQ_DEFERRED will keep the interrupt masked until future
> acknowledge.
> 1. Deferred acknowledge mechanism which would acknowledge the APIC and
> unmask
> the interrupt.
> 
> An alternative idea was suggested at
> http://lists.xensource.com/archives/html/xen-devel/2007-05/msg01148.html ---
> which is based on reversing the polarity of the received interrupt. Once
> the guest acknowledges the interrupt at the device level, the polarity is
> reversed again by the host.
> 
> This may not be the best choice performance wise -- twice the interrupt
> count.
> 
> Another issue we are aware of is the effect deferred handling will have on
> other devices sharing the interrupt. This seems to be a problem regardless
> of the solution.
> 
> We wouldn't like to assume VT-d availability right now.
> 
> Any ideas ? Thoughts ?

What if you have two PCI devices sharing an interrupt, unless the host
OS knows about all the devices that can generate that interrupt, how it
is supposed to deal with it?  It can't know that it should pass in IRQ
to a guest OS, unless it can determine which device actually generated
the interrupt, which probably requires some knowledge of the devices
involved.  Should the guest be able to register as a handler of that
interrupt, so that the host has to call the guest's interrupt handler
everytime an interrupt occours that the guest has registered as a
potential handler of?  There might not be any other choice.  Maybe a
driver that simply registers as using the interrupt and then passes the
call to the guest somehow so the guest can determine if the device
generated the interrupt and handle it, and then return back to the main
interrupt handler.  Of course this would mean the guest has to be
scheduled and run during the host's interrupt handler which might just
not be an option.

Sounds tricky.

--
Len Sorensen

  parent reply	other threads:[~2007-07-18 15:57 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-18  9:53 Or Sagi
2007-07-18 11:30 ` Alan Cox
2007-07-18 16:36   ` [kvm-devel] " Dor Laor
2007-07-18 16:47     ` Alan Cox
2007-07-18 16:46       ` Avi Kivity
2007-07-18 16:57         ` Alan Cox
2007-07-18 16:57           ` Avi Kivity
2007-07-18 17:14             ` Alan Cox
2007-07-18 17:09         ` Dor Laor
2007-07-18 17:33           ` Alan Cox
2007-07-18 21:29             ` Dor Laor
2007-07-18 21:46               ` Alan Cox
2007-07-25 14:18                 ` Pavel Machek
2007-07-18 22:23               ` Or Sagi
2007-07-18 19:14         ` Lennart Sorensen
2007-07-19  9:23           ` Avi Kivity
2007-07-19 13:17             ` Lennart Sorensen
2007-07-19 13:38               ` Avi Kivity
2007-07-19 16:23                 ` Lennart Sorensen
2007-07-18 15:57 ` Lennart Sorensen [this message]
2007-07-19  0:15 Peter Chubb

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070718155703.GA24545@csclub.uwaterloo.ca \
    --to=lsorense@csclub.uwaterloo.ca \
    --cc=kvm-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ors@tutis.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®