From: Anthony Liguori <aliguori@us.ibm.com>
To: Avi Kivity <avi@qumranet.com>
Cc: linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/7] KVM: userspace interface
Date: Thu, 19 Oct 2006 14:31:36 -0500 [thread overview]
Message-ID: <4537D298.6010105@us.ibm.com> (raw)
In-Reply-To: <4537D174.8090204@qumranet.com>
Avi Kivity wrote:
> Anthony Liguori wrote:
>>>
>>> We started using VT only for 64 bit, then added 32 bit, then 16-bit
>>> protected, then vm86 and real mode. We'd transfer the x86 state on
>>> each mode change, but it was (a) fragile (b) considered unclean.
>>>
>>> You're right that "big real" mode is not supported, but so far that
>>> hasn't been a problem. Do you know of an OS that needs big real mode?
>>
>> AFAIK the SLES boot splash patches to grub use it. It's definitely a
>> requirement. Currently, there is an effort in Xen to use QEMU for
>> partial emulation. Hopefully, it will be there for the next release.
>>
>
> Ouch. Boot splash patches.
>
> Well, we had real mode in qemu once, we can put it there again.
>
>> Allowing QEMU to do emulation also will help with IO performance.
>> Instead of having to take many trips to userspace for MMIO
>> especially, you can allow QEMU to execute a certain number of basic
>> blocks and then return. Minimizing trips between userspace and the
>> kernel is going to be critical performance wise.
>>
>
> My plan was to allow userspace to register certain mmio addresses for
> cacheing, so that if the guest code had a code sequence like
>
> writel(dst_x_reg, x);
> writel(dst_y_reg, y)
> writel(width_reg, w);
> writel(height_reg, h);
> writel(blt_cmd_reg, fill);
>
> then kvm would cache the first four in a mmap()able memory area and
> only exit to userspace on the fifth. Userspace would then read the
> cached registers from memory and emulate the command.
Letting QEMU do a certain amount of emulation after every transition
would the problem in a more elegant and generic way.
> This saves userspace transitions but not guest/host switches. I'm
> counting on Intel and AMD to reduce the cost of these, but it will
> probably never be cheap.
>
> Paravirtualized drivers are also an option; we may try to keep
> compatibility with Xen's.
Please no! With proper device emulation, paravirtualized drivers
shouldn't be necessary.
>
>>
>> I've been tossing around the idea of doing partial IO emulation in
>> the kernel. If you could sync the device states between userspace
>> and kernel, it should be possible. Given that the you're already in
>> the kernel at VMEXIT time, if you could feed something right to the
>> block driver or network driver, you ought to be able to get pretty
>> darn good performance.
>>
>
> Do you mean putting the device model into the kernel?
Perhaps part of it. Still an idea at this point.
Regards,
Anthony Liguori
next prev parent reply other threads:[~2006-10-19 19:31 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-19 13:45 [PATCH 0/7] KVM: Kernel-based Virtual Machine Avi Kivity
2006-10-19 13:47 ` [PATCH 1/7] KVM: userspace interface Avi Kivity
2006-10-19 14:30 ` John Stoffel
2006-10-19 14:43 ` Avi Kivity
2006-10-19 23:26 ` Greg KH
2006-10-19 14:50 ` Alan Cox
2006-10-19 14:51 ` Avi Kivity
2006-10-19 15:25 ` John Stoffel
2006-10-19 18:49 ` Anthony Liguori
2006-10-19 19:10 ` Avi Kivity
2006-10-19 19:17 ` Anthony Liguori
2006-10-20 7:36 ` Avi Kivity
2006-10-20 15:33 ` Anthony Liguori
2006-10-22 8:10 ` Avi Kivity
2006-10-19 20:36 ` Alan Cox
2006-10-19 18:46 ` Anthony Liguori
2006-10-19 19:04 ` Avi Kivity
2006-10-19 19:09 ` Anthony Liguori
2006-10-19 19:26 ` Avi Kivity
2006-10-19 19:31 ` Anthony Liguori [this message]
2006-10-19 22:15 ` Alan Cox
2006-10-20 7:42 ` Avi Kivity
2006-10-20 15:35 ` Anthony Liguori
2006-10-19 20:10 ` Andi Kleen
2006-10-19 20:14 ` Jan Engelhardt
2006-10-20 7:16 ` Avi Kivity
2006-10-21 15:50 ` Arnd Bergmann
2006-10-22 8:19 ` Avi Kivity
2006-10-21 13:37 ` Steven Rostedt
2006-10-22 8:14 ` Avi Kivity
2006-10-19 13:48 ` [PATCH 2/7] KVM: Intel virtual mode extensions definitions Avi Kivity
2006-10-19 20:19 ` Jan Engelhardt
2006-10-19 21:54 ` Alan Cox
2006-10-20 7:17 ` Avi Kivity
2006-10-21 13:48 ` Steven Rostedt
2006-10-22 8:17 ` Avi Kivity
2006-10-19 13:49 ` [PATCH 3/7] KVM: kvm data structures Avi Kivity
2006-10-19 13:53 ` [PATCH 5/7] KVM: mmu virtualization Avi Kivity
2006-10-19 20:26 ` Jan Engelhardt
2006-10-20 7:24 ` Avi Kivity
2006-10-19 13:54 ` [PATCH 6/7] KVM: x86 emulator Avi Kivity
2006-10-19 13:56 ` [PATCH 7/7] KVM: plumbing Avi Kivity
2006-10-19 13:58 ` [PATCH 0/7] KVM: Kernel-based Virtual Machine Avi Kivity
2006-10-19 16:05 ` Andi Kleen
2006-10-19 16:09 ` Avi Kivity
2006-10-19 19:02 ` Anthony Liguori
2006-10-19 19:14 ` Avi Kivity
2006-10-19 19:28 ` Anthony Liguori
2006-10-20 7:37 ` Avi Kivity
2006-10-19 17:31 ` Muli Ben-Yehuda
2006-10-19 18:00 ` Avi Kivity
2006-10-19 18:12 ` Randy Dunlap
2006-10-19 18:14 ` Avi Kivity
2006-10-19 18:30 ` Randy.Dunlap
2006-10-21 16:16 ` Arnd Bergmann
2006-10-22 8:37 ` Avi Kivity
2006-10-22 15:23 ` Arnd Bergmann
2006-10-22 16:18 ` Avi Kivity
2006-10-22 16:51 ` Arnd Bergmann
2006-10-22 17:01 ` Avi Kivity
2006-10-22 17:06 ` Arnd Bergmann
2006-10-22 17:41 ` Avi Kivity
2006-10-22 17:47 ` Arnd Bergmann
2006-10-22 17:56 ` Christoph Hellwig
2006-10-22 18:00 ` Avi Kivity
2006-10-22 18:36 ` Arnd Bergmann
2006-10-22 18:41 ` Avi Kivity
2006-10-22 18:49 ` Arnd Bergmann
2006-10-22 18:55 ` Avi Kivity
2006-10-22 22:26 ` Andi Kleen
2006-10-23 22:29 ` Jeremy Fitzhardinge
2006-10-22 20:01 ` Alan Cox
2006-10-22 20:45 ` Roland Dreier
2006-10-23 0:29 ` Anthony Liguori
2006-10-25 16:42 ` Pavel Machek
2006-10-22 19:59 ` Alan Cox
2006-10-22 22:28 ` Andi Kleen
2006-10-23 0:27 ` Roland Dreier
2006-10-23 0:39 ` Andi Kleen
2006-10-23 0:51 ` Roland Dreier
2006-10-22 17:39 ` Anthony Liguori
2006-10-22 17:53 ` Arnd Bergmann
2006-10-22 19:56 ` Alan Cox
2006-10-23 7:42 ` Avi Kivity
2006-10-24 21:38 ` kvm_create() (was Re: [PATCH 0/7] KVM: Kernel-based Virtual Machine) Andy Isaacson
2006-10-19 18:55 ` [PATCH 0/7] KVM: Kernel-based Virtual Machine Anthony Liguori
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=4537D298.6010105@us.ibm.com \
--to=aliguori@us.ibm.com \
--cc=avi@qumranet.com \
--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;
as well as URLs for NNTP newsgroup(s).