From: Gregory Haskins <ghaskins@novell.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
avi@redhat.com, davidel@xmailserver.org,
paulmck@linux.vnet.ibm.com, mingo@elte.hu
Subject: Re: [KVM-RFC PATCH 1/2] eventfd: add an explicit srcu based notifier interface
Date: Tue, 16 Jun 2009 14:09:38 -0400 [thread overview]
Message-ID: <4A37DFE2.2020506@novell.com> (raw)
In-Reply-To: <20090616175300.GA24514@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 3709 bytes --]
Michael S. Tsirkin wrote:
> On Tue, Jun 16, 2009 at 12:17:22PM -0400, Gregory Haskins wrote:
>
>>> Maybe I misunderstand what iosignalfd is - isn't it true that you get eventfd
>>> and kvm will signal that when guest performs io write to a specific
>>> address, and then drivers can get eventfd and poll it to detect
>>> these writes?
>>>
>>>
>> Correct.
>>
>>
>>> If yes, you have no way to know that the other end of eventfd
>>> is connected to kvm, so you don't know you can access current->mm.
>>>
>>>
>> Well, my intended use for them *does* know its connected to KVM.
>>
>
> How does it know? You get a file descriptor and you even figure out it's an
> eventfd. Now what? Any process can write there.
>
Well, I suppose that is true. Unlike my current hypercall coupling
deployed in vbus v3, anyone can signal the event for the iosignalfd.
However, it wouldn't matter other than looking like an errant signal as
I do not use "current" for anything. (e.g. all the virtio pointers are
stored independently to the iosignalfd)
>
>> Perhaps there will be others that do not in the future, but like I said
>> it could be addressed as those actually arise.
>>
>>
>>
>>>
>>>
>>>> So since I cannot use it accurately for the hardirq/threaded-irq type
>>>> case, and I don't actually need it for the iosignalfd case, I am not
>>>> sure its the right direction (at least for now). I do think it might
>>>> have merit for syscal/vmexit uses outside of iosignalfd, but I do not
>>>> see a current use-case for it so perhaps it can wait until one arises.
>>>>
>>>> -Greg
>>>>
>>>>
>>> But, it addresses the CONFIG_PREEMPT off case, which your design doesn't
>>> seem to.
>>>
>>>
>> Well, the problem is that it only addresses it partially in a limited
>> set of circumstances, and doesn't address the broader problem. I'll
>> give you an example:
>>
>> (First off, lets assume that we are not going to have
>> eventfd_signal_task(), but rather eventfd_signal() with two option
>> flags: EVENTFD_SIGNAL_CANSLEEP, and EVENTFD_SIGNAL_CURRENTVALID
>>
>> Today vbus-enet has a rx-thread and a tx-thread at least partially
>> because I need process-context to do the copy_to_user(other->mm) type
>> stuff (and we will need similar for our virtio-net backend as well). I
>> also utilize irqfd to do interrupt injection. Now, since I know that I
>> have kthread_context, I could modify vbus-enet to inject interrupts with
>> EVENTFD_SIGNAL_CANSLEEP set, and this is fine. I know that is safe.
>>
>> However, the problem is above that! I would like to optimize out the
>> tx-thread to begin with with a similar "can_sleep()" pattern whenever
>> possible.
>>
>> For instance, if the netif stack calls me to do a transmit and it
>> happens to be in a sleepable context, it would be nice to just skip
>> waking up the tx-thread. I would therefore just do the
>> copy_to_user(other->mm) + irqfd directly in the netif callback, thereby
>> skipping the context switch.
>>
>
> What do you mean by copy_to_user(other->mm) here? If you are going to switch
> to another mm, then I think current->mm must be valid (I think it's not enough
> that you can sleep). So preemptible() might not be enough.
>
I dont currently use switch_mm, if that is what you mean. I save the
task_struct into the appropriate context so current->mm doesn't matter
to me. I never use it. All I need (afaik) is to acquire the proper
mutex first. I am not an MM expert, so perhaps I have this wrong but it
does appear to work properly even from kthread context.
-Greg
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 266 bytes --]
next prev parent reply other threads:[~2009-06-16 18:09 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-16 2:29 [KVM-RFC PATCH 0/2] eventfd enhancements for irqfd/iosignalfd Gregory Haskins
2009-06-16 2:29 ` [KVM-RFC PATCH 1/2] eventfd: add an explicit srcu based notifier interface Gregory Haskins
2009-06-16 14:02 ` Michael S. Tsirkin
2009-06-16 14:11 ` Gregory Haskins
2009-06-16 14:38 ` Michael S. Tsirkin
2009-06-16 14:48 ` Gregory Haskins
2009-06-16 14:54 ` Gregory Haskins
2009-06-16 15:16 ` Michael S. Tsirkin
2009-06-16 14:55 ` Michael S. Tsirkin
2009-06-16 15:20 ` Gregory Haskins
2009-06-16 15:41 ` Michael S. Tsirkin
2009-06-16 16:17 ` Gregory Haskins
2009-06-16 16:19 ` Davide Libenzi
2009-06-16 17:01 ` Gregory Haskins
2009-06-17 16:38 ` Davide Libenzi
2009-06-17 17:28 ` Gregory Haskins
2009-06-17 17:44 ` Davide Libenzi
2009-06-17 19:17 ` Gregory Haskins
2009-06-17 19:50 ` Davide Libenzi
2009-06-17 21:48 ` Gregory Haskins
2009-06-17 23:21 ` Davide Libenzi
2009-06-18 6:23 ` Michael S. Tsirkin
2009-06-18 17:52 ` Davide Libenzi
2009-06-18 14:01 ` Gregory Haskins
2009-06-18 17:44 ` Davide Libenzi
2009-06-18 19:04 ` Gregory Haskins
2009-06-18 22:03 ` Davide Libenzi
2009-06-18 22:47 ` Gregory Haskins
2009-06-19 18:51 ` Gregory Haskins
2009-06-19 18:51 ` [PATCH 1/3] eventfd: Allow waiters to be notified about the eventfd file* going away Gregory Haskins
2009-06-19 18:51 ` [PATCH 2/3] eventfd: add generalized notifier interface Gregory Haskins
2009-06-19 18:51 ` [PATCH 3/3] eventfd: add internal reference counting to fix notifier race conditions Gregory Haskins
2009-06-19 19:10 ` Davide Libenzi
2009-06-19 21:16 ` Gregory Haskins
2009-06-19 21:26 ` Davide Libenzi
2009-06-19 21:49 ` Gregory Haskins
2009-06-19 21:54 ` Davide Libenzi
2009-06-19 22:47 ` Davide Libenzi
2009-06-20 2:09 ` Gregory Haskins
2009-06-20 21:17 ` Davide Libenzi
2009-06-20 22:11 ` Davide Libenzi
2009-06-20 23:48 ` Davide Libenzi
2009-06-21 1:14 ` Gregory Haskins
2009-06-21 16:51 ` Davide Libenzi
2009-06-21 18:39 ` Gregory Haskins
2009-06-21 23:54 ` Davide Libenzi
2009-06-22 16:05 ` Gregory Haskins
2009-06-22 17:01 ` Davide Libenzi
2009-06-22 17:43 ` Gregory Haskins
2009-06-22 18:03 ` Davide Libenzi
2009-06-22 18:31 ` Gregory Haskins
2009-06-22 18:40 ` Davide Libenzi
2009-06-22 18:41 ` Michael S. Tsirkin
2009-06-22 18:51 ` Davide Libenzi
2009-06-22 19:05 ` Michael S. Tsirkin
2009-06-22 19:26 ` Gregory Haskins
2009-06-22 19:29 ` Davide Libenzi
2009-06-22 20:06 ` Gregory Haskins
2009-06-22 22:53 ` Davide Libenzi
2009-06-23 1:03 ` Gregory Haskins
2009-06-23 1:17 ` Davide Libenzi
2009-06-23 1:26 ` Gregory Haskins
2009-06-23 14:29 ` Davide Libenzi
2009-06-23 14:37 ` Gregory Haskins
2009-06-23 14:35 ` Davide Libenzi
2009-06-23 14:42 ` Gregory Haskins
2009-06-23 15:04 ` Michael S. Tsirkin
2009-06-22 20:28 ` Michael S. Tsirkin
2009-06-22 19:16 ` Gregory Haskins
2009-06-22 19:54 ` Davide Libenzi
2009-06-24 3:25 ` Rusty Russell
2009-06-24 22:45 ` Davide Libenzi
2009-06-25 11:42 ` Rusty Russell
2009-06-25 16:34 ` Davide Libenzi
2009-06-25 17:32 ` Gregory Haskins
2009-06-25 18:26 ` Michael S. Tsirkin
2009-06-25 18:41 ` Gregory Haskins
2009-06-26 11:23 ` Michael S. Tsirkin
2009-06-23 3:25 ` Rusty Russell
2009-06-23 14:31 ` Davide Libenzi
2009-06-25 0:19 ` Davide Libenzi
2009-06-21 1:05 ` Gregory Haskins
2009-06-16 17:54 ` [KVM-RFC PATCH 1/2] eventfd: add an explicit srcu based notifier interface Michael S. Tsirkin
2009-06-16 18:09 ` Gregory Haskins [this message]
2009-06-17 14:45 ` Michael S. Tsirkin
2009-06-17 15:02 ` Gregory Haskins
2009-06-17 16:25 ` Michael S. Tsirkin
2009-06-17 16:41 ` Gregory Haskins
2009-06-16 14:17 ` Gregory Haskins
2009-06-16 14:22 ` Gregory Haskins
2009-06-16 14:40 ` Gregory Haskins
2009-06-16 14:46 ` Michael S. Tsirkin
2009-06-18 9:03 ` Avi Kivity
2009-06-18 11:43 ` Gregory Haskins
2009-06-16 2:30 ` [KVM-RFC PATCH 2/2] eventfd: add module reference counting support for registered notifiers 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=4A37DFE2.2020506@novell.com \
--to=ghaskins@novell.com \
--cc=avi@redhat.com \
--cc=davidel@xmailserver.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mst@redhat.com \
--cc=paulmck@linux.vnet.ibm.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