All of lore.kernel.org
 help / color / mirror / Atom feed
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: Tue, 15 May 2007 07:56:51 -0400	[thread overview]
Message-ID: <4649679C.BA47.005A.0@novell.com> (raw)
In-Reply-To: <46496125.5020909-atKUWr5tajBWk0Htik3J/w@public.gmane.org>

>>> On Tue, May 15, 2007 at  3:28 AM, in message <46496125.5020909-atKUWr5tajBWk0Htik3J/w@public.gmane.org>,
Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote: 
> Gregory Haskins wrote:
>
>>
>> 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.  
> 
>>   
> 
> You can't rely on irq.task if !guest_mode.  Under the current design,
> the task may have exited and you'd be dereferencing unallocated memory. 
> While it won't oops or cause anything bad to happen (and current qemu
> can't trigger this), it isn't nice.

Hmm...that is a good point.

> 
> Later we'll have vcpu and thread_info point to each other and then you
> can do that kind of optimization.

I am not familiar with thread_info, but if it solves the dangling pointer problem, that sounds great.  It sounds like you are in favor of leaving this optimization for a later time.  As long as you are ok with every interrupt related ioctl such as KVM_APIC_MSG, and KVM_ISA_INTERRUPT posting a signal to itself, we can pull this for now.  Conversely, if the thread_info approach isn't hard, I would prefer to get this right now, as the double interrupt thing seems nasty to me.

Alternatively, perhaps I can just replace irq.task with irq.pid?  And I could also replace irq.guest_mode with irq.guest_cpu.  I will then record the pid where today I record the task.  Likewise, I can extract the guest_cpu (using task_cpu(current)) where today I assign irq.guest_mode = 1.  That would effectively remove the dangling pointer problem while retaining the features that I like.  

Thoughts?

> 
> Oh, and nobody said that the task waiting on the event is the same as
> the task running the vcpu.

I'm a little confused by this statement.  I don't use irq.task for assigning a target for the event.  That is all self contained in the eventfd.  Its true that some of the older designs used this as the send_sig() target, but the assumption there was we were posting a signal to the entire PID, not a specific TID.  That could have been a bad assumption, but its moot now.  Let me know if you meant something else.

> 
>> (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?)
>>   
> 
> I think so.
> 
> 

Ok.  Assuming you accept my pid/guest_cpu idea above, I will make it "pid_t vcpu.owner", and "int vcpu.irq.guest_cpu" (where it will be -1 if not in guest_mode)




-------------------------------------------------------------------------
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/

  parent reply	other threads:[~2007-05-15 11:56 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
     [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 [this message]
     [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=4649679C.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 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.