From: Avi Kivity <avi@redhat.com>
To: Gregory Haskins <ghaskins@novell.com>
Cc: kvm@vger.kernel.org, viro@ZenIV.linux.org.uk,
linux-kernel@vger.kernel.org, davidel@xmailserver.org
Subject: Re: [KVM PATCH v4 2/2] kvm: add support for irqfd via eventfd-notification interface
Date: Tue, 05 May 2009 21:10:47 +0300 [thread overview]
Message-ID: <4A008127.7060406@redhat.com> (raw)
In-Reply-To: <4A007DDA.5000302@novell.com>
Gregory Haskins wrote:
> Avi Kivity wrote:
>
>> Gregory Haskins wrote:
>>
>>
>>> +int
>>> +kvm_irqfd(struct kvm *kvm, int gsi, int flags)
>>> +{
>>> + struct _irqfd *irqfd;
>>> + struct file *file = NULL;
>>> + int fd = -1;
>>> + int ret;
>>> +
>>> + irqfd = kzalloc(sizeof(*irqfd), GFP_KERNEL);
>>> + if (!irqfd)
>>> + return -ENOMEM;
>>> +
>>> + irqfd->kvm = kvm;
>>>
>>>
>> You need to increase the refcount on struct kvm here. Otherwise evil
>> userspace will create an irqfd, close the vm and vcpu fds, and inject
>> an interrupt.
>>
>
> I just reviewed the code in prep for v5, and now I remember why I didnt
> take a reference: I designed it the opposite direction: the vm-fd owns
> a reference to the irqfd, and will decouple the kvm context from the
> eventfd on shutdown (see kvm_irqfd_release()). I still need to spin a
> v5 regardless in order to add the padding as previously discussed. But
> let me know if you still see any holes in light of this alternate object
> lifetime approach I am using.
>
Right, irqfd_release works. But I think refcounting is simpler, since
we already kvm_get_kvm() and kvm_put_kvm(), and you wouldn't need the
irqfd list. On the other hand, I'm not sure you get a callback from
eventfd on close(), so refcounting may not be implementable.
Drat, irqfd_release doesn't work. You reference kvm->lock in
irqfd_inject without taking any locks.
btw, there's still your original idea of creating the eventfd in
userspace and passing it down. That would be workable if we can see a
way to both signal the eventfd and get called back in irq context.
Maybe that's preferable to what we're doing here, but we need to see how
it would work.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
next prev parent reply other threads:[~2009-05-05 18:11 UTC|newest]
Thread overview: 36+ 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 [this message]
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
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
-- strict thread matches above, loose matches on Subject: below --
2009-05-04 17:55 Gregory Haskins
2009-05-04 17:56 ` [KVM PATCH v4 2/2] kvm: add support for irqfd via eventfd-notification interface 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=4A008127.7060406@redhat.com \
--to=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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.