From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: Anthony Liguori <aliguori-NZpS4cJIG2HvQtjrzfazuQ@public.gmane.org>
Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: [PATCH 7/7] Allow KVM from a normal QEMU binary
Date: Sun, 05 Nov 2006 20:29:56 +0200 [thread overview]
Message-ID: <454E2DA4.8070405@qumranet.com> (raw)
In-Reply-To: <454E2ADC.1060607-NZpS4cJIG2HvQtjrzfazuQ@public.gmane.org>
Anthony Liguori wrote:
> Avi Kivity wrote:
>> Anthony Liguori wrote:
>>> One of the things I was thinking of doing was getting rid of USE_KVM
>>> completely. What I was thinking of doing is moving kvmctl.[ch] into
>>> the QEMU tree
>>
>> I'd like to keep kvmctl out, so that non-qemu based userspace can be
>> built. True, I wouldn't like to be the one to do it, but I'd like to
>> keep the possibility open.
>
> Yeah, I'm on the fence myself. In the very least, we need a smarter
> configure check in QEMU to detect the presence of libkvm and enable
> the define appropriately.
>
> I'll go as far as to say that once there's proper configure checks
> (and kvm fails gracefully), it would be appropriate to send it to
> qemu-devel. What are your thoughts?
Qemu-devel has been strangely nonresponsive to my patches (the x86-64
gdb patch was sent at least two months ago). Maybe as a known
contributor they'll be more responsive to you.
The only other issue is how stable the interface is. I think that the
kvmctl interface is almost there (I'd like to add a libkvm_open() and
libkvm_close(), have kvm_create() use the context returned from
libkvm_open(), and not create a vcpu and memory in kvm_create(), but
these are fairly cosmetic).
The kernel interface is another matter. I want to apply Arnd's
suggestions, but that's some time off. If we don't push libkvm/kvmctl
to qemu then that's not an issue.
>>
>> State transfer is what turned us of qemu. Reconstructing the state
>> (esp. eflags and the segments) is quite difficult and there are some
>> annoying qemu bugs (like the busy task flag checks).
>
> The Xen tree already has the conversion code. It's annoying but it's
> not nearly as bad as say, shadow paging :-)
Well, a nice property of real mode is that it doesn't use shadow paging :)
>
> While not necessarily in your scope, in the long term, having the
> state transfer would be really useful.
>
> I can imagine KVM eventually supporting VT, SVM, user mode
> virtualization, and paravirtualization. State transfer use is useful
> for VT at least but is absolutely required for user mode virtualization.
What is user mode virtualization in this context?
> All of these things exist in some form right now (user mode via qvm86
> and para via lhype) and all are duplicating a lot of tough code (such
> as shadow paging).
Please elaborate.
>
> Of course, state transfer won't be impossible to add down the road at
> some point so if you think big real mode will be easier with
> emulation, it wouldn't be that bad to give it a shot.
>
We already had real mode (and 16-bit protected, and 32-bit protected)
during development. It should be very easy to add it back. I'm worried
about maintenance and things like smp.
>> BTW, dumping qemu cpu emulation will allow us to use gcc 4.x instead
>> of gcc 3.x.
>>
>>>
>>> SMP guest support is still a hard problem that needs thinking
>>> through but if Xen solves it, KVM can use the solution (or vice versa).
>>
>> I don't see a huge problem. We'll have to get the APIC right, and
>> the mmu locking right in the kernel, but what else?
>
> It's not so bad provided you don't use QEMU for emulation. That's
> what I was referring to. There are some tricky cases where QEMU is
> accessing a piece of memory with an atomic instruction while another
> VCPU is running on bare metal and trying to touch the same memory. I
> suspect that as-is, QEMU would violate the atomic guarantees when it
> translates the instruction.
Ok. We're on the same cacheline then. An emulator definitely solves this.
(though I can't see real-mode locked instructions happening... maybe
that's an issue with qemu emulating multiple instructions for Xen during
mmio)
--
error compiling committee.c: too many arguments to function
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
next prev parent reply other threads:[~2006-11-05 18:29 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-03 6:21 [PATCH 0/7] Split up QEMU patches Anthony Liguori
[not found] ` <454AE007.5070905-NZpS4cJIG2HvQtjrzfazuQ@public.gmane.org>
2006-11-03 6:25 ` [PATCH 1/7] Compile fix for usb-linux.c Anthony Liguori
2006-11-03 6:26 ` [PATCH 2/7] APIC save/restore fix Anthony Liguori
2006-11-03 6:27 ` [PATCH 3/7] Timer " Anthony Liguori
2006-11-03 6:29 ` [PATCH 4/7] gdbstub for x86-64 Anthony Liguori
2006-11-03 6:30 ` [PATCH 5/7] VMDK Snapshot Support Anthony Liguori
2006-11-03 6:31 ` [PATCH 6/7] KVM changes for QEMU Anthony Liguori
2006-11-03 6:35 ` [PATCH 7/7] Allow KVM from a normal QEMU binary Anthony Liguori
[not found] ` <454AE323.8090309-NZpS4cJIG2HvQtjrzfazuQ@public.gmane.org>
2006-11-05 9:27 ` Avi Kivity
[not found] ` <454DAE74.4030306-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-11-05 17:28 ` Anthony Liguori
[not found] ` <454E1F40.2070200-NZpS4cJIG2HvQtjrzfazuQ@public.gmane.org>
2006-11-05 17:48 ` Avi Kivity
[not found] ` <454E23EE.7040505-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-11-05 18:18 ` Anthony Liguori
[not found] ` <454E2ADC.1060607-NZpS4cJIG2HvQtjrzfazuQ@public.gmane.org>
2006-11-05 18:29 ` Avi Kivity [this message]
[not found] ` <454E2DA4.8070405-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-11-05 19:53 ` 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=454E2DA4.8070405@qumranet.com \
--to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
--cc=aliguori-NZpS4cJIG2HvQtjrzfazuQ@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