android_kernel_xiaomi_sm8350/include
Avi Kivity 6aa8b732ca [PATCH] kvm: userspace interface
web site: http://kvm.sourceforge.net

mailing list: kvm-devel@lists.sourceforge.net
  (http://lists.sourceforge.net/lists/listinfo/kvm-devel)

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 tlb 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 (akpm: might no longer be true):

- 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.

[bero@arklinux.org: build fix]
[simon.kagstrom@bth.se: build fix, other fixes]
[uril@qumranet.com: KVM: Expose interrupt bitmap]
[akpm@osdl.org: i386 build fix]
[mingo@elte.hu: i386 fixes]
[rdreier@cisco.com: add log levels to all printks]
[randy.dunlap@oracle.com: Fix sparse NULL and C99 struct init warnings]
[anthony@codemonkey.ws: KVM: AMD SVM: 32-bit host support]
Signed-off-by: Yaniv Kamay <yaniv@qumranet.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Cc: Simon Kagstrom <simon.kagstrom@bth.se>
Cc: Bernhard Rosenkraenzer <bero@arklinux.org>
Signed-off-by: Uri Lublin <uril@qumranet.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Anthony Liguori <anthony@codemonkey.ws>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-10 09:57:22 -08:00
..
acpi
asm-alpha [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
asm-arm [PATCH] spi: stabilize PIO mode transfers on PXA2xx systems 2006-12-10 09:55:40 -08:00
asm-arm26 [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
asm-avr32 [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
asm-cris [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
asm-frv [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
asm-generic [PATCH] tty: switch to ktermios 2006-12-08 08:28:57 -08:00
asm-h8300 [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
asm-i386 [PATCH] sched: add option to serialize load balancing 2006-12-10 09:55:43 -08:00
asm-ia64 [PATCH] sched: add option to serialize load balancing 2006-12-10 09:55:43 -08:00
asm-m32r [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
asm-m68k [PATCH] Sun3: General updates 2006-12-09 09:41:18 -08:00
asm-m68knommu [PATCH] cleanup asm/setup.h userspace visibility 2006-12-07 08:39:46 -08:00
asm-mips [PATCH] add STB810 support (Philips PNX8550-based) 2006-12-09 01:04:00 +00:00
asm-parisc [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
asm-powerpc [PATCH] sched: add option to serialize load balancing 2006-12-10 09:55:43 -08:00
asm-ppc
asm-s390 Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 2006-12-08 11:21:55 -08:00
asm-sh [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
asm-sh64 [PATCH] cleanup asm/setup.h userspace visibility 2006-12-07 08:39:46 -08:00
asm-sparc [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
asm-sparc64 [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
asm-um [PATCH] UML: add generic BUG support 2006-12-08 08:28:39 -08:00
asm-v850 [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
asm-x86_64 [PATCH] sched: add option to serialize load balancing 2006-12-10 09:55:43 -08:00
asm-xtensa [PATCH] xtensa: fix system call interface 2006-12-10 09:55:39 -08:00
crypto
keys
linux [PATCH] kvm: userspace interface 2006-12-10 09:57:22 -08:00
math-emu
media
mtd
net [PATCH] sysctl: remove unused "context" param 2006-12-10 09:55:41 -08:00
pcmcia
rdma
rxrpc
scsi
sound
video [PATCH] video: pm3fb macros fix 2006-12-08 08:29:08 -08:00
Kbuild