public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@qumranet.com>
To: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Avi Kivity <avi@argo.co.il>,
	Anthony Liguori <aliguori@us.ibm.com>,
	kvm-devel@lists.sourceforge.net, Andrew Morton <akpm@osdl.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [kvm-devel] [PATCH 0/15] KVM userspace interface updates
Date: Mon, 19 Mar 2007 18:02:57 +0200	[thread overview]
Message-ID: <45FEB431.8030504@qumranet.com> (raw)
In-Reply-To: <20070319154311.GB8331@osiris.boeblingen.de.ibm.com>

Heiko Carstens wrote:
>> Right.  I agree it's more natural to associate a vcpu with a task
>> instead of a vcpu being an independent entry.  We'd still need a
>> handle for it, and in Linux that's an fd (pid doesn't cut it as it's
>> racy, and probably slower too as it has to go through a global structure).
>>     
>
> If you go for: only one VM per thread group and only one vcpu per thread
> you don't need any identifier.
>   

That's the idea, but if I want to send an inter-processor-interrupt to 
another cpu, I need to be able to identify it.  The pid [tid] is 
natural, but racy if the thread can die.

> All relevant information or a pointer to it would be saved in the
> thread_info structure.
> That would give you two system calls to add/remove cpus which implicitely
> create a VM if none is present. This add_vcpu syscall would also map
> a memory range to user space which would be used to communicate between
> user/kernel space to avoid frequent copy_to/from_user just like your
> latest patches for KVM_RUN do.
>
> We implemented a prototype on s390 based on a system call interface
> and which does have full smp support.

[...]

> The interesting part with this is that you don't need any locking
> for a kvm_run system call, simply because only the thread itself can
> create/remove the vcpu:
>   

Yes!  The vcpu is an implied parameter (current->vcpu).

> Of course all this is rather simplified, but should give a good idea
> why I think that a syscall based interface should be the way to go.
>   

I agree with all of the above, and in addition, integration to the 
scheduler will allow us to reduce vcpu migration rate, and maybe do 
things like gang scheduling.

But that doesn't mean it can be done now: we really need to see how it 
works out with smp and with an additional arch, and then we can 
stabilize it.  Meanwhile I'd like a stable ABI so distros can start 
shipping kvm without worrying about upgrade headaches.

So the plan is:
- get the /dev/kvm ABI into 2.6.22
- implement smp
- add another arch
- move to a syscall based interface in parallel; userspace should work 
with both
- deprecate the old ABI and external modules.

-- 
error compiling committee.c: too many arguments to function


  reply	other threads:[~2007-03-19 16:03 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-11 13:53 [PATCH 0/15] KVM userspace interface updates Avi Kivity
2007-03-11 13:53 ` [PATCH 01/15] KVM: Use a shared page for kernel/user communication when runing a vcpu Avi Kivity
2007-03-15  2:38   ` [kvm-devel] " Hollis Blanchard
2007-03-15  3:09     ` Hollis Blanchard
2007-03-11 13:53 ` [PATCH 02/15] KVM: Do not communicate to userspace through cpu registers during PIO Avi Kivity
2007-03-11 13:53 ` [PATCH 03/15] KVM: Initialize PIO I/O count Avi Kivity
2007-03-11 13:53 ` [PATCH 04/15] KVM: Handle cpuid in the kernel instead of punting to userspace Avi Kivity
2007-03-11 13:53 ` [PATCH 05/15] KVM: Remove the 'emulated' field from the userspace interface Avi Kivity
2007-03-11 13:53 ` [PATCH 06/15] KVM: Remove minor wart from KVM_CREATE_VCPU ioctl Avi Kivity
2007-03-11 13:53 ` [PATCH 07/15] KVM: Renumber ioctls Avi Kivity
2007-03-11 13:53 ` [PATCH 08/15] KVM: Add method to check for backwards-compatible API extensions Avi Kivity
2007-03-16 15:06   ` [kvm-devel] " Heiko Carstens
2007-03-18  8:20     ` Avi Kivity
2007-03-11 13:53 ` [PATCH 09/15] KVM: Allow userspace to process hypercalls which have no kernel handler Avi Kivity
2007-03-11 13:53 ` [PATCH 10/15] KVM: Fold kvm_run::exit_type into kvm_run::exit_reason Avi Kivity
2007-03-11 13:53 ` [PATCH 11/15] KVM: Add a special exit reason when exiting due to an interrupt Avi Kivity
2007-03-11 13:53 ` [PATCH 12/15] KVM: Initialize the apic_base msr on svm too Avi Kivity
2007-03-11 13:53 ` [PATCH 13/15] KVM: Add guest mode signal mask Avi Kivity
2007-03-11 13:53 ` [PATCH 14/15] KVM: Allow kernel to select size of mmap() buffer Avi Kivity
2007-03-11 13:53 ` [PATCH 15/15] KVM: Future-proof argument-less ioctls Avi Kivity
2007-03-16  8:36 ` [kvm-devel] [PATCH 0/15] KVM userspace interface updates Heiko Carstens
2007-03-16 14:03   ` Anthony Liguori
2007-03-16 15:01     ` Heiko Carstens
2007-03-18 10:42       ` Avi Kivity
2007-03-19 15:43         ` Heiko Carstens
2007-03-19 16:02           ` Avi Kivity [this message]
2007-03-19 16:37             ` Heiko Carstens
2007-03-19 17:49             ` Avi Kivity
2007-03-18  5:20   ` Avi Kivity
2007-03-18 10:22     ` Heiko Carstens
2007-03-18 10:32       ` 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=45FEB431.8030504@qumranet.com \
    --to=avi@qumranet.com \
    --cc=akpm@osdl.org \
    --cc=aliguori@us.ibm.com \
    --cc=avi@argo.co.il \
    --cc=heiko.carstens@de.ibm.com \
    --cc=kvm-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.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