From: "Gregory Haskins" <ghaskins-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
To: "Avi Kivity" <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: [PATCH 3/8] KVM: Adds ability to preempt an executing VCPU
Date: Mon, 14 May 2007 14:19:39 -0400 [thread overview]
Message-ID: <46486FD4.BA47.005A.0@novell.com> (raw)
In-Reply-To: <46488426.8090705-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
>>> On Mon, May 14, 2007 at 11:45 AM, in message <46488426.8090705-atKUWr5tajBWk0Htik3J/w@public.gmane.org>,
Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote:
> Gregory Haskins wrote:
>>>> index 059f074..0f6cc32 100644
>>>> --- a/drivers/kvm/kvm.h
>>>> +++ b/drivers/kvm/kvm.h
>>>> @@ - 329,6 +329,8 @@ struct kvm_vcpu_irq {
>>>> struct kvm_irqdevice dev;
>>>> int pending;
>>>> int deferred;
>>>> + struct task_struct *task;
>>>> + int guest_mode;
>>>>
>>>>
>>> - >guest_mode can be folded into - >task, by specifying that - >task !=
>>> NULL is equivalent to - >guest_mode != 0. This will make the rest of the
>>> code easier to read.
>>>
>>
>> The problem with doing it this way is that its no longer possible to detect
> the optimizing condition of "irq.task != current" when injecting interrupts.
> This means that userspace will be inadvertently sending itself a signal every
> time it injects interrupts, which IMHO is undesirable.
>>
>>
>
> I meant keeping - >task and dropping - >guest_mode. Or did I
> misunderstand something?
Its possible that I am actually misunderstanding you instead, but from my perspective those two variables are tracking orthogonal state. irq.task is keeping track of the thread that is running the CPU. This will tend to get set once (on the first entry to kvm_run() and stay unchanged for the duration of the VM. irq.guest_mode, on the other hand, will track whether the vcpu is in (or near) guest mode (to switch between direct_ipi and eventfd wakeup methods).
I like having both states tracked, because it allows me to optimize the vcpu interrupt if the context of the injection is the same as the execution. E.g. if the single QEMU thread calls KVM_RUN and then KVM_INTERRUPT, I can skip sending an eventfd because I know the irq.task == current and its pointless.
(Note that in the original designs, irq.task was also used to designate a target for send_sig. Perhaps it is no longer logical to have this scoped to the vcpu.irq structure anymore? E.g. should I make it vcpu.task?)
>
>>>>
>>>> + vcpu- >irq.task = current;
>>>> + smp_wmb();
>>>> +
>>>>
>>>>
>>> This is best moved where - >guest_mode is set.
>>>
>>
>> I can do this, but its common to all platforms so I figured it was best to
> be out here?
>>
>>
>
> Well, it scatters the logic. If we can merge guest_mode and task it's
> moot anyway.
Sounds reasonable. If you convince me to condense this it goes away outright, otherwise I will move it together. ;)
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
next prev parent reply other threads:[~2007-05-14 18:19 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-09 3:03 [PATCH 0/8] in-kernel APIC support "v1" Gregory Haskins
[not found] ` <20070509023731.23443.86578.stgit-sLgBBP33vUGnsjUZhwzVf9HuzzzSOjJt@public.gmane.org>
2007-05-09 3:03 ` [PATCH 1/8] KVM: Adds support for in-kernel mmio handlers Gregory Haskins
[not found] ` <20070509030315.23443.93779.stgit-sLgBBP33vUGnsjUZhwzVf9HuzzzSOjJt@public.gmane.org>
2007-05-09 9:51 ` [PATCH 1/8] KVM: Adds support for in-kernel mmiohandlers Dor Laor
2007-05-09 3:03 ` [PATCH 2/8] KVM: Add irqdevice object Gregory Haskins
[not found] ` <20070509030320.23443.51197.stgit-sLgBBP33vUGnsjUZhwzVf9HuzzzSOjJt@public.gmane.org>
2007-05-09 15:16 ` Dor Laor
[not found] ` <64F9B87B6B770947A9F8391472E032160BBA6157-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-09 18:04 ` Gregory Haskins
[not found] ` <4641D4D8.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-05-09 22:12 ` Dor Laor
[not found] ` <64F9B87B6B770947A9F8391472E032160BBA6471-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-09 22:47 ` Gregory Haskins
[not found] ` <4642170B.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-05-13 12:05 ` Avi Kivity
2007-05-09 3:03 ` [PATCH 3/8] KVM: Adds ability to preempt an executing VCPU Gregory Haskins
[not found] ` <20070509030325.23443.90129.stgit-sLgBBP33vUGnsjUZhwzVf9HuzzzSOjJt@public.gmane.org>
2007-05-14 9:34 ` Avi Kivity
[not found] ` <46482D2E.7040809-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 15:19 ` Gregory Haskins
[not found] ` <464845AD.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-05-14 15:45 ` Avi Kivity
[not found] ` <46488426.8090705-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 18:19 ` Gregory Haskins [this message]
[not found] ` <46486FD4.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-05-15 7:28 ` Avi Kivity
[not found] ` <46496125.5020909-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-15 11:56 ` Gregory Haskins
[not found] ` <4649679C.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-05-16 10:05 ` Avi Kivity
[not found] ` <464AD772.4050007-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-16 12:10 ` Gregory Haskins
[not found] ` <464ABC67.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-05-16 12:18 ` Avi Kivity
2007-05-09 3:03 ` [PATCH 4/8] KVM: Adds ability to signal userspace using a file-descriptor Gregory Haskins
2007-05-09 3:03 ` [PATCH 5/8] KVM: Add support for in-kernel LAPIC model Gregory Haskins
2007-05-09 3:03 ` [PATCH 6/8] KVM: Adds support for real NMI injection on VMX processors Gregory Haskins
[not found] ` <20070509030340.23443.84153.stgit-sLgBBP33vUGnsjUZhwzVf9HuzzzSOjJt@public.gmane.org>
2007-05-14 9:38 ` Avi Kivity
2007-05-09 3:03 ` [PATCH 7/8] KVM: Adds basic plumbing to support TPR shadow features Gregory Haskins
2007-05-09 3:03 ` [PATCH 8/8] KVM: Adds support for TPR shadowing under VMX processors Gregory Haskins
[not found] ` <20070509030350.23443.35387.stgit-sLgBBP33vUGnsjUZhwzVf9HuzzzSOjJt@public.gmane.org>
2007-05-14 11:09 ` Avi Kivity
[not found] ` <46484376.6090304-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 15:28 ` Gregory Haskins
2007-05-13 12:02 ` [PATCH 0/8] in-kernel APIC support "v1" Avi Kivity
[not found] ` <4646FE71.5080009-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-13 14:09 ` Gregory Haskins
[not found] ` <4646E3D1.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-05-13 15:45 ` Avi Kivity
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=46486FD4.BA47.005A.0@novell.com \
--to=ghaskins-et1tbqhtxzrqt0dzr+alfa@public.gmane.org \
--cc=avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
--cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
/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