public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: Anthony Liguori <aliguori-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Cc: kvm-devel <kvm-devel-TtF/mJH4Jtrk1uMJSBkQmQ@public.gmane.org>
Subject: Re: Userspace hypercalls?
Date: Mon, 27 Aug 2007 19:16:58 +0300	[thread overview]
Message-ID: <46D2F8FA.6050104@qumranet.com> (raw)
In-Reply-To: <1188228447.12698.8.camel@squirrel>

Anthony Liguori wrote:
> I've never really thought much about them until now.  What's the case
> for supporting userspace hypercalls?
>
> The current way the code works is a little scary.  Hypercalls that
> aren't handled by kernelspace are deferred to userspace.  Of course,
> kernelspace has no idea whether userspace is actually using a given
> hypercall so if kernelspace needs another one, the two may clash.
>
> AFAICT, the primary reason to use hypercalls is performance.  A vmcall
> is a few hundred cycles faster than a PIO exit.  In the light-weight
> exit path, this may make a significant different.  However, when going
> to userspace, it's not only a heavy-weight exit but it's also paying the
> cost of a ring transition.  The few hundred cycle savings is small in
> comparison to the total cost so I don't think performance is a real
> benefit here.
>   

Actually the heavyweight exit is much more expensive than the ring 
transition.

> The hypercall namespace is much smaller than the PIO namespace, and
> there's no "plug-and-play" like mechanism to resolve conflict.  PIO/MMIO
> has this via PCI and it seems like any userspace device ought to be
> either a PCI device or use a static PIO port.  Plus, paravirtual devices
> that use PCI/PIO/MMIO are much more likely to be reusable by other VMMs
> (Xen, QEMU, even VMware).
>
> In the future, if we decide a certain hypercall could be done better in
> userspace, and we have guests using those hypercalls, it makes sense to
> plumb the hypercalls down.
>
> My question is, should we support userspace hypercalls until that point?
>   

I've already mentioned this but I'll repeat it for google:  allowing 
hypercalls to fallback to userspace gives you flexibility to have either 
a kernel implementation or a userspace implementation for the same 
functionality.  This means a pvnet driver can be used either directly 
with a virtual interface on the host, or having some userspace 
processing in qemu.  Similarly, pvblock can be processed in the kernel 
for real block devices, or in userspace for qcow format files, without 
the need to teach the kernel about the qcow format somehow.

Dor's initial pv devices are implemented in qemu with a view to having a 
faster implementation in the kernel, so userspace hypercalls are on the 
table now.

-- 
Any sufficiently difficult bug is indistinguishable from a feature.


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/

  reply	other threads:[~2007-08-27 16:16 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-27 15:27 Userspace hypercalls? Anthony Liguori
2007-08-27 16:16 ` Avi Kivity [this message]
     [not found]   ` <46D2F8FA.6050104-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-27 16:19     ` Avi Kivity
2007-08-27 16:33     ` Avi Kivity
     [not found]       ` <46D2FCE1.7020605-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-27 16:47         ` Avi Kivity
     [not found]           ` <46D3001A.9070706-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-27 17:32             ` Anthony Liguori
2007-08-27 17:36               ` Avi Kivity
     [not found]                 ` <46D30BAE.4080705-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-27 17:47                   ` Anthony Liguori
     [not found]                     ` <46D30F15.6050601@qumranet.com>
     [not found]                       ` <46D30F15.6050601-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-27 19:58                         ` Luca
     [not found]                           ` <68676e00708271258o278de93ek8a051619dd03fb6a-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-27 20:01                             ` Avi Kivity
     [not found]                               ` <46D32DA8.1080900-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-27 21:06                                 ` Anthony Liguori
2007-08-29  6:59         ` Dor Laor
     [not found]           ` <64F9B87B6B770947A9F8391472E032160D6558D8-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-08-29 21:24             ` Avi Kivity
     [not found] <46D326020200005A00029BFF@mcclure.wal.novell.com>
     [not found] ` <46D326080200005A00029C02-Igcdv/6uVdMHoYOw/+koYqIwWpluYiW7@public.gmane.org>
2007-08-27 23:29   ` 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=46D2F8FA.6050104@qumranet.com \
    --to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
    --cc=aliguori-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
    --cc=kvm-devel-TtF/mJH4Jtrk1uMJSBkQmQ@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