Go to file
Eduardo Habkost df07ec5626 cpu defs: remove replicated flags from Intel (v2)
This patch removes the replicated feature flags from cpuid 8000_0001:edx
(extfeature_edx) from Intel models, as the duplicated feature flags are present
only on AMD CPUs. On Intel models, only the i64, syscall, and xd flags are kept
on extfeature_edx.

This is based on a previous patch from John Cooper where this was introduced
with many other changes at the same time. Original John's patch submission is
at Message-ID: <4DDAD5E7.2020002@redhat.com>, <http://marc.info/?l=qemu-devel&m=130618871926030>.

Original John's patch description was:

    cpu model bug fixes and definition corrections

    This patch was intended to address the replicated feature
    flags in cpuid 8000_0001:edx from cpuid 0000_0001:edx.
    This is due to AMD's definition where these flags are
    mostly cloned in the 8000_0001:edx cpuid function.
    qemu64 attempted to glue together the respective Intel
    and AMD nearly disjoint features and this propagated to
    the new Intel models as doing so was believed conservative
    at the time.  However after further soak and test lugging
    around this cruft doesn't provide any value, could
    conceivably confuse a guest, and has confused users trying
    to maintain/add cpu definitions.  This also caused issues
    for libvirt attempting to track this mis-encoding.

    So we've here tossed out the AMD replicated definitions
    from the Intel models, added a few replications into AMD
    definitions which were missing according to AMD's latest
    CPUID document, and reordered the config file flags to
    follow intuitive sequential bit ordering.  Also two flag
    name aliases were added for clarity to Intel models.  The
    end result being the models definitions now conform to
    their respective cpuid specifications sans x2apic which is
    emulated by kvm.

    This was tested with the following combinations:

        [Conroe, Penryn, Nehalem] x [F12-64, win64, win32] -- Intel host
        [Opteron_G1, Opteron_G2, Opteron_G3] x [F12-64, win64, win32] -- AMD host

    Yielding successful boots in all cases.

    Signed-off-by: john cooper <john.cooper@redhat.com>

Changes v1 -> v2:
 - Rebase against latest Qemu git tree

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-02-22 13:24:30 -06:00
audio Fix spelling in comments, documentation and messages 2011-12-14 11:09:44 +00:00
block sheepdog: fix co_recv coroutine context 2012-02-09 16:17:51 +01:00
bsd-user elf: Improve symbol lookup (optimize, fix for bsd-user) 2012-01-10 18:40:09 +01:00
darwin-user fix spelling in darwin-user sub directory 2011-12-02 10:50:56 +00:00
default-configs jazz-led: compile it only twice 2012-02-22 09:02:19 -06:00
docs docs: describe live block operations 2012-01-26 14:49:18 +01:00
fpu
fsdev fsdev: Fix parameter parsing for proxy helper 2012-01-30 10:54:16 +05:30
gdb-xml
hw jazz-led: convert to QOM 2012-02-22 09:02:19 -06:00
include/qemu qom: Document ways to retrieve child object added by object_property_add_child() 2012-02-22 09:02:18 -06:00
libcacard make: Remove duplicate use of GLIB_CFLAGS 2012-02-09 20:44:38 +04:00
linux-headers PPC: KVM: Update HIOR code to new interface 2012-02-02 02:47:45 +01:00
linux-user linux-user: brk() debugging 2012-02-10 10:48:09 +00:00
net net: remove extra spaces in help messages 2012-02-10 10:44:52 +00:00
pc-bios optionroms: Silence intermediate file removal 2012-02-01 14:45:02 -06:00
qapi qapi: add string-based visitors 2012-02-21 10:21:05 +01:00
qga guest agent: add supported command list to guest-info RPC 2011-12-12 17:06:21 -06:00
QMP qom: add test tools 2012-02-22 12:18:26 -06:00
qom qom: Fix object_initialize_with_type() assertion 2012-02-22 09:02:19 -06:00
roms pseries: SLOF PCI flag day 2012-01-21 05:17:02 +01:00
scripts qerror: add check-qerror.sh to verify alphabetical order 2012-01-18 10:23:39 -02:00
slirp slirp: Prevent sending ICMP error replies to source-only addresses 2012-02-08 10:07:54 +01:00
sysconfigs/target cpu defs: remove replicated flags from Intel (v2) 2012-02-22 13:24:30 -06:00
target-alpha fix spelling in target sub directory 2011-12-02 10:50:57 +00:00
target-arm target-arm/helper.c: tb_flush() on CPU reset 2012-02-17 08:34:43 +01:00
target-cris cris: Handle conditional stores on CRISv10 2011-12-12 11:38:31 +01:00
target-i386 cpu defs: use Intel flag names for Intel models (v2) 2012-02-22 13:24:28 -06:00
target-lm32
target-m68k
target-microblaze microblaze: Break the tb at memory barriers 2012-01-12 13:54:17 +01:00
target-mips Fix spelling in comments, documentation and messages 2011-12-14 11:09:44 +00:00
target-ppc ppc: remove unused variables 2012-02-11 11:03:50 +00:00
target-s390x s390: fix cpu hotplug / cpu activity on interrupts 2012-01-04 02:48:14 +01:00
target-sh4 target-sh4: ignore ocbp and ocbwb instructions 2012-01-10 18:20:10 +01:00
target-sparc target-sparc: Fix mixup of uint64 and uint64_t 2012-01-22 09:55:35 +00:00
target-unicore32
target-xtensa target-xtensa: fix MMUv3 initialization 2011-11-26 09:44:34 +00:00
tcg tcg-arm: fix a typo in comments 2012-01-13 10:36:59 +00:00
tests qapi: add tests for string-based visitors 2012-02-21 10:21:05 +01:00
trace g_thread_init users: don't call it if glib >= 2.31 2011-12-20 15:44:31 -06:00
ui spice: support ipv6 channel address in monitor events and in spice info 2012-02-21 10:36:05 +01:00
.gitignore qapi: add tests for string-based visitors 2012-02-21 10:21:05 +01:00
.gitmodules
.mailmap Add a .mailmap to map pre-git-conversion authors to friendly names 2011-12-12 17:06:21 -06:00
a.out.h
acl.c
acl.h
aes.c
aes.h
aio.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
alpha-dis.c
alpha.ld
arch_init.c pcspk: Convert to qdev 2012-02-17 09:58:22 -06:00
arch_init.h audio: remove unused parameter isa_pic 2011-12-20 15:44:31 -06:00
arm-dis.c fix spelling in main directory 2011-12-02 10:50:57 +00:00
arm-semi.c
arm.ld
async.c
balloon.c qapi: Convert balloon 2011-12-06 11:40:01 -02:00
balloon.h qapi: Convert balloon 2011-12-06 11:40:01 -02:00
bitmap.c
bitmap.h
bitops.c
bitops.h
block_int.h block: add .bdrv_co_write_zeroes() interface 2012-02-09 16:17:50 +01:00
block-migration.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
block-migration.h
block.c block: perform zero-detection during copy-on-read 2012-02-09 16:17:50 +01:00
block.h block: add .bdrv_co_write_zeroes() interface 2012-02-09 16:17:50 +01:00
blockdev.c blockdev: allow read-only pflash devices 2012-02-22 09:02:17 -06:00
blockdev.h qapi: Convert block_set_io_throttle 2012-01-18 10:23:39 -02:00
bswap.h
bt-host.c bt-host: add missing break statement 2012-01-13 10:37:00 +00:00
bt-host.h
bt-vhci.c
buffered_file.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
buffered_file.h
cache-utils.c
cache-utils.h
Changelog Fix spelling in comments, documentation and messages 2011-12-14 11:09:44 +00:00
check-qdict.c check-qdict: convert to gtest 2012-01-12 10:05:37 -06:00
check-qfloat.c check-qfloat: convert to gtest 2012-01-12 10:05:37 -06:00
check-qint.c check-qint: convert to gtest 2012-01-12 10:05:37 -06:00
check-qjson.c check-qjson: enable disabled tests 2012-01-12 10:05:38 -06:00
check-qlist.c check-qlist: convert to gtest 2012-01-12 10:05:38 -06:00
check-qstring.c check-qstring: remove check.h include 2012-01-12 11:33:22 -06:00
cmd.c
cmd.h
CODING_STYLE CODING_STYLE: Clarify style for enum and function type names 2012-02-10 10:44:51 +00:00
compatfd.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
compatfd.h
compiler.h rewrite QEMU_BUILD_BUG_ON 2012-02-09 16:17:51 +01:00
config.h
configure configure: Remove OpenBSD workaround for curses probe 2012-02-17 09:58:21 -06:00
console.c console: Fix segfault on screendump without VGA adapter 2012-01-03 02:49:25 +01:00
console.h qapi: Convert expire_password 2012-01-18 10:23:38 -02:00
COPYING
COPYING.LIB
coroutine-gthread.c g_thread_init users: don't call it if glib >= 2.31 2011-12-20 15:44:31 -06:00
coroutine-ucontext.c coroutine: switch to QSLIST 2012-02-17 08:33:33 -06:00
coroutine-win32.c
cpu-all.h Remove IO_MEM_SHIFT 2012-01-04 13:34:50 +02:00
cpu-common.h Remove IO_MEM_SHIFT 2012-01-04 13:34:50 +02:00
cpu-defs.h fix win32 build 2011-12-15 09:20:50 -06:00
cpu-exec.c cpu-exec.c: Correct comment about this file and indentation cleanup 2012-02-10 10:44:52 +00:00
cpus.c apic: Inject external NMI events via LINT1 2012-01-19 12:14:40 +01:00
cpus.h
cris-dis.c cris-dis: Clean memory allocation 2012-01-10 09:36:43 +01:00
cursor_hidden.xpm
cursor_left_ptr.xpm
cursor.c
cutils.c cutils: extract buffer_is_zero() from qemu-img.c 2012-02-09 16:17:50 +01:00
def-helper.h
device_tree.c
device_tree.h
dis-asm.h
disas.c
disas.h
dma-helpers.c dma: the passed io_func does not return NULL 2011-12-15 12:40:08 +01:00
dma.h
dyngen-exec.h tcg/arm: Use r6 as TCG_AREG0 to avoid clash with Thumb framepointer 2012-01-10 17:52:49 +01:00
elf.h
envlist.c
envlist.h
error_int.h
error.c
error.h
event_notifier.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
event_notifier.h prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
exec-all.h Direct dispatch through MemoryRegion 2012-01-04 13:34:50 +02:00
exec-memory.h fix spelling in main directory 2011-12-02 10:50:57 +00:00
exec-obsolete.h memory: change dirty getting API to take a size 2012-02-04 12:45:10 +00:00
exec.c exec.c: Clarify comment about tlb_flush() flush_global parameter 2012-02-01 14:45:01 -06:00
gdbstub.c gdbstub: Fix fd leak in gdbserver_open() error path 2012-01-06 15:07:14 +00:00
gdbstub.h
gen-icount.h
HACKING HACKING: clarify allocation/free recommendations 2011-12-15 09:27:23 -06:00
hmp-commands.hx qmp: add block_job_cancel command 2012-01-26 14:49:18 +01:00
hmp.c qmp: add query-block-jobs 2012-01-26 14:49:18 +01:00
hmp.h qmp: add query-block-jobs 2012-01-26 14:49:18 +01:00
host-utils.c
host-utils.h
hppa-dis.c fix spelling in main directory 2011-12-02 10:50:57 +00:00
hppa.ld
i386-dis.c
i386.ld
ia64-dis.c
ia64.ld
input.c input: send kbd+mouse events only to running guests. 2012-02-17 11:02:55 -06:00
int128.h
iohandler.c
ioport-user.c
ioport.c
ioport.h
iorange.h
iov.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
iov.h
json-lexer.c Add 'fall through' comments to case statements without break 2012-01-13 10:36:59 +00:00
json-lexer.h
json-parser.c
json-parser.h
json-streamer.c
json-streamer.h
kvm-all.c kvm: Implement kvm_irqchip_in_kernel like kvm_enabled 2012-02-08 15:57:50 -02:00
kvm-stub.c kvm: Implement kvm_irqchip_in_kernel like kvm_enabled 2012-02-08 15:57:50 -02:00
kvm.h kvm: Implement kvm_irqchip_in_kernel like kvm_enabled 2012-02-08 15:57:50 -02:00
libfdt_env.h
LICENSE LICENSE: There is no libqemu.a anymore 2011-12-09 11:25:22 +00:00
linux-aio.c block: qemu_aio_get does not return NULL 2011-12-15 12:40:08 +01:00
m68k-dis.c fix spelling in main directory 2011-12-02 10:50:57 +00:00
m68k-semi.c
m68k.ld
main-loop.c main-loop: For tools, initialize timers as part of qemu_init_main_loop() 2012-02-01 14:45:02 -06:00
main-loop.h main-loop: For tools, initialize timers as part of qemu_init_main_loop() 2012-02-01 14:45:02 -06:00
MAINTAINERS split SCSI and LSI, add myself as SCSI maintainer 2012-02-22 13:24:27 -06:00
Makefile Makefile: Add dependency to fix linux-user-only build 2012-02-22 09:02:52 -06:00
Makefile.dis
Makefile.hw make: Remove duplicate use of GLIB_CFLAGS 2012-02-09 20:44:38 +04:00
Makefile.objs jazz-led: compile it only twice 2012-02-22 09:02:19 -06:00
Makefile.target jazz-led: compile it only twice 2012-02-22 09:02:19 -06:00
Makefile.user
memory.c memory-region: Report if region is read-only or write-only on info mtree 2012-02-11 10:49:07 +00:00
memory.h memory: change dirty getting API to take a size 2012-02-04 12:45:10 +00:00
microblaze-dis.c
migration-exec.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
migration-fd.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
migration-tcp.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
migration-unix.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
migration.c notifier: switch to QLIST 2012-02-17 08:33:32 -06:00
migration.h Merge remote-tracking branch 'stefanha/trivial-patches-next' into staging 2011-12-14 07:59:21 -06:00
mips-dis.c
mips.ld
module.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
module.h qom: Unify type registration 2012-02-15 09:39:21 -06:00
monitor.c Add SPICE support to add_client monitor command 2012-02-21 10:36:05 +01:00
monitor.h qmp: add block_job_cancel command 2012-01-26 14:49:18 +01:00
nbd.c qemu-nbd: throttle requests 2011-12-22 11:53:59 +01:00
nbd.h qemu-nbd: move client handling to nbd.c 2011-12-22 11:53:59 +01:00
net.c w32: Fix build with new net bridge code 2012-02-04 11:49:34 +00:00
net.h Add support for net bridge 2012-02-01 16:24:40 -06:00
notify.c notifier: switch to QLIST 2012-02-17 08:33:32 -06:00
notify.h notifier: switch to QLIST 2012-02-17 08:33:32 -06:00
os-posix.c keep the PID file locked for the lifetime of the process 2012-02-01 16:23:57 -06:00
os-win32.c link the main loop and its dependencies into the tools 2011-12-22 11:53:58 +01:00
osdep.c move corking functions to osdep.c 2011-12-22 11:53:58 +01:00
osdep.h
oslib-posix.c link the main loop and its dependencies into the tools 2011-12-22 11:53:58 +01:00
oslib-win32.c link the main loop and its dependencies into the tools 2011-12-22 11:53:58 +01:00
path.c
pci-ids.txt
pflib.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
pflib.h
poison.h
posix-aio-compat.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
ppc64.ld PPC: Fix linker scripts on ppc hosts 2012-01-10 18:23:58 +01:00
ppc-dis.c
ppc.ld PPC: Fix linker scripts on ppc hosts 2012-01-10 18:23:58 +01:00
qapi-schema-guest.json Merge remote-tracking branch 'stefanha/trivial-patches-next' into staging 2011-12-14 07:59:21 -06:00
qapi-schema-test.json Introduce test-qmp-output-visitor 2011-12-06 11:40:00 -02:00
qapi-schema.json qom: move properties from qdev to object 2012-02-03 10:41:08 -06:00
qbool.c
qbool.h
qdict-test-data.txt
qdict.c
qdict.h
qemu_socket.h move corking functions to osdep.c 2011-12-22 11:53:58 +01:00
qemu-aio.h
qemu-barrier.h
qemu-bridge-helper.c Add cap reduction support to enable use as SUID 2012-02-01 16:24:39 -06:00
qemu-char.c qdev: nuke qdev_init_chardev() 2012-02-03 10:41:08 -06:00
qemu-char.h qdev: nuke qdev_init_chardev() 2012-02-03 10:41:08 -06:00
qemu-common.h cutils: extract buffer_is_zero() from qemu-img.c 2012-02-09 16:17:50 +01:00
qemu-config.c Make kernel, initrd and append be machine_opts 2012-02-22 09:02:52 -06:00
qemu-config.h
qemu-coroutine-int.h coroutine: switch to QSLIST 2012-02-17 08:33:33 -06:00
qemu-coroutine-io.c sheepdog: move coroutine send/recv function to generic code 2011-12-22 11:53:53 +01:00
qemu-coroutine-lock.c coroutine: add qemu_co_queue_restart_all() 2011-12-05 14:51:38 +01:00
qemu-coroutine-sleep.c coroutine: add co_sleep_ns() coroutine sleep function 2012-01-26 11:45:26 +01:00
qemu-coroutine.c
qemu-coroutine.h coroutine: add co_sleep_ns() coroutine sleep function 2012-01-26 11:45:26 +01:00
qemu-doc.texi iSCSI: add configuration variables for iSCSI 2012-02-09 16:17:50 +01:00
qemu-error.c error: Add an accessor for progname 2011-12-15 09:27:22 -06:00
qemu-error.h error: Add an accessor for progname 2011-12-15 09:27:22 -06:00
qemu-file.h vmstate: extract declarations out of hw/hw.h 2012-01-13 10:20:51 -06:00
qemu-ga.c Spelling fixes in comments and documentation 2012-01-13 10:36:59 +00:00
qemu-img-cmds.hx Documentation: Add qemu-img -t parameter in man page 2011-12-15 12:40:08 +01:00
qemu-img.c cutils: extract buffer_is_zero() from qemu-img.c 2012-02-09 16:17:50 +01:00
qemu-img.texi Documentation: Add qemu-img -t parameter in man page 2011-12-15 12:40:08 +01:00
qemu-io.c qemu-io: add write -z option for bdrv_co_write_zeroes 2012-02-09 16:17:50 +01:00
qemu-lock.h
qemu-log.h
qemu-nbd.c open /dev/nbd in nbd_client_thread 2012-02-17 12:41:59 +01:00
qemu-nbd.texi
qemu-objects.h
qemu-option.c qemu-option: Add support for merged QemuOptsLists 2012-02-17 09:08:22 +01:00
qemu-option.h qemu-option: Add support for merged QemuOptsLists 2012-02-17 09:08:22 +01:00
qemu-options-wrapper.h vl.c: In qemu -h output, only print options for the arch we are running as 2011-12-19 10:27:33 -06:00
qemu-options.h vl.c: Move option generation logic into a wrapper file 2011-12-19 10:27:33 -06:00
qemu-options.hx Merge remote-tracking branch 'qemu-kvm/uq/master' into staging 2012-02-15 18:41:28 -06:00
qemu-os-posix.h 9pfs: improve portability to older systems 2011-11-28 11:36:27 -06:00
qemu-os-win32.h
qemu-progress.c
qemu-queue.h qemu-queue: drop QCIRCLEQ 2012-02-17 08:33:33 -06:00
qemu-sockets.c
qemu-tech.texi qemu-tech.texi: Remove libqemu related stuff from the document 2011-12-09 10:10:12 +00:00
qemu-thread-posix.c qemu-thread: implement joinable threads for POSIX 2011-12-12 17:06:22 -06:00
qemu-thread-posix.h
qemu-thread-win32.c w32: Initialise critical section before starting thread (fix #922131) 2012-02-07 18:11:41 +01:00
qemu-thread-win32.h fix win32 build 2011-12-15 09:20:50 -06:00
qemu-thread.h qemu-thread: add API for joinable threads 2011-12-12 17:06:22 -06:00
qemu-timer-common.c
qemu-timer.c notifier: switch to QLIST 2012-02-17 08:33:32 -06:00
qemu-timer.h ptimer: move declarations to ptimer.h 2012-01-13 10:20:50 -06:00
qemu-tls.h Rename get_tls to tls_var 2011-12-06 10:07:04 +00:00
qemu-tool.c main-loop: For tools, initialize timers as part of qemu_init_main_loop() 2012-02-01 14:45:02 -06:00
qemu-x509.h
qemu-xattr.h
qemu.sasl
qerror.c qdev: print error message before aborting 2012-02-14 18:57:33 +00:00
qerror.h qdev: print error message before aborting 2012-02-14 18:57:33 +00:00
qfloat.c
qfloat.h
qint.c
qint.h
qjson.c
qjson.h
qlist.c
qlist.h
qmp-commands.hx Add SPICE support to add_client monitor command 2012-02-21 10:36:05 +01:00
qmp.c qom: add QObject-based property get/set wrappers 2012-02-07 13:52:40 +01:00
qobject.h
qstring.c
qstring.h
range.h
readline.c
readline.h
README Update README 2011-12-11 17:50:43 -06:00
rules.mak
s390-dis.c
s390.ld
savevm.c Fix vmstate_register_ram() for rom/device regions 2012-01-08 18:16:31 +02:00
sh4-dis.c
softmmu_defs.h
softmmu_exec.h
softmmu_header.h
softmmu_template.h Remove IO_MEM_SHIFT 2012-01-04 13:34:50 +02:00
softmmu-semi.h
sparc64.ld
sparc-dis.c
sparc.ld
spice-qemu-char.c spice-qemu-char: Generate chardev open/close events 2011-11-28 16:20:51 -06:00
sysemu.h mc146818rtc: Use lost_tick_policy property 2012-02-01 14:45:01 -06:00
targphys.h
tcg-runtime.c
tci-dis.c
tci.c
test-coroutine.c
test-qmp-commands.c
test-qmp-input-visitor.c qmp: Add missing gcc format attribute and fix format string 2012-01-18 10:23:39 -02:00
test-qmp-output-visitor.c Introduce test-qmp-output-visitor 2011-12-06 11:40:00 -02:00
test-string-input-visitor.c qapi: add tests for string-based visitors 2012-02-21 10:21:05 +01:00
test-string-output-visitor.c qapi: add tests for string-based visitors 2012-02-21 10:21:05 +01:00
thunk.c
thunk.h
TODO
trace-events jazz-led: use trace framework 2012-02-22 09:02:19 -06:00
translate-all.c
uboot_image.h
usb-bsd.c Merge remote-tracking branch 'kraxel/usb.38' into staging 2012-02-15 17:25:25 -06:00
usb-linux.c Merge remote-tracking branch 'kraxel/usb.38' into staging 2012-02-15 17:25:25 -06:00
usb-redir.c Merge remote-tracking branch 'kraxel/usb.38' into staging 2012-02-15 17:25:25 -06:00
usb-stub.c
user-exec.c
VERSION Update version for 1.1 development branch 2011-12-05 08:39:02 -06:00
version.rc
vgafont.h
vl.c Make kernel, initrd and append be machine_opts 2012-02-22 09:02:52 -06:00
vmstate.h vmstate: extract declarations out of hw/hw.h 2012-01-13 10:20:51 -06:00
x86_64.ld
xen-all.c memory: change dirty setting APIs to take a size 2012-01-25 18:32:47 +00:00
xen-mapcache.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
xen-mapcache.h
xen-stub.c prepare for future GPLv2+ relicensing 2012-01-13 10:55:56 -06:00
xtensa-semi.c

Read the documentation in qemu-doc.html or on http://wiki.qemu.org

- QEMU team