From: Marcelo Tosatti <mtosatti@redhat.com>
To: Avi Kivity <avi@redhat.com>
Cc: Davide Libenzi <davidel@xmailserver.org>,
Gregory Haskins <ghaskins@novell.com>,
viro@ZenIV.linux.org.uk, kvm@vger.kernel.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [KVM PATCH v4 2/2] kvm: add support for irqfd via eventfd-notification interface
Date: Thu, 7 May 2009 10:46:07 -0300 [thread overview]
Message-ID: <20090507134607.GA25311@amt.cnet> (raw)
In-Reply-To: <4A02AE65.3000800@redhat.com>
On Thu, May 07, 2009 at 12:48:21PM +0300, Avi Kivity wrote:
> Davide Libenzi wrote:
>> On Wed, 6 May 2009, Gregory Haskins wrote:
>>
>>
>>> I think we are ok in this regard (at least in v5) without the
>>> callback. kvm holds irqfd, which holds eventfd. In a normal
>>> situation, we will
>>> have eventfd with 2 references. If userspace closes the eventfd, it
>>> will drop 1 of the 2 eventfd file references, but the object should
>>> remain intact as long as kvm still holds it as well. When the kvm-fd is
>>> released, we will then decouple from the eventfd->wqh and drop the last
>>> fput(), officially freeing it.
>>>
>>> Likewise, if kvm is closed before the eventfd, we will simply decouple
>>> from the wqh and fput(eventfd), leaving the last reference held by
>>> userspace until it closes as well.
>>>
>>> Let me know if you see any holes in that.
>>>
>>
>> Looks OK, modulo my knowledge of KVM internals.
>>
>
> What's your take on adding irq context safe callbacks to irqfd?
>
> To give some background here, we would like to use eventfd as a generic
> connector between components, so the components do not know about each
> other. So far eventfd successfully abstracts among components in the
> same process, in different processes, and in the kernel.
>
> eventfd_signal() can be safely called from irq context, and will wake up
> a waiting task. But in some cases, if the consumer is in the kernel, it
> may be able to consume the event from irq context, saving a context
> switch.
>
> So, will you consider patches adding this capability to eventfd?
(pasting from a separate thread)
> That's my thinking. PCI interrupts don't work because we need to do
> some hacky stuff in there, but MSI should. Oh, and we could improve
> UIO
> support for interrupts when using MSI, since there's no need to
> acknowledge the interrupt.
Ok, so for INTx assigned devices all you need to do on the ACK handler
is to re-enable the host interrupt (and set the guest interrupt line to
low).
Right now the ack comes through a kvm internal irq ack callback.
AFAICS there is no mechanism in irqfd for ACK notification, and
interrupt injection is edge triggered.
So for PCI INTx assigned devices (or any INTx level), you'd want to keep
the guest interrupt high, with some way to notify the ACK.
Avi mentioned a separate irqfd to notify the ACK. For assigned devices,
you could register a fd wakeup function in that fd, which replaces the
current irq ACK callback?
next prev parent reply other threads:[~2009-05-07 13:46 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-04 17:57 [KVM PATCH v4 0/2] irqfd Gregory Haskins
2009-05-04 17:57 ` [KVM PATCH v4 1/2] eventfd: export eventfd interfaces for module use Gregory Haskins
2009-05-04 22:24 ` Al Viro
2009-05-05 2:17 ` Gregory Haskins
2009-05-04 17:57 ` [KVM PATCH v4 2/2] kvm: add support for irqfd via eventfd-notification interface Gregory Haskins
2009-05-05 15:45 ` Avi Kivity
2009-05-05 17:34 ` Gregory Haskins
2009-05-05 17:43 ` Avi Kivity
2009-05-05 17:56 ` Gregory Haskins
2009-05-05 18:10 ` Avi Kivity
2009-05-05 18:21 ` Gregory Haskins
2009-05-06 11:35 ` Gregory Haskins
2009-05-06 15:24 ` Davide Libenzi
2009-05-06 15:37 ` Gregory Haskins
2009-05-07 1:34 ` Davide Libenzi
2009-05-07 2:06 ` Gregory Haskins
2009-05-08 15:06 ` Davide Libenzi
2009-05-12 3:55 ` Gregory Haskins
2009-05-12 6:55 ` Davide Libenzi
2009-05-07 9:48 ` Avi Kivity
2009-05-07 13:46 ` Marcelo Tosatti [this message]
2009-05-07 14:01 ` Gregory Haskins
2009-05-07 14:34 ` Avi Kivity
2009-05-07 14:54 ` Gregory Haskins
2009-05-07 15:26 ` Avi Kivity
2009-05-07 14:46 ` Davide Libenzi
2009-05-07 15:47 ` Avi Kivity
2009-05-07 16:44 ` Davide Libenzi
2009-05-07 18:12 ` Avi Kivity
2009-05-08 3:13 ` Davide Libenzi
2009-05-08 8:19 ` Avi Kivity
2009-05-04 18:06 ` [KVM PATCH v4 0/2] irqfd Gregory Haskins
2009-05-04 18:52 ` Gregory Haskins
2009-05-05 14:16 ` Davide Libenzi
2009-05-05 14:27 ` Gregory Haskins
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=20090507134607.GA25311@amt.cnet \
--to=mtosatti@redhat.com \
--cc=avi@redhat.com \
--cc=davidel@xmailserver.org \
--cc=ghaskins@novell.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@ZenIV.linux.org.uk \
/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