Original Xbox Emulator for Windows, macOS, and Linux (Active Development)
Go to file
aliguori 7ba1e61953 Add KVM support to QEMU
This patch adds very basic KVM support.  KVM is a kernel module for Linux that
allows userspace programs to make use of hardware virtualization support.  It
current supports x86 hardware virtualization using Intel VT-x or AMD-V.  It
also supports IA64 VT-i, PPC 440, and S390.

This patch only implements the bare minimum support to get a guest booting.  It
has very little impact the rest of QEMU and attempts to integrate nicely with
the rest of QEMU.

Even though this implementation is basic, it is significantly faster than TCG.
Booting and shutting down a Linux guest:

w/TCG:  1:32.36 elapsed  84% CPU

w/KVM:  0:31.14 elapsed  59% CPU

Right now, KVM is disabled by default and must be explicitly enabled with
 -enable-kvm.  We can enable it by default later when we have had better
testing.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>



git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5627 c046a42c-6fe2-441c-8c8c-71466251a162
2008-11-05 16:04:33 +00:00
audio Set default audio timer period to a sane value (otherwise qemu becomes unusable if -icount N is specified) 2008-11-04 19:15:37 +00:00
bsd-user Preliminary BSD user emulator support 2008-10-26 20:33:16 +00:00
darwin-user Make target_sigaltstack_used static 2008-10-05 11:09:37 +00:00
fpu Fix ARM default NaN. 2008-11-04 12:33:21 +00:00
gdb-xml Add GDB XML register description support. 2008-10-11 17:55:29 +00:00
hw Add KVM support to QEMU 2008-11-05 16:04:33 +00:00
keymaps fixing keymap for Windows keys (Stefano Stabellini) 2008-09-22 19:45:36 +00:00
linux-user Fix return value printing for shmat (Lauro Ramos Venancio). 2008-10-28 10:39:39 +00:00
pc-bios Update OpenBIOS images to SVN r237. 2008-09-18 19:41:28 +00:00
slirp Fix inline use warnings from sparse 2008-10-26 15:26:09 +00:00
target-alpha target-alpha: use the new TCG logical operations 2008-10-21 11:29:11 +00:00
target-arm VFP fnmsc negative zero fix. 2008-11-03 19:09:29 +00:00
target-cris target-cris: access to TCG variables through GET_TCGV() 2008-11-01 00:53:30 +00:00
target-i386 Add KVM support to QEMU 2008-11-05 16:04:33 +00:00
target-m68k Add GDB XML register description support. 2008-10-11 17:55:29 +00:00
target-mips target-mips: use the new rotr/rotri instructions 2008-11-04 19:13:47 +00:00
target-ppc target-ppc: use the new rotr/rotri instructions 2008-11-03 07:08:44 +00:00
target-sh4 Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
target-sparc Fix TCGv size mismatches 2008-11-01 13:44:52 +00:00
tcg Mention output overlaps. 2008-11-04 13:17:17 +00:00
tests Implement SSE4.1, SSE4.2 (x86). 2008-10-04 03:27:44 +00:00
.gitignore Add gitignore file 2008-09-09 17:15:28 +00:00
a.out.h 64bit->win32 cross build fix. 2007-03-04 00:52:16 +00:00
aes.c Fix miscellaneous minor things, by Andre Przywara. 2007-12-17 03:15:52 +00:00
aes.h AES crypto support 2004-08-01 21:54:53 +00:00
aio.c Make sure to initialize fd_sets in aio.c 2008-10-12 21:19:57 +00:00
alpha-dis.c find -type f | xargs sed -i 's/[\t ]$//g' # on most files 2007-09-16 21:08:06 +00:00
alpha.ld alpha support 2003-04-29 20:53:42 +00:00
arm-dis.c Update ARM disassembler. 2007-11-10 17:38:00 +00:00
arm-semi.c Add missing return in arm-semi, by Laurent Desnogues. 2008-07-01 16:40:04 +00:00
arm.ld Link ARM prologue closer to code segment to avoid a build failure 2008-07-10 17:21:31 +00:00
block_int.h Fix warnings that would be caused by ld flag --warn-common 2008-09-17 19:04:14 +00:00
block-bochs.c Split block API from vl.h. 2007-11-11 02:51:17 +00:00
block-cloop.c Split block API from vl.h. 2007-11-11 02:51:17 +00:00
block-cow.c Split block API from vl.h. 2007-11-11 02:51:17 +00:00
block-dmg.c Add qemu_realloc(), by Gerd Hoffmann. 2008-08-06 08:37:17 +00:00
block-nbd.c Remove unnecessary #includes from block-nbd.c 2008-08-19 19:10:38 +00:00
block-parallels.c Split block API from vl.h. 2007-11-11 02:51:17 +00:00
block-qcow2.c fix bdrv_aio_read API breakage in qcow2 (Andrea Arcangeli) 2008-10-31 17:28:00 +00:00
block-qcow.c Remove dead-code (else-block) from block-qcow.c, by Marc Bevand. 2008-06-05 22:00:45 +00:00
block-raw-posix.c Fix previous commit (spotted by Robert Riebisch). 2008-10-14 18:14:47 +00:00
block-raw-win32.c Expand cache= option and use write-through caching by default 2008-10-14 14:42:54 +00:00
block-vmdk.c fix off-by-one generating vmdk backing files (Avi Kivity) 2008-10-28 14:08:49 +00:00
block-vpc.c Fix char* signedness, by Andre Przywara. 2007-12-16 03:16:05 +00:00
block-vvfat.c Fix incorrect use of pstrcpy (malc) 2008-10-26 10:22:11 +00:00
block.c Expand cache= option and use write-through caching by default 2008-10-14 14:42:54 +00:00
block.h Expand cache= option and use write-through caching by default 2008-10-14 14:42:54 +00:00
bswap.h e1000: fix unaligned access 2008-03-28 22:30:48 +00:00
bt-host.c Disable bluetooth proxy compilation on win32. 2008-09-30 23:31:35 +00:00
bt-vhci.c Disable bluetooth proxy compilation on win32. 2008-09-30 23:31:35 +00:00
buffered_file.c Introduce a buffered file wrapper for QEMUFile 2008-10-13 03:10:22 +00:00
buffered_file.h Introduce a buffered file wrapper for QEMUFile 2008-10-13 03:10:22 +00:00
Changelog Update 2008-06-08 01:55:07 +00:00
check_ops.sh Fixes for s/390 host support, by Bastian Blank. 2007-11-18 21:22:10 +00:00
cocoa.m Let the USB tablet reach the far bottom and right pixels 2008-03-10 19:34:27 +00:00
configure Add KVM support to QEMU 2008-11-05 16:04:33 +00:00
console.c Reintroduce TEXT_CONSOLE_FIXED_SIZE and TEXT_CONSOLE for resizable vc's. 2008-09-24 03:32:33 +00:00
console.h Allow the monitor to be suspended during non-blocking op 2008-10-06 13:52:44 +00:00
COPYING COPYING: update from FSF 2008-10-12 17:54:42 +00:00
COPYING.LIB update 2003-05-25 16:41:52 +00:00
cpu-all.h Add dirty tracking for live migration 2008-10-06 14:02:03 +00:00
cpu-defs.h Add KVM support to QEMU 2008-11-05 16:04:33 +00:00
cpu-exec.c Add KVM support to QEMU 2008-11-05 16:04:33 +00:00
cris-dis.c Teach the CRIS disassembler to stay within the provided buffer. 2008-05-06 08:45:10 +00:00
curses_keys.h Control + i and [tab] share keycode in curses, simulate [tab]. 2008-10-28 00:11:06 +00:00
curses.c Reintroduce TEXT_CONSOLE_FIXED_SIZE and TEXT_CONSOLE for resizable vc's. 2008-09-24 03:32:33 +00:00
cutils.c Replace uses of strndup (a GNU extension) with Qemu pstrdup 2008-10-25 11:23:27 +00:00
d3des.c Ansify to please sparse 2008-10-27 19:49:12 +00:00
d3des.h Actually add d3des implementation files. 2007-08-25 02:09:50 +00:00
dis-asm.h Fix OpenBSD linker warnings 2008-08-21 17:58:08 +00:00
disas.c Update old fashioned function prototypes. 2008-10-22 15:55:18 +00:00
disas.h * Use function pointers for symbol lookup (currently for elf32 and elf64, 2008-10-22 15:11:31 +00:00
dyngen-exec.h Preliminary OpenBSD host support (based on OpenBSD patches by Todd T. Fries) 2008-08-15 18:33:42 +00:00
dyngen.c Fix some warnings that would be generated by gcc -Wmissing-prototypes 2008-08-17 20:26:25 +00:00
elf_ops.h Use load address when loading ELF images. 2008-10-22 18:20:20 +00:00
elf.h Fix most warnings that would be caused by gcc flag -Wundef 2008-09-06 17:47:39 +00:00
exec-all.h protect exec-all.h frm multiple inclusion (Glauber Costa) 2008-10-23 13:52:00 +00:00
exec.c Add KVM support to QEMU 2008-11-05 16:04:33 +00:00
feature_to_c.sh Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
gdbstub.c Implement "info chardev" command. (Gerd Hoffmann) 2008-10-31 17:31:29 +00:00
gdbstub.h Add GDB XML register description support. 2008-10-11 17:55:29 +00:00
gen-icount.h Spelling fixes, spotted by Stuart Brady. 2008-06-30 17:22:19 +00:00
host-utils.c Code used by the linux-user targets should not use vl.h. 2007-11-05 13:01:41 +00:00
host-utils.h Define macro QEMU_GNUC_PREREQ and use it 2008-10-12 16:15:04 +00:00
hostregs_helper.h Fix 64-bit host register corruption. 2007-02-04 13:37:44 +00:00
hpet.h Add a local copy of hpet.h. 2007-09-16 20:03:23 +00:00
hppa-dis.c HPPA (PA-RISC) host support 2008-04-12 20:14:54 +00:00
hppa.ld HPPA (PA-RISC) host support 2008-04-12 20:14:54 +00:00
i386-dis.c Make some i386 disassembler tables const 2008-10-02 18:29:22 +00:00
i386.ld Add TLS sections. 2008-05-31 16:21:33 +00:00
ia64.ld ia64 host support (David Mosberger) 2005-04-07 22:20:31 +00:00
keymaps.c Make keysym tables const 2008-10-02 18:26:42 +00:00
kqemu.c Fix error reporting under Win32 (CreateFile does not set errno) 2008-06-08 01:55:09 +00:00
kqemu.h kqemu API change - allow use of kqemu with 32 bit QEMU on a 64 bit host 2008-05-30 20:48:25 +00:00
LICENSE use the TCG code generator 2008-02-01 10:50:11 +00:00
loader.c Use load address when loading ELF images. 2008-10-22 18:20:20 +00:00
m68k-dis.c Fix warnings that would be caused by gcc flag -Wwrite-strings 2008-09-14 06:45:34 +00:00
m68k-semi.c Break up vl.h. 2007-11-17 17:14:51 +00:00
m68k.ld m68k host port (Richard Zidlicky) 2003-08-10 22:14:22 +00:00
MAINTAINERS Update maintainers list. 2008-08-25 22:26:03 +00:00
Makefile Fix IO performance regression in sparc 2008-10-08 19:50:24 +00:00
Makefile.target Add KVM support to QEMU 2008-11-05 16:04:33 +00:00
migration-tcp.c Fix GCC 4 signedness warning 2008-10-25 11:25:48 +00:00
migration.c Fix whitespace in migration code. 2008-10-24 22:10:31 +00:00
migration.h Introduce TCP live migration protocol 2008-10-13 03:14:31 +00:00
mips-dis.c Fix most warnings that would be caused by gcc flag -Wundef 2008-09-06 17:47:39 +00:00
mips.ld Linker scripts for MIPS hosts. 2007-05-05 19:24:38 +00:00
mipsel.ld Linker scripts for MIPS hosts. 2007-05-05 19:24:38 +00:00
monitor.c Add KVM support to QEMU 2008-11-05 16:04:33 +00:00
nbd.c Use common objects for qemu-img and qemu-nbd 2008-09-15 15:51:35 +00:00
nbd.h qemu-nbd: remove useless parameter from nbd_negotiate() (Laurent Vivier) 2008-09-10 15:23:19 +00:00
net-checksum.c Add IP checksumming functions to qemu (Gerd Hoffmann) 2008-07-29 19:40:04 +00:00
net.c Move network redirection code out of vl.c and into net.c 2008-10-31 19:10:00 +00:00
net.h Move network redirection code out of vl.c and into net.c 2008-10-31 19:10:00 +00:00
osdep.c Use common objects for qemu-img and qemu-nbd 2008-09-15 15:51:35 +00:00
osdep.h Define macro QEMU_GNUC_PREREQ and use it 2008-10-12 16:15:04 +00:00
ppc64.ld Correct version of Heikki Lindholms ppc64.ld script 2008-08-20 22:39:24 +00:00
ppc-dis.c find -type f | xargs sed -i 's/[\t ]$//g' # on most files 2007-09-16 21:08:06 +00:00
ppc.ld Update ppc.ld to work with newer binutils. 2007-04-28 19:00:30 +00:00
qemu_socket.h Move some declarations around in the QEMU CharDriver code 2008-10-31 18:44:40 +00:00
qemu-aio.h Refactor AIO to allow multiple AIO implementations 2008-09-22 19:17:18 +00:00
qemu-binfmt-conf.sh Code provision for n32/n64 mips userland emulation. Not functional yet. 2007-09-30 01:58:33 +00:00
qemu-char.c qemu-char: include hw/baum.h 2008-11-01 00:53:09 +00:00
qemu-char.h Move some declarations around in the QEMU CharDriver code 2008-10-31 18:44:40 +00:00
qemu-common.h Clarify qemu_bh_schedule_idle() usage 2008-10-31 17:42:00 +00:00
qemu-doc.texi Preliminary BSD user emulator support 2008-10-26 20:33:16 +00:00
qemu-img.c Fix OpenBSD linker warnings in qemu-img 2008-08-24 10:30:33 +00:00
qemu-img.texi New qemu-img convert -B option, by Marc Bevand. 2008-06-05 21:53:49 +00:00
qemu-lock.h Multithreaded locking fixes. 2008-06-07 20:50:51 +00:00
qemu-log.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
qemu-malloc.c Fix error introduced by r5044 2008-08-25 20:03:28 +00:00
qemu-nbd.c Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
qemu-nbd.texi Fix formatting of documentation (Stefan Weil) 2008-09-22 20:41:57 +00:00
qemu-tech.texi Update (thanks to Edgar, Thiemo, malc, Paul, Laurent and Andrzej) 2008-10-09 18:52:04 +00:00
qemu-timer.h Break up vl.h. 2007-11-17 17:14:51 +00:00
qemu-tool.c Use qemu_gettimeofday. 2008-10-29 14:37:18 +00:00
readline.c Handle history additions properly, by Andreas Schwab. 2007-12-17 20:31:43 +00:00
README update 2005-02-10 21:46:47 +00:00
s390-dis.c Revert licensing to "GPLv2 or later", by Ulrich Hecht. 2008-01-17 13:56:59 +00:00
s390.ld update 2003-04-29 21:34:02 +00:00
sdl_keysym.h Make keysym tables const 2008-10-02 18:26:42 +00:00
sdl.c add DisplayState->idle (Samuel Thibault) 2008-08-21 20:08:55 +00:00
sh4-dis.c Fix warnings that would be caused by gcc flag -Wwrite-strings 2008-09-14 06:45:34 +00:00
softmmu_defs.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
softmmu_exec.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
softmmu_header.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
softmmu_template.h Add instruction counter. 2008-06-29 01:03:05 +00:00
softmmu-semi.h Suppress gcc 4.x -Wpointer-sign (included in -Wall) warnings 2008-09-20 08:07:15 +00:00
sparc64.ld Map code buffers below 2G on Sparc64 2008-07-26 15:05:57 +00:00
sparc-dis.c Update from binutils 2.17 2008-10-26 19:13:20 +00:00
sparc.ld More detabification 2007-10-06 11:28:21 +00:00
sys-queue.h Move audio/sys-queue.h => sys-queue.h 2008-07-29 20:08:37 +00:00
sysemu.h Move network redirection code out of vl.c and into net.c 2008-10-31 19:10:00 +00:00
tap-win32.c Use WIN32_LEAN_AND_MEAN, by Stefan Weil. 2007-12-17 04:42:29 +00:00
texi2pod.pl Update texi2pod.pl. 2008-02-04 14:47:49 +00:00
thunk.c Make bitmask tables static const 2008-10-05 10:51:10 +00:00
thunk.h Make bitmask tables static const 2008-10-05 10:51:10 +00:00
TODO update 2008-05-13 18:26:52 +00:00
translate-all.c Small cleanup of gen_intermediate_code(_internal), by Laurent Desnogues. 2008-07-18 18:01:29 +00:00
uboot_image.h Simple u-boot image loading support. 2007-03-06 23:52:01 +00:00
usb-linux.c Use locally defined structure. 2008-10-28 18:22:59 +00:00
VERSION version change 2008-01-06 17:10:54 +00:00
vgafont.h Some little fixes on QEMU 2008-09-06 16:31:30 +00:00
vl.c Add KVM support to QEMU 2008-11-05 16:04:33 +00:00
vnc_keysym.h Make keysym tables const 2008-10-02 18:26:42 +00:00
vnc.c Replace uses of strncpy (a GNU extension) with Qemu pstrcpy 2008-10-25 11:21:28 +00:00
vnchextile.h vnc dynamic resolution (Stefano Stabellini) 2008-09-15 16:03:41 +00:00
x86_64.ld update 2005-01-06 20:50:00 +00:00
x_keymap.c Add statics and missing #includes for prototypes. 2007-11-18 01:44:38 +00:00

Read the documentation in qemu-doc.html.

Fabrice Bellard.