From: Avi Kivity <avi@qumranet.com>
To: linux-kernel <linux-kernel@vger.kernel.org>,
kvm-devel@lists.sourceforge.net
Subject: [PATCH 0/13] KVM: Kernel-based Virtual Machine (v3)
Date: Thu, 26 Oct 2006 19:19:39 +0200 [thread overview]
Message-ID: <4540EE2B.9020606@qumranet.com> (raw)
Changes:
- mailing list: kvm-devel@lists.sourceforge.net
(http://lists.sourceforge.net/lists/listinfo/kvm-devel)
- applied code review comments
- fixed set_sregs() ioctl corrupting guest state if cr0.pe changed
(a polite way of saying that loading a saved vm was broken)
---
The following patchset adds a driver for Intel's hardware
virtualization extensions to the x86 architecture. The driver adds
a character device (/dev/kvm) that exposes the virtualization
capabilities to userspace. Using this driver, a process can run a
virtual machine (a "guest") in a fully virtualized PC containing its
own virtual hard disks, network adapters, and display.
Using this driver, one can start multiple virtual machines on a host.
Each virtual machine is a process on the host; a virtual cpu is a thread
in that process. kill(1), nice(1), top(1) work as expected.
In effect, the driver adds a third execution mode to the existing two:
we now have kernel mode, user mode, and guest mode. Guest mode has its
own address space mapping guest physical memory (which is accessible to
user mode by mmap()ing /dev/kvm). Guest mode has no access to any I/O
devices; any such access is intercepted and directed to user mode for
emulation.
The driver supports i386 and x86_64 hosts and guests. All combinations
are allowed except x86_64 guest on i386 host. For i386 guests and
hosts, both pae and non-pae paging modes are supported.
SMP hosts and UP guests are supported. At the moment only Intel
hardware is supported, but AMD virtualization support is being worked on.
Performance currently is non-stellar due to the naive implementation
of the mmu virtualization, which throws away most of the shadow page
table entries every context switch. We plan to address this in two ways:
- cache shadow page tables across tlv flushes
- wait until AMD and Intel release processors with nested page tables
Currently a virtual desktop is responsive but consumes a lot of CPU.
Under Windows I tried playing pinball and watching a few flash movies;
with a recent CPU one can hardly feel the virtualization. Linux/X is
slower, probably due to X being in a separate process.
In addition to the driver, you need a slightly modified qemu to provide
I/O device emulation and the BIOS.
Caveats:
- The Windows install currently bluescreens due to a problem with the
virtual APIC. We are working on a fix. A temporary workaround is to
use an existing image or install through qemu
- Windows 64-bit does not work. That's also true for qemu, so it's
probably a problem with the device model.
--
error compiling committee.c: too many arguments to function
next reply other threads:[~2006-10-26 17:19 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-26 17:19 Avi Kivity [this message]
2006-10-26 17:22 ` [PATCH 1/13] KVM: userspace interface Avi Kivity
[not found] ` <200610270051.43477.arnd@arndb.de>
2006-10-27 5:51 ` Avi Kivity
2006-10-26 17:23 ` [PATCH 2/13] KVM: Intel virtual mode extensions definitions Avi Kivity
2006-10-26 17:24 ` [PATCH 3/13] KVM: kvm data structures Avi Kivity
2006-10-26 22:55 ` Arnd Bergmann
2006-10-27 5:53 ` Avi Kivity
2006-10-27 7:39 ` Arnd Bergmann
2006-10-26 17:25 ` [PATCH 4/13] KVM: random accessors and constants Avi Kivity
2006-10-26 17:26 ` [PATCH 5/13] KVM: virtualization infrastructure Avi Kivity
2006-10-26 17:27 ` [PATCH 6/13] KVM: memory slot management Avi Kivity
2006-10-26 22:44 ` Arnd Bergmann
2006-10-27 5:47 ` Avi Kivity
2006-10-27 7:37 ` Arnd Bergmann
2006-10-27 13:26 ` Avi Kivity
2006-10-27 14:05 ` Arnd Bergmann
2006-10-29 9:10 ` Avi Kivity
2006-10-27 15:43 ` [kvm-devel] " Anthony Liguori
2006-10-29 9:15 ` Avi Kivity
2006-10-26 17:28 ` [PATCH 7/13] KVM: vcpu creation and maintenance Avi Kivity
2006-10-26 17:29 ` [PATCH 8/13] KVM: vcpu execution loop Avi Kivity
2006-10-26 17:30 ` [PATCH 9/13] KVM: define exit handlers Avi Kivity
2006-10-26 17:31 ` [PATCH 10/13] KVM: less common " Avi Kivity
2006-10-26 17:32 ` [PATCH 11/13] KVM: mmu Avi Kivity
2006-10-26 17:33 ` [PATCH 12/13] KVM: x86 emulator Avi Kivity
2006-10-26 17:34 ` [PATCH 13/13] KVM: plumbing 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=4540EE2B.9020606@qumranet.com \
--to=avi@qumranet.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