QEMU Changelog

New in version 2.2.0 RC3

November 25th, 2014
  • System emulation:
  • Future incompatible changes:
  • Three options are using different names on the command line and in configuration file. In particular:
  • The "acpi" configuration file section matches command-line option "acpitable";
  • The "boot-opts" configuration file section matches command-line option "boot";
  • The "smp-opts" configuration file section matches command-line option "smp".
  • Starting with QEMU xyz.jkl, -readconfig will standardize on the name for the command line option.
  • ARM:
  • Support for loading a device tree even with no -kernel option or when booting ELF images
  • Support for input interrupts in the PL061 GPIO controller
  • TCG can emulate breakpoints and watchpoints.
  • Support for PSCI firmware interface emulating in TCG
  • enables clean shutdown from non-kvm guests
  • MIPS:
  • Support for MIPS64 Release 6 emulation.
  • Support for MIPS SIMD Architecture emulation.
  • Fix for incorrectly handled delay slots in MIPS16 and microMIPS.
  • PowerPC:
  • Mac OS X 10.2, 10.3 and 10.4 guests run with the mac99 machine type.
  • Bugfixes and optimization for TCG emulation of PowerPC targets.
  • IBM (pSeries):
  • Support for the "nmi" monitor command, to enter the kernel debugger.
  • Live migration support for NVRAM
  • Freescale (BookE):
  • Breakpoint support on KVM.
  • Support for the e500 platform bus and dynamic instantiation of FreeScale eTSEC devices (-device eTSEC).
  • Support for MPC8XXX gpio controller to enable shutdown with 3.19+ Linux guests
  • s390:
  • Enhance support for boot from DASD to handle more formats.
  • Support for memory hotplug.
  • Support for cpu state handling and migration.
  • Support for booting newer kernels under TCG.
  • Improved SMP startup and cpu online/offline performance especially for large guests
  • SPARC:
  • Emulation of TCX hardware acceleration (allows X to run under NetBSD and Solaris)
  • NetBSD and OpenBSD can now run under qemu-system-sparc64 in -nographic mode
  • TriCore:
  • New target.
  • x86:
  • Support for IOMMU (VT-d) emulation on the Q35 machine type, enabled with "-machine iommu=on".
  • Support for specifying drives in short form on the command-line (i.e. using -cdrom, -hda, -drive if=ide) on the Q35 machine type.
  • TCG is reported to run QNX.
  • All CPUs now work with "-cpu MODEL,enforce", of course as long as TCG or KVM support the CPU's set of features. Previously, a few CPUs included extraneous CPUID flags that cause "-cpu MODEL,enforce" to fail.
  • KVM:
  • More robust live migration of the kvm pv clock
  • Support for AVX512
  • Xen:
  • QEMU can now boot a bzImage or multiboot kernel under Xen, using the command line option -kernel.
  • Xtensa:
  • New script for automatic core import from xtensa configuration overlay.
  • Device emulation and assignment:
  • The boot order set for hot-plugged devices will take effect during reboot. In addition, the boot order can be dynamically modified via QOM.
  • IDE:
  • More accurate emulation of AHCI, especially visible with Windows guests.
  • SCSI:
  • Passthrough of vendor-specific commands now works (only with the virtio-scsi HBA).
  • Initial support in virtio-scsi for a threaded backend, which is used in the same way as virtio-blk ("-object iothread,id=id" and "-device virtio-scsi-pci,iothread=id"). Note that the code has known thread-safety problems that can lead to QEMU using freed memory. They should not happen in normal use, they can be triggered easily by malicious guests. This option should only be used if you are interested in making relevant parts of QEMU thread safe.
  • Support for LSI MegaRAID SAS 2108 HBAs (-device megasas-gen2). Note that booting from this device does not work yet.
  • virtio-scsi can now execute Abort Task and Abort Task Set task management functions asynchronously.
  • PCI/PCIe:
  • MSIs are now (correctly) disabled until bus master DMA is enabled for the device.
  • Support for ARI forwarding on PCIe root ports.
  • USB:
  • Support for hot-plugging XHCI/EHCI/UHCI controllers (in the case of EHCI/UHCI, only if there are no companion controllers).
  • Support for USB 2.0 (high speed) mice and keyboards, complementing the existing support for high speed USB tablets. High speed devices avoid the less efficient UHCI controller, and thus use less CPU on the host.
  • VGA:
  • The default vga device on x86 has been switched from cirrus to stdvga, which works better for most guests. However, Windows XP will not suspend to RAM anymore; the change can be undone with "-vga cirrus" and does not affect PC machine types of versions 2.1 and earlier.
  • Character devices:
  • Support for automatic reconnection of client sockets (e.g. "-chardev socket,host=localhost,port=12345,nowait,reconnect=5").
  • Monitor:
  • The "info pcmcia" command was removed. PCMCIA hotplug was never implemented, and thus the command could only return static information.
  • Network:
  • Samba 4.1 is now supported.
  • Block devices in system emulation:
  • The list of functionality now supported in threaded virtio-blk backend is growing: new in 2.2 are resizing of disks, device hot-unplug, the embedded NBD server, and background jobs (backup, stream, mirror, commit).
  • Block devices and tools:
  • QEMU is more resistent against failure of large allocations in the block layer
  • Support for Archipelago as a QEMU block backend
  • Support for Parallels images larger than 2TB.
  • Migration now works when using qcow2 over Ceph.
  • Network-based drivers (NBD, libiscsi, etc.) now work on Win32 hosts too.
  • qemu-img source cache option?
  • qemu-nbd has a new --detect-zeroes option.
  • Progress report for qemu-img commit and qemu-img amend
  • TCG:
  • In icount mode, it is possible to slow down emulation to match the requested CPU frequency (thus ensuring that the host and guest clocks remain aligned). This is enabled with "-icount N,align=on".
  • A new "victim TLB" provides a 5-10% performance improvement.
  • Tracing:
  • QEMU provides a SystemTap script that outputs binary trace data, for use in flight-recorder mode. The resulting traces can be parsed with QEMU's simpletrace.py script (using the --no-header command-line option).
  • User-mode emulation:
  • New option: setting AT_RANDOM auxval with -seed option or QEMU_RAND_SEED env variable
  • New system calls supported
  • timerfd_create, timerfd_gettime and timerfd_settime
  • ioprio_get and ioprio_set
  • setns
  • unshare
  • epoll_pwait has been enabled on ARM
  • Signal handling support added for PPC64
  • Emulated contents of /proc/self/maps fixed

New in version 2.2.0 RC1 (November 12th, 2014)

  • System emulation:
  • Future incompatible changes:
  • Three options are using different names on the command line and in configuration file. In particular:
  • The "acpi" configuration file section matches command-line option "acpitable";
  • The "boot-opts" configuration file section matches command-line option "boot";
  • The "smp-opts" configuration file section matches command-line option "smp".
  • Starting with QEMU xyz.jkl, -readconfig will standardize on the name for the command line option.
  • ARM:
  • Support for loading a device tree even with no -kernel option or when booting ELF images
  • Support for input interrupts in the PL061 GPIO controller
  • TCG can emulate breakpoints and watchpoints.
  • Support for PSCI firmware interface emulating in TCG
  • enables clean shutdown from non-kvm guests
  • MIPS:
  • Support for MIPS64 Release 6 emulation.
  • Support for MIPS SIMD Architecture emulation.
  • Fix for incorrectly handled delay slots in MIPS16 and microMIPS.
  • PowerPC:
  • Mac OS X 10.2, 10.3 and 10.4 guests run with the mac99 machine type.
  • Bugfixes and optimization for TCG emulation of PowerPC targets.
  • IBM (pSeries):
  • Support for the "nmi" monitor command, to enter the kernel debugger.
  • Freescale (BookE):
  • Breakpoint support on KVM.
  • Support for the e500 platform bus and dynamic instantiation of FreeScale eTSEC devices (-device eTSEC).
  • Support for MPC8XXX gpio controller.
  • s390:
  • Enhance support for boot from DASD to handle more formats.
  • Support for memory hotplug.
  • Support for cpu state handling and migration.
  • Support for booting newer kernels under TCG.
  • Improved SMP startup and cpu online/offline performance especially for large guests
  • SPARC:
  • Emulation of TCX hardware acceleration.
  • NetBSD and OpenBSD can now run under qemu-system-sparc64 in -nographic mode
  • TriCore:
  • New target.
  • x86:
  • Support for IOMMU (VT-d) emulation on the Q35 machine type, enabled with "-machine iommu=on".
  • Support for specifying drives in short form on the command-line (i.e. using -cdrom, -hda, -drive if=ide) on the Q35 machine type.
  • Support for AVX512 emulation.
  • All CPUs now work with "-cpu MODEL,enforce", of course as long as TCG or KVM support the CPU's set of features. Previously, a few CPUs included extraneous CPUID flags that cause "-cpu MODEL,enforce" to fail.
  • KVM:
  • More robust live migration of the kvm pv clock
  • Xen:
  • QEMU can now boot a bzImage or multiboot kernel under Xen, using the command line option -kernel.
  • Xtensa:
  • New script for automatic core import from xtensa configuration overlay.
  • Device emulation and assignment:
  • The boot order set for hot-plugged devices will take effect during reboot. In addition, the boot order can be dynamically modified via QOM.
  • IDE:
  • More accurate emulation of AHCI, especially visible with Windows guests.
  • SCSI:
  • Passthrough of vendor-specific commands now works (only with the virtio-scsi HBA).
  • Initial support in virtio-scsi for a threaded backend, which is used in the same way as virtio-blk ("-object iothread,id=id" and "-device virtio-scsi-pci,iothread=id"). Note that the code has known thread-safety problems that can lead to QEMU using freed memory. They should not happen in normal use, they can be triggered easily by malicious guests. This option should only be used if you are interested in making relevant parts of QEMU thread safe.
  • Support for LSI MegaRAID SAS 2108 HBAs (-device megasas-gen2). Note that booting from this device does not work yet.
  • virtio-scsi can now execute Abort Task and Abort Task Set task management functions asynchronously.
  • PCI/PCIe:
  • MSIs are now (correctly) disabled until bus master DMA is enabled for the device.
  • Support for ARI forwarding on PCIe root ports.
  • USB:
  • Support for hot-plugging XHCI/EHCI/UHCI controllers (in the case of EHCI/UHCI, only if there are no companion controllers).
  • Support for USB 2.0 (high speed) mice and keyboards, complementing the existing support for high speed USB tablets. High speed devices avoid the less efficient UHCI controller, and thus use less CPU on the host.
  • VGA:
  • The default vga device on x86 has been switched from cirrus to stdvga (2.2+ machine types only).
  • VFIO:
  • Character devices:
  • Support for automatic reconnection of client sockets (e.g. "-chardev socket,host=localhost,port=12345,nowait,reconnect=5").
  • Monitor:
  • The "info pcmcia" command was removed. PCMCIA hotplug was never implemented, and thus the command could only return static information.
  • Network:
  • Samba 4.1 is now supported.
  • Block devices in system emulation:
  • Many fixes to AHCI emulation.
  • The list of functionality now supported in threaded virtio-blk backend is growing: new in 2.2 are resizing of disks, device hot-unplug, the embedded NBD server, and background jobs (backup, stream, mirror, commit).
  • Various:
  • Block devices and tools:
  • QEMU is more resistent against failure of large allocations in the block layer
  • Support for Archipelago as a QEMU block backend
  • Support for Parallels images larger than 2TB.
  • Migration now works when using qcow2 over Ceph.
  • Network-based drivers (NBD, libiscsi, etc.) now work on Win32 hosts too.
  • qemu-img source cache option?
  • qemu-nbd has a new --detect-zeroes option.
  • Progress report for qemu-img commit and qemu-img amend
  • TCG:
  • In icount mode, it is possible to slow down emulation to match the requested CPU frequency (thus ensuring that the host and guest clocks remain aligned). This is enabled with "-icount N,align=on".
  • A new "victim TLB" provides a 5-10% performance improvement.
  • Tracing:
  • QEMU provides a SystemTap script that outputs binary trace data, for use in flight-recorder mode. The resulting traces can be parsed with QEMU's simpletrace.py script (using the --no-header command-line option).
  • User-mode emulation:
  • New option: setting AT_RANDOM auxval with -seed option or QEMU_RAND_SEED env variable
  • New system calls supported
  • timerfd_create, timerfd_gettime and timerfd_settime
  • ioprio_get and ioprio_set
  • setns
  • unshare
  • epoll_pwait has been enabled on ARM
  • Signal handling support added for PPC64
  • Emulated contents of /proc/self/maps fixed

New in version 2.2 RC0 (November 5th, 2014)

  • System emulation:
  • Future incompatible changes:
  • Three options are using different names on the command line and in configuration file. In particular:
  • The "acpi" configuration file section matches command-line option "acpitable";
  • The "boot-opts" configuration file section matches command-line option "boot";
  • The "smp-opts" configuration file section matches command-line option "smp".
  • Starting with QEMU xyz.jkl, -readconfig will standardize on the name for the command line option.
  • ARM:
  • Support for loading a device tree even with no -kernel option or when booting ELF images
  • Support for input interrupts in the PL061 GPIO controller
  • TCG can emulate breakpoints and watchpoints.
  • The PSCI firmware interface can be emulated even when running without KVM.
  • MIPS:
  • Support for MIPS64 Release 6 emulation.
  • Support for MIPS SIMD Architecture emulation.
  • Fix for incorrectly handled delay slots in MIPS16 and microMIPS.
  • PowerPC:
  • Mac OS X 10.2, 10.3 and 10.4 guests run with the mac99 machine type.
  • Bugfixes and optimization for TCG emulation of PowerPC targets.
  • IBM (pSeries):
  • Support for the "nmi" monitor command, to enter the kernel debugger.
  • Freescale (BookE):
  • Breakpoint support on KVM.
  • Support for the e500 platform bus and dynamic instantiation of FreeScale eTSEC devices (-device eTSEC).
  • Support for MPC8XXX gpio controller.
  • s390:
  • Enhance support for boot from DASD to handle more formats.
  • Support for memory hotplug.
  • Support for cpu state handling and migration.
  • Support for booting newer kernels under TCG.
  • SPARC:
  • Emulation of TCX hardware acceleration.
  • TriCore:
  • New target.
  • x86:
  • Support for IOMMU (VT-d) emulation on the Q35 machine type, enabled with "-machine iommu=on".
  • Support for specifying drives in short form on the command-line (i.e. using -cdrom, -hda, -drive if=ide) on the Q35 machine type.
  • Support for AVX512 emulation.
  • All CPUs now work with "-cpu MODEL,enforce", of course as long as TCG or KVM support the CPU's set of features. Previously, a few CPUs included extraneous CPUID flags that cause "-cpu MODEL,enforce" to fail.
  • KVM:
  • More robust live migration of the kvm pv clock
  • Xen:
  • QEMU can now boot a bzImage or multiboot kernel under Xen, using the command line option -kernel.
  • Xtensa:
  • New script for automatic core import from xtensa configuration overlay.
  • Device emulation and assignment:
  • IDE:
  • More accurate emulation of AHCI, especially visible with Windows guests.
  • SCSI:
  • Passthrough of vendor-specific commands now works (only with the virtio-scsi HBA).
  • Initial support in virtio-scsi for a threaded backend, which is used in the same way as virtio-blk ("-object iothread,id=id" and "-device virtio-scsi-pci,iothread=id"). Note that the code has known thread-safety problems that can lead to QEMU using freed memory. They should not happen in normal use, they can be triggered easily by malicious guests. This option should only be used if you are interested in making relevant parts of QEMU thread safe.
  • Support for LSI MegaRAID SAS 2108 HBAs (-device megasas-gen2). Note that booting from this device does not work yet.
  • virtio-scsi can now execute Abort Task and Abort Task Set task management functions asynchronously.
  • PCI/PCIe:
  • MSIs are now (correctly) disabled until bus master DMA is enabled for the device.
  • Support for ARI forwarding on PCIe root ports.
  • USB:
  • Support for hot-plugging XHCI/EHCI/UHCI controllers (in the case of EHCI/UHCI, only if there are no companion controllers).
  • Support for USB 2.0 (high speed) mice and keyboards, complementing the existing support for high speed USB tablets. High speed devices avoid the less efficient UHCI controller, and thus use less CPU on the host.
  • Character devices:
  • Support for automatic reconnection of client sockets (e.g. "-chardev socket,host=localhost,port=12345,nowait,reconnect=5").
  • Monitor:
  • The "info pcmcia" command was removed. PCMCIA hotplug was never implemented, and thus the command could only return static information.
  • Network:
  • Samba 4.1 is now supported.
  • Block devices in system emulation:
  • Many fixes to AHCI emulation.
  • The list of functionality now supported in threaded virtio-blk backend is growing: new in 2.2 are resizing of disks, device hot-unplug, the embedded NBD server, and background jobs (backup, stream, mirror, commit).
  • Various:
  • Block devices and tools:
  • QEMU is more resistent against failure of large allocations in the block layer
  • Support for Archipelago as a QEMU block backend
  • Support for Parallels images larger than 2TB.
  • Migration now works when using qcow2 over Ceph.
  • Network-based drivers (NBD, libiscsi, etc.) now work on Win32 hosts too.
  • qemu-img source cache option?
  • qemu-nbd has a new --detect-zeroes option.
  • TCG:
  • In icount mode, it is possible to slow down emulation to match the requested CPU frequency (thus ensuring that the host and guest clocks remain aligned). This is enabled with "-icount N,align=on".
  • A new "victim TLB" provides a 5-10% performance improvement.
  • Tracing:
  • QEMU provides a SystemTap script that outputs binary trace data, for use in flight-recorder mode. The resulting traces can be parsed with QEMU's simpletrace.py script (using the --no-header command-line option).
  • User-mode emulation:
  • new option: presetting AT_RANDOM auxval with -seed option or QEMU_RAND_SEED env variable
  • new system calls supported
  • timerfd_create timerfd_gettime timerfd_settime
  • ioprio_get ioprio_set
  • setns
  • unshare
  • enable epoll_pwait on ARM
  • implemented signal handling for PPC64
  • fixed contents of /proc/self/maps

New in version 2.1.2 (September 26th, 2014)

  • Incompatible changes:
  • The 82573L NIC was incorrectly treated as an 8254xx model. It no longer works correctly on either Linux (3.14.*) or Windows 7 and has been removed.
  • On x86, migration from QEMU 1.7 to QEMU 2.0 was broken if the guest had PCI bridges or for some number of CPUs (12, 13, 14, 54, 55, 56, 97, 98, 99, 139, 140) are the only ones). QEMU 2.1 fixes this, so that migration from QEMU 1.7 to QEMU 2.1 should always work. However, the fix breaks the following scenarios instead:
  • migration from QEMU 2.0 to QEMU 2.1 with PCI bridges and machine types pc-i440fx-1.7/pc-i440fx-2.0
  • migration from QEMU 2.0 to QEMU 2.1 with the aforementioned number of CPUs and machine type pc-i440fx-1.7
  • Future incompatible changes:
  • Three options are using different names on the command line and in configuration file. In particular:
  • The "acpi" configuration file section matches command-line option "acpitable";
  • The "boot-opts" configuration file section matches command-line option "boot";
  • The "smp-opts" configuration file section matches command-line option "smp".
  • Starting with QEMU xyz.jkl, -readconfig will standardize on the name for the command line option.
  • ARM:
  • Firmware can be passed to the vexpress machine via -bios.
  • Improvements to Allwinner SoC emulation.
  • AArch64 TCG system emulation support.
  • AArch64 SHA and Crypto instruction support.
  • LM32:
  • Support for semihosting.
  • Microblaze:
  • Support for u-boot initrd images.
  • MIPS:
  • Support for KVM in the Malta board.
  • IBM:
  • Support for VFIO (with guest-side IOMMU) on pSeries.
  • Support for emulation of decimal number instructions.
  • Support for PAPR compliant old CPU type compatibility
  • Little Endian guest support for dump-guest-memory, virtio and gdbstub
  • Magic page support for -M pseries with PR KVM
  • Improved live migration support (not stable yet!)
  • Freescale:
  • e500 machines now boot into u-boot by default
  • s390:
  • virtio-ccw supports migration
  • support for irqfds on adapter-interrupt enabled virtio-ccw devices
  • gdb server support for software breakpoints and hardware breakpoints (via PER)
  • enable CMMA on supported kernels
  • The s390-ccw bios now supports IPL (boot) from ECKD DASD (CDL, LDL or CMS formatted).
  • SPARC:
  • Improved IOMMU emulation.
  • x86:
  • QEMU now presents version 0x14 for the emulated local APIC, for consistency with KVM and improved compatibility with Mac OS X.
  • More faithful SMBus controller emulation.
  • More faithful CPL (current privilege level) emulation in TCG mode.
  • More faithful MMU emulation in TCG mode, including support for 1GB pages and SMEP/SMAP bugfixes.
  • Support for pinning memory on host NUMA nodes. The existing options "-mem-prealloc", "-mem-path", "-machine mem-merge" and "-machine dump-guest-core" are subsumed by the QOM objects "memory-backend-ram" and "memory-backend-file", and by the "memdev" option of "-numa node". This will be extended to other machines in future releases.
  • Support for memory hotplug using the new "pc-dimm" device and the QOM objects "memory-backend-ram" and "memory-backend-file".
  • New Broadwell CPU model.
  • TCG supports the "check" and "enforce" suboptions of "-cpu".
  • KVM:
  • New "invtsc" (Invariant TSC) CPU feature. When enabled, this will block migration and savevm, so it is not enabled by default on any CPU model. To enable invtsc, the migratable=no flag (supported only by -cpu host, by now) is required. So, invtsc is available only if using: -cpu host,migratable=no,+invtsc.
  • Xtensa:
  • Support for loading uImage, device tree and initrd.
  • Device emulation and assignment:
  • SCSI:
  • Support for MSI and MSI-X in the megasas emulation.
  • PCIe:
  • Basic hot-plug/hot-unplug support for Q35 machine.
  • USB:
  • Full support for USB3 passthrough (including streams).
  • Host USB3 device can be attached to a EHCI (USB 2.0) controller in the guest
  • Support for read-only file-sharing via MTP emulation
  • Support for attaching keyboards and mice to a specific video card (multi-seat).
  • VFIO:
  • Support for RTL8168 NICs.
  • GUI:
  • Many bug fixes for the GTK+ interface.
  • Mouse wheel support for the SDL 2.0 interface.
  • Support for multi-seat in the GTK+ and SDL 2.0 interfaces.
  • Monitor:
  • Ctrl-L (form feed) can be used to clear the screen in the monitor.
  • More commands support command-line completion.
  • New monitor command "info memdev" (with the QMP counterpart "query-memdev").
  • New QMP command "query-acpi-ospm-status" and event "ACPI_DEVICE_OST" provide information from the guest's invocation of the _OST method.
  • Migration:
  • Many fixes to XBZRLE.
  • A new utility, scripts/vmstate-static-checker.py that checks two different QEMU vmstate information files to flag migration-related bugs that may have been introduced. The vmstate information files are produced with the new -dump-vmstate parameter to QEMU.
  • Improved detection of corrupt migration streams.
  • Network:
  • Improved emulation of link auto-negotiation fixes bugs in Mac OS X.
  • More variants of the e1000 NIC are supported (e1000-82540em, e1000-82544gc, e1000-82545em). The default e1000 fails with versions of Mac OS X starting at 10.9, while the new e1000-82545em works with all versions of Mac OS X starting at 10.6.
  • New "vhost-user" backend for -net and -netdev allows connecting with an external process on the same machine.
  • New "l2tpv3" transport is similar to "socket" but uses the standard Ethernet over L2TPv3 protocol. The transport supports all options present in the Linux kernel implementation, and allows QEMU to connect to any Linux host running kernel 3.3+, most routers and network devices as well as other QEMU instances.
  • Block devices in system emulation:
  • virtio-blk dataplane, the threaded virtio-blk implementation introduced in QEMU 1.4, now supports almost all features of the block layer including: image formats, POSIX AIO (aio=threads), I/O throttling, statistics and error recovery (rerror/werror). It also does not require anymore manually setting config-wce=off. It is still considered experimental and is still missing support for long-running jobs (streaming, mirroring, snapshot deletion, backup, etc.).
  • The command-line interface for the threaded virtio-blk backend is now stable and looks like "-object iothread,id=id -device virtio-blk-pci,iothread=id". As in 2.0, this interface allows a M:N threading model. The old interface ("-device virtio-blk-pci,x-data-plane=on") is still present for backwards compatibility.
  • The option "top" to the "block-commit" QMP command is now optional, serving as a witness of support for active commit.
  • The new "change-backing-file" QMP command modifies the backing filename of a block device, as well as serving as a witness of a new optional "backing-file" option to "block-stream" and "block-commit".
  • "block-mirror" has a new optional replaces argument to move the target into the position of an existing block driver state node on completion. This can be used to repair broken quorum devices by replacing a child after block-mirror has synchronized it. The command also allows specifying the node-name for the mirror target.
  • Xen PV disks now support the discard operation.
  • Various:
  • Non-contiguous host CPUs can be assigned to a single NUMA node. Commas in the CPU list have to be escaped, as in "-numa node,cpus=0-3,,4-7"
  • The VNC server has been enhanced to be able to operate in a differnt resolution than the guest surface. This finally fixes the operation if the guest surface width is not dividable by 16.
  • Block devices and tools:
  • Filenames can be JSON objects preceded by "json:", for example json:{'driver':'raw','file.filename':'test.img'}. This new syntax can be used in the file property for -drive, but also in qemu-io, qemu-img or backing file names.
  • Zero writes by the guest can now be automatically translated to write zero requests. (drive option detect-zeroes)
  • curl: The new sslverify option allows to use images over https with a self-signed certificate. Also some bugs were fixed which could lead to hangs with a slow connection.
  • iSCSI: The driver has been enhanced to cope with SCSI BUSY conditions and reads of big unallocated areas have been heavily improved. To avoid issues due to severe bugs in older libiscsi versions and to support BUSY handling the minimum required libiscsi version has been bumped to 1.9.0.
  • nfs: A new option to set the readahead size was added (requires libnfs >= 1.9.4).
  • quorum: The rewrite-corrupted option allows to automatically correct corrupted copies of the image.
  • vmdk: Support for compressed (streamOptimized) VMDK images as conversion targets.
  • TCG:
  • Improvement to AArch64, Alpha, ia64, MIPS, S390 and SPARC backends.
  • ABIv2 support for PowerPC
  • Tracing:
  • Support for enabling multiple trace backends using for example "--enable-trace-backends=simple,ftrace" on the configure command line.
  • User-mode emulation:
  • --enable-uname-release configure parameter has been removed
  • Improved support for FreeBSD.
  • Support for opening /proc/self/exe and /proc/self/cmdline
  • Support ARM HWCAP2 flags
  • Fixes in getrusage, wait4, uname, sched_getaffinity, settimeofday and epoll syscalls
  • New target ppc64le-linux-user, for little-endian Power platforms.
  • Build dependencies:
  • The minimum required version of libiscsi was increased from 1.4.0 to 1.9.0; note that the libiscsi maintainers don't recommend versions before 1.8.0 for production use. Debian stable is the only recent distribution that has a version of libiscsi that is older than 1.9.0. Unless --enable-libiscsi is explicitly passed to the configure script, QEMU will be built without iSCSI initiator support if the installed version of the libiscsi is too old.
  • Known issues:
  • The long-standing issue requiring configuration with --disable-coroutine-pool on Win32 is finally fixed.

New in version 2.1.1 (September 11th, 2014)

  • All targets:
  • qdev properties of type hex8 and hex32 used to accept hexadecimal values not prefixed with "0x"; the prefix is mandatory starting with this version. These properties are: iobase, membase, io_base for all devices that support the properties; vram_size for sysbus-g364 and SUNW,tcx; version for sb16 and iommu; ctl_iobase and data_iobase for fw_cfg; readback for debugcon; elcr_addr and elcr_mask for i8259.
  • PCI addresses can still be addressed with a pair of hexadecimal device and function without a "0x" prefix.
  • -kernel, -initrd and -append are now aliases for suboptions of -machine (for example -machine kernel=foo), and as such they are also available with -readconfig.
  • PCI-to-PCI bridges are supported [...]
  • PCI emulation includes a standard hot-plug controller [...]
  • The coroutine backend can now be configured using configure --with-coroutine=.... A new coroutine backend sigaltstack is available for platforms that don't support the default ucontext backend.
  • Last but not least: the SDL user interface now uses the new QEMU icon.
  • ARM:
  • The syborg machine type has been removed since the Symbian Virtual Platform is no longer relevant with the disbanding of Symbian.
  • A device tree can be passed to the kernel using -dtb option (or alternatively -machine dtb=...).
  • New 'nuri' and 'smdkc210' models of Samsung Exynos4210 based devboards.
  • New 'highbank' model of the Calxeda Highbank.
  • New 'vexpress-a15' model of the Versatile Express Cortex-A15.
  • PowerPC:
  • The Bamboo machine now works with TCG, before only KVM was able to execute 440 code.
  • Pseries handles PCI, allowing for virtio devices with -M pseries.
  • Pseries works with PR KVM allowing for -M pseries -enable-kvm to work on G5s.
  • We can now emulate e500mc cores, but no e500mc based board is emulated yet. You need to use -M mpc8544ds and a special guest kernel.
  • Timers on ppc405 now work and don't segfault QEMU.
  • S/390:
  • Added support to -kernel to allow booting of ELF binaries.
  • Fixed -kernel to allow booting of newer guest kernels.
  • Devices can now be hotplug add'ed (remove is not there yet).
  • Rebooting a virtual machine now works.
  • SPARC:
  • Added interrupt controller and support of vector interrupts.
  • Fixed handling 32 bit instructions on a sparc64 CPU.
  • Fixed block load instructions regression happened in 1.0 release.
  • Fixed BCD mask in m48t59 emulation, so that Solaris 2.5.1 doesn't hang on sun4m emulation when day of month >21.
  • Fixed initrd loading in qemu-system-sparc64.
  • x86:
  • NMIs are correctly injected through the LAPIC (rather than sent directly to the guest CPU) and respect the LINT1 mask, thus fixing kdump.
  • The -rtc-td-hack option is now available as a qdev property (-global mc146818rtc.lost_tick_policy=slew) and as such can be specified in a -readconfig configuration file.
  • When the system is suspended to RAM, QEMU will now stop executing the guest until a wakeup event occurs. Implemented wakeup events include key presses, mouse button presses, RTC alarm, ACPI timer expiration, serial console input (off by default; enable with -global isa-serial.wakeup=1), and the system_wakeup monitor command.
  • KVM can optionally use kernel-based emulation of the local APIC, IOAPIC, i8259 PIC and i8254 PIT. This is supported with the -machine ...,kernel_irqchip=on command-line option. MSI is not supported yet when using the kernel_irqchip option.
  • Emulation of a PC System Flash device. The feature is enabled by adding a pflash drive. This feature is not supported when KVM is enabled. See Features/PC System Flash for more information.
  • KVM guests support Hyper-V enlightenments. These are enabled by the -cpu features hv_spinlocks, hv_relaxed and hv_vapic.
  • Device emulation:
  • The virtio-scsi device is now supported by QEMU. The guest driver will be supported in Linux starting at version 3.4.
  • QEMU now includes experimental support for USB 3.0 (xHCI).
  • Various improvement on the floppy emulation, most notably media change has been fixed
  • Audio devices:
  • Audio devices can now use volume control capabilities exposed by the PulseAudio and Spice backends. (Note: all audio devices do not expose their volume control unless --enable-mixemu is turned on).
  • Block devices:
  • QEMU's NBD client implementation and the qemu-nbd server both fully support asynchronous I/O.
  • The rbd block driver supports the discard operation now
  • The vpc block driver supports the Fixed Disk subformat of VHD images now
  • The new QMP command transaction can be used to perform a set of multiple snapshots atomically, rolling back to the original images if there is a problem along the way. See Features/SnapshotsMultipleDevices for more information.
  • The new monitor command block_stream lets guest copy data from the backing file to the current image while the guest is running. This lets users enables quick provisioning of new virtual machines using shared remote storage, and lets the guest transition incrementally to fast local storage. An alternative to streaming is the copy-on-read option of the -drive command-line option, which only transfers data when the guest needs it.
  • An experimental extension of the qcow2 file format has been introduced. With the implementation as of QEMU 1.1, the most important addition is zero clusters, which allows image streaming and copy-on-read to leave images sparse if the backing file they are copying from is sparse. In order to enable the extension, use qemu-img create -f qcow2 -o compat=1.1 for creating the image. Note that older versions of QEMU won't be able to read such images.
  • I/O throttling is experimentally supported using the new -drive options bps/bps_rd/bps_wr/iops/iops_rd/iops_wr. It is expected to work with virtio-blk and IDE harddisks, but may lead to hangs when used with CD-ROM or floppy emulation or other devices.
  • qemu-io supports new options to enable tracing and to choose a cache modes
  • Network devices:
  • QEMU supports a new type of network device, bridge (used with -net bridge or -netdev bridge). The new type is similar to tap, but uses a helper program instead of a script to attach the device to a bridge. The helper program can then be installed as setuid. The helper program supports a simple ACL and configuration mechanism, see the commit message and feature page for documentation.
  • Live Migration, Save/Restore:
  • Live migration (or save/restore) from QEMU releases prior to 0.13 to QEMU 1.1 is not supported.
  • Live migration supports IPv6. IPv6 addresses can be expressed as tcp:host:port. Brackets around a numeric host address are required if a port is also specified, otherwise they can be omitted.
  • Guest agent:
  • qemu-ga has been ported to Windows.
  • Interfaces added for suspending guests to disk/ram, and retrieving information about network interfaces
  • Interfaces for filesystem freeze have been hardened, and no longer depend on guest agent runtime state to determine whether a system is currently frozen.
  • An easier to use reset mechanism has been added: guest-sync-delimited.
  • Host support:
  • ARM hosts are now supported again (they were broken in 1.0).
  • Sockets and SLIRP on Windows hosts was broken in 0.14 and works again.
  • 64-bit Windows hosts are now supported.
  • User-mode emulation:
  • User-mode emulation can provide some information from the /proc filesystem.
  • On 64-bit hosts user-mode emulation now defaults to reserving 0xf7000000 bytes of address space for the guest. This significantly reduces the likelihood of QEMU having to fail a guest mmap() request when there is still memory available. This reservation can be overridden with the -R command line option.
  • Testing:
  • A make check target has been implemented and runs some quick sanity tests
  • qemu-iotests, which was previously hosted in an external git repository, has been merged into the QEMU source tree
  • Build dependencies:
  • Building QEMU requires glib 2.12 on POSIX systems, and glib 2.20 on Win32 systems.

New in version 2.1.0 (August 1st, 2014)

  • System emulation:
  • Incompatible changes:
  • The 82573L NIC was incorrectly treated as an 8254xx model. It no longer works correctly on either Linux (3.14.*) or Windows 7 and has been removed.
  • On x86, migration from QEMU 1.7 to QEMU 2.0 was broken if the guest had PCI bridges or for some number of CPUs (12, 13, 14, 54, 55, 56, 97, 98, 99, 139, 140) are the only ones). QEMU 2.1 fixes this, so that migration from QEMU 1.7 to QEMU 2.1 should always work. However, the fix breaks the following scenarios instead:
  • migration from QEMU 2.0 to QEMU 2.1 with PCI bridges and machine types pc-i440fx-1.7/pc-i440fx-2.0
  • migration from QEMU 2.0 to QEMU 2.1 with the aforementioned number of CPUs and machine type pc-i440fx-1.7
  • Future incompatible changes:
  • Three options are using different names on the command line and in configuration file. In particular:
  • The "acpi" configuration file section matches command-line option "acpitable";
  • The "boot-opts" configuration file section matches command-line option "boot";
  • The "smp-opts" configuration file section matches command-line option "smp".
  • Starting with QEMU xyz.jkl, -readconfig will standardize on the name for the command line option.
  • ARM:
  • Firmware can be passed to the vexpress machine via -bios.
  • Improvements to Allwinner SoC emulation.
  • AArch64 TCG system emulation support.
  • AArch64 SHA and Crypto instruction support.
  • LM32:
  • Support for semihosting.
  • Microblaze:
  • Support for u-boot initrd images.
  • MIPS:
  • Support for KVM in the Malta board.
  • PowerPC:
  • IBM:
  • Support for VFIO (with guest-side IOMMU) on pSeries.
  • Support for emulation of decimal number instructions.
  • Support for PAPR compliant old CPU type compatibility
  • Little Endian guest support for dump-guest-memory, virtio and gdbstub
  • Magic page support for -M pseries with PR KVM
  • Improved live migration support (not stable yet!)
  • Freescale:
  • e500 machines now boot into u-boot by default
  • s390:
  • virtio-ccw supports migration
  • support for irqfds on adapter-interrupt enabled virtio-ccw devices
  • gdb server support for software breakpoints and hardware breakpoints (via PER)
  • enable CMMA on supported kernels
  • The s390-ccw bios now supports IPL (boot) from ECKD DASD (CDL, LDL or CMS formatted).
  • SPARC:
  • Improved IOMMU emulation.
  • x86:
  • QEMU now presents version 0x14 for the emulated local APIC, for consistency with KVM and improved compatibility with Mac OS X.
  • More faithful SMBus controller emulation.
  • More faithful CPL (current privilege level) emulation in TCG mode.
  • More faithful MMU emulation in TCG mode, including support for 1GB pages and SMEP/SMAP bugfixes.
  • Support for pinning memory on host NUMA nodes. The existing options "-mem-prealloc", "-mem-path", "-machine mem-merge" and "-machine dump-guest-core" are subsumed by the QOM objects "memory-backend-ram" and "memory-backend-file", and by the "memdev" option of "-numa node". This will be extended to other machines in future releases.
  • Support for memory hotplug using the new "pc-dimm" device and the QOM objects "memory-backend-ram" and "memory-backend-file".
  • New Broadwell CPU model.
  • TCG supports the "check" and "enforce" suboptions of "-cpu".
  • KVM:
  • New "invtsc" (Invariant TSC) CPU feature. When enabled, this will block migration and savevm, so it is not enabled by default on any CPU model. To enable invtsc, the migratable=no flag (supported only by -cpu host, by now) is required. So, invtsc is available only if using: -cpu host,migratable=no,+invtsc.
  • Xen:
  • Xtensa:
  • Support for loading uImage, device tree and initrd.
  • Device emulation and assignment
  • SCSI
  • Support for MSI and MSI-X in the megasas emulation.
  • PCIe:
  • Basic hot-plug/hot-unplug support for Q35 machine.
  • USB:
  • Full support for USB3 passthrough (including streams).
  • Host USB3 device can be attached to a EHCI (USB 2.0) controller in the guest
  • Support for read-only file-sharing via MTP emulation
  • Support for attaching keyboards and mice to a specific video card (multi-seat).
  • VFIO:
  • Support for RTL8168 NICs.
  • GUI:
  • Many bug fixes for the GTK+ interface.
  • Mouse wheel support for the SDL 2.0 interface.
  • Support for multi-seat in the GTK+ and SDL 2.0 interfaces.
  • Monitor:
  • Ctrl-L (form feed) can be used to clear the screen in the monitor.
  • More commands support command-line completion.
  • New monitor command "info memdev" (with the QMP counterpart "query-memdev").
  • New QMP command "query-acpi-ospm-status" and event "ACPI_DEVICE_OST" provide information from the guest's invocation of the _OST method.
  • Migration:
  • Many fixes to XBZRLE.
  • A new utility, scripts/vmstate-static-checker.py that checks two different QEMU vmstate information files to flag migration-related bugs that may have been introduced. The vmstate information files are produced with the new -dump-vmstate parameter to QEMU.
  • Improved detection of corrupt migration streams.
  • Network:
  • Improved emulation of link auto-negotiation fixes bugs in Mac OS X.
  • More variants of the e1000 NIC are supported (e1000-82540em, e1000-82544gc, e1000-82545em). The default e1000 fails with versions of Mac OS X starting at 10.9, while the new e1000-82545em works with all versions of Mac OS X starting at 10.6.
  • New "vhost-user" backend for -net and -netdev allows connecting with an external process on the same machine.
  • New "l2tpv3" transport is similar to "socket" but uses the standard Ethernet over L2TPv3 protocol. The transport supports all options present in the Linux kernel implementation, and allows QEMU to connect to any Linux host running kernel 3.3+, most routers and network devices as well as other QEMU instances.
  • Block devices in system emulation:
  • virtio-blk dataplane, the threaded virtio-blk implementation introduced in QEMU 1.4, now supports almost all features of the block layer including: image formats, POSIX AIO (aio=threads), I/O throttling, statistics and error recovery (rerror/werror). It also does not require anymore manually setting config-wce=off. It is still considered experimental and is still missing support for long-running jobs (streaming, mirroring, snapshot deletion, backup, etc.).
  • The command-line interface for the threaded virtio-blk backend is now stable and looks like "-object iothread,id=id -device virtio-blk-pci,iothread=id". As in 2.0, this interface allows a M:N threading model. The old interface ("-device virtio-blk-pci,x-data-plane=on") is still present for backwards compatibility.
  • The option "top" to the "block-commit" QMP command is now optional, serving as a witness of support for active commit.
  • The new "change-backing-file" QMP command modifies the backing filename of a block device, as well as serving as a witness of a new optional "backing-file" option to "block-stream" and "block-commit".
  • "block-mirror" has a new optional replaces argument to move the target into the position of an existing block driver state node on completion. This can be used to repair broken quorum devices by replacing a child after block-mirror has synchronized it. The command also allows specifying the node-name for the mirror target.
  • Xen PV disks now support the discard operation.
  • Various:
  • Non-contiguous host CPUs can be assigned to a single NUMA node. Commas in the CPU list have to be escaped, as in "-numa node,cpus=0-3,,4-7"
  • The VNC server has been enhanced to be able to operate in a differnt resolution than the guest surface. This finally fixes the operation if the guest surface width is not dividable by 16.
  • Block devices and tools:
  • Filenames can be JSON objects preceded by "json:", for example json:{'driver':'raw','file.filename':'test.img'}. This new syntax can be used in the file property for -drive, but also in qemu-io, qemu-img or backing file names.
  • Zero writes by the guest can now be automatically translated to write zero requests. (drive option detect-zeroes)
  • curl: The new sslverify option allows to use images over https with a self-signed certificate. Also some bugs were fixed which could lead to hangs with a slow connection.
  • iSCSI: The driver has been enhanced to cope with SCSI BUSY conditions and reads of big unallocated areas have been heavily improved. To avoid issues due to severe bugs in older libiscsi versions and to support BUSY handling the minimum required libiscsi version has been bumped to 1.9.0.
  • nfs: A new option to set the readahead size was added (requires libnfs >= 1.9.4).
  • quorum: The rewrite-corrupted option allows to automatically correct corrupted copies of the image.
  • vmdk: Support for compressed (streamOptimized) VMDK images as conversion targets.
  • TCG:
  • Improvement to AArch64, Alpha, ia64, MIPS, S390 and SPARC backends.
  • ABIv2 support for PowerPC
  • Tracing:
  • Support for enabling multiple trace backends using for example "--enable-trace-backends=simple,ftrace" on the configure command line.
  • User-mode emulation:
  • --enable-uname-release configure parameter has been removed
  • Improved support for FreeBSD.
  • Support for opening /proc/self/exe and /proc/self/cmdline
  • Support ARM HWCAP2 flags
  • Fixes in getrusage, wait4, uname, sched_getaffinity, settimeofday and epoll syscalls
  • New target ppc64le-linux-user, for little-endian Power platforms.
  • Build dependencies:
  • The minimum required version of libiscsi was increased from 1.4.0 to 1.9.0; note that the libiscsi maintainers don't recommend versions before 1.8.0 for production use. Debian stable is the only recent distribution that has a version of libiscsi that is older than 1.9.0. Unless --enable-libiscsi is explicitly passed to the configure script, QEMU will be built without iSCSI initiator support if the installed version of the libiscsi is too old.

New in version 2.1.0 RC2 (July 16th, 2014)

  • 5a73480: Update version for v2.1.0-rc2 release (Peter Maydell)
  • 82172b7: tests/Makefile: Only run vhost-user-test on Linux (Peter Maydell)
  • 27e2778: sPAPR/IOMMU: Fix TCE entry permission (Gavin Shan)
  • f92f5da: spapr: Enable use of huge pages (Alexey Kardashevskiy)
  • 658fa66: spapr: Move RMA memory region registration code (Alexey Kardashevskiy)
  • e938ba0: ppc: memory: Replace memory_region_init_ram with
  • memory_region_allocate_system_memory (Shreyas B. Prabhu)
  • 063cac5: target-ppc: Fix number of threads per core limit (Alexey Kardashevskiy)
  • b545f63: linux-user: use TARGET_SA_ONSTACK in get_sigframe (Riku Voipio)
  • 5b2ffbe: virtio-blk: dataplane: notify guest as a batch (Ming Lei)
  • e926d9b: virtio-blk: data-plane: fix save/set .complete_request in start (Ming Lei)
  • a1abf40: linux-aio: Fix laio resource leak (Gonglei)
  • 2dd08df: alloca one extra byte sockets (Joakim Tjernlund)
  • 33a29b5: linux-user: handle AF_PACKET sockaddrs in target_to_host_sockaddr (Joakim Tjernlund)
  • 451aaf6: qemu-user: Impl. setsockopt(SO_BINDTODEVICE) (Joakim Tjernlund)
  • 27a0782: SIOCGIFINDEX: fix typo (Joakim Tjernlund)
  • 0e16297: libqos: Fix PC PCI endianness glitches (Andreas Färber)
  • 7497bce: serial-pci: remove memory regions from BAR before destroying them (Paolo Bonzini)
  • 1f4e6a0: virtio-scsi: fix with -M pc-i440fx-2.0 (Paolo Bonzini)
  • f702e62: serial: change retry logic to avoid concurrency (Kirill Batuzov)
  • 7b3621f: qemu-char: fix deadlock with "-monitor pty" (Paolo Bonzini)
  • 58ac321: ide: Treat read/write beyond end as invalid (Markus Armbruster)
  • 3c2daac: virtio-blk: Treat read/write beyond end as invalid (Markus Armbruster)
  • 42e38c1: virtio-blk: Bypass error action and I/O accounting on invalid r/w (Markus Armbruster)
  • d0e1437: virtio-blk: Factor common checks out of virtio_blk_handle_read/write() (Markus Armbruster)
  • 58f423f: dma-helpers: Fix too long qiov (Kevin Wolf)
  • 80504dc: qtest: fix vhost-user-test compilation with old GLib (Nikolay Nikolaev)
  • b886424: tests: Fix unterminated string output visitor enum human string (AndreasFärber)
  • acfb23a: AioContext: do not rely on aio_poll(ctx, true) result to end a loop (PaoloBonzini)
  • f897bf7: virtio-blk: embed VirtQueueElement in VirtIOBlockReq (Stefan Hajnoczi)
  • 869d66a: virtio-blk: avoid g_slice_new0() for VirtIOBlockReq and VirtQueueElement(Stefan Hajnoczi)
  • abd7642: dataplane: do not free VirtQueueElement in vring_push() (Stefan Hajnoczi)
  • 0a21ea3: virtio-blk: avoid dataplane VirtIOBlockReq early free (Stefan Hajnoczi)
  • 8eb029c: block: Assert qiov length matches request length (Kevin Wolf)
  • f06ee3d: qed: Make qiov match request size until backing file EOF (Kevin Wolf)
  • 44deba5: qcow2: Make qiov match request size until backing file EOF (Kevin Wolf)
  • 33f461e: block: Make qiov match the request size until EOF (Kevin Wolf)
  • 2039511: scsi: Report error when lun number is in use (Fam Zheng)
  • 85ad623: s390x/kvm: synchronize guest floating point registers (Jason J. Herne)
  • 13d5412: mtp: linux guest detection fix. (Gerd Hoffmann)
  • e72b59f: ui/gtk: Restore keyboard focus after Page change (John Snow)
  • d16136d: cirrus: Fix host CPU blits (Benjamin Herrenschmidt)
  • e8ee4b6: cirrus: Fix build of debug code (Benjamin Herrenschmidt)
  • f61d82c: cirrus_vga: adding sanity check for vram size (Gonglei)
  • b1ea7b7: spice: auth fixes (Gerd Hoffmann)
  • 0a58991: qtest: fix vhost-user-test compilation with old GLib (Nikolay Nikolaev)
  • 13c0cba: mc146818rtc: register the clock reset notifier on the right clock (Paolo Bonzini)
  • b7bf8f5: oslib-posix: Fix new compiler error with -Wclobbered (Stefan Weil)
  • 8248c36: target-i386: Add "kvmclock-stable-bit" feature bit name (Eduardo Habkost)
  • 3b463a3: Enforce stack protector usage (Miroslav Rezanina)
  • 9e99c5f: tests: Fix unterminated string output visitor enum human string (Andreas Färber)
  • 30e5210: watchdog: fix deadlock with -watchdog-action pause (Paolo Bonzini)
  • f7f1524: mips_malta: Catch kernels linked at wrong address (James Hogan)
  • fbdb1d9: mips_malta: Remove incorrect KVM T&E references (James Hogan)
  • 0e928b1: mips/kvm: Disable FPU on reset with KVM (James Hogan)
  • 0ceb849: AioContext: speed up aio_notify (Paolo Bonzini)
  • ef508f4: test-aio: fix GSource-based timer test (Paolo Bonzini)
  • 87f68d3: block: drop aio functions that operate on the main AioContext (Paolo Bonzini)
  • b47ec2c: block: prefer aio_poll to qemu_aio_wait (Paolo Bonzini)
  • 01fb270: block: Fix bdrv_is_allocated() return value (Kevin Wolf)
  • d40593d: block/backup: Fix hang for unaligned image size (Kevin Wolf)
  • 0a2672b: mips/kvm: Init EBase to correct KSEG0 (James Hogan)

New in version 1.7.1 (March 26th, 2014)

  • System emulation:
  • All targets:
  • qdev properties of type hex8 and hex32 used to accept hexadecimal values not prefixed with "0x"; the prefix is mandatory starting with this version. These properties are: iobase, membase, io_base for all devices that support the properties; vram_size for sysbus-g364 and SUNW,tcx; version for sb16 and iommu; ctl_iobase and data_iobase for fw_cfg; readback for debugcon; elcr_addr and elcr_mask for i8259.
  • PCI addresses can still be addressed with a pair of hexadecimal device and function without a "0x" prefix.
  • -kernel, -initrd and -append are now aliases for suboptions of -machine (for example -machine kernel=foo), and as such they are also available with -readconfig.
  • PCI-to-PCI bridges are supported [...]
  • PCI emulation includes a standard hot-plug controller [...]
  • The coroutine backend can now be configured using configure --with-coroutine=.... A new coroutine backend sigaltstack is available for platforms that don't support the default ucontext backend.
  • Last but not least: the SDL user interface now uses the new QEMU icon.
  • ARM:
  • The syborg machine type has been removed since the Symbian Virtual Platform is no longer relevant with the disbanding of Symbian.
  • A device tree can be passed to the kernel using -dtb option (or alternatively -machine dtb=...).
  • New 'nuri' and 'smdkc210' models of Samsung Exynos4210 based devboards.
  • New 'highbank' model of the Calxeda Highbank.
  • New 'vexpress-a15' model of the Versatile Express Cortex-A15.
  • PowerPC:
  • The Bamboo machine now works with TCG, before only KVM was able to execute 440 code.
  • Pseries handles PCI, allowing for virtio devices with -M pseries.
  • Pseries works with PR KVM allowing for -M pseries -enable-kvm to work on G5s.
  • We can now emulate e500mc cores, but no e500mc based board is emulated yet. You need to use -M mpc8544ds and a special guest kernel.
  • Timers on ppc405 now work and don't segfault QEMU.
  • S/390:
  • Added support to -kernel to allow booting of ELF binaries.
  • Fixed -kernel to allow booting of newer guest kernels.
  • Devices can now be hotplug add'ed (remove is not there yet).
  • Rebooting a virtual machine now works.
  • SPARC:
  • Added interrupt controller and support of vector interrupts.
  • Fixed handling 32 bit instructions on a sparc64 CPU.
  • Fixed block load instructions regression happened in 1.0 release.
  • Fixed BCD mask in m48t59 emulation, so that Solaris 2.5.1 doesn't hang on sun4m emulation when day of month >21.
  • Fixed initrd loading in qemu-system-sparc64.
  • x86:
  • NMIs are correctly injected through the LAPIC (rather than sent directly to the guest CPU) and respect the LINT1 mask, thus fixing kdump.
  • The -rtc-td-hack option is now available as a qdev property (-global mc146818rtc.lost_tick_policy=slew) and as such can be specified in a -readconfig configuration file.
  • When the system is suspended to RAM, QEMU will now stop executing the guest until a wakeup event occurs. Implemented wakeup events include key presses, mouse button presses, RTC alarm, ACPI timer expiration, serial console input (off by default; enable with -global isa-serial.wakeup=1), and the system_wakeup monitor command.
  • KVM can optionally use kernel-based emulation of the local APIC, IOAPIC, i8259 PIC and i8254 PIT. This is supported with the -machine ...,kernel_irqchip=on command-line option. MSI is not supported yet when using the kernel_irqchip option.
  • Emulation of a PC System Flash device. The feature is enabled by adding a pflash drive. This feature is not supported when KVM is enabled. See Features/PC System Flash for more information.
  • KVM guests support Hyper-V enlightenments. These are enabled by the -cpu features hv_spinlocks, hv_relaxed and hv_vapic.
  • Device emulation:
  • The virtio-scsi device is now supported by QEMU. The guest driver will be supported in Linux starting at version 3.4.
  • QEMU now includes experimental support for USB 3.0 (xHCI).
  • Various improvement on the floppy emulation, most notably media change has been fixed
  • Audio devices:
  • Audio devices can now use volume control capabilities exposed by the PulseAudio and Spice backends. (Note: all audio devices do not expose their volume control unless --enable-mixemu is turned on).
  • Block devices:
  • QEMU's NBD client implementation and the qemu-nbd server both fully support asynchronous I/O.
  • The rbd block driver supports the discard operation now
  • The vpc block driver supports the Fixed Disk subformat of VHD images now
  • The new QMP command transaction can be used to perform a set of multiple snapshots atomically, rolling back to the original images if there is a problem along the way. See Features/SnapshotsMultipleDevices for more information.
  • The new monitor command block_stream lets guest copy data from the backing file to the current image while the guest is running. This lets users enables quick provisioning of new virtual machines using shared remote storage, and lets the guest transition incrementally to fast local storage. An alternative to streaming is the copy-on-read option of the -drive command-line option, which only transfers data when the guest needs it.
  • An experimental extension of the qcow2 file format has been introduced. With the implementation as of QEMU 1.1, the most important addition is zero clusters, which allows image streaming and copy-on-read to leave images sparse if the backing file they are copying from is sparse. In order to enable the extension, use qemu-img create -f qcow2 -o compat=1.1 for creating the image. Note that older versions of QEMU won't be able to read such images.
  • I/O throttling is experimentally supported using the new -drive options bps/bps_rd/bps_wr/iops/iops_rd/iops_wr. It is expected to work with virtio-blk and IDE harddisks, but may lead to hangs when used with CD-ROM or floppy emulation or other devices.
  • qemu-io supports new options to enable tracing and to choose a cache modes
  • Network devices:
  • QEMU supports a new type of network device, bridge (used with -net bridge or -netdev bridge). The new type is similar to tap, but uses a helper program instead of a script to attach the device to a bridge. The helper program can then be installed as setuid. The helper program supports a simple ACL and configuration mechanism, see the commit message and feature page for documentation.
  • Live Migration, Save/Restore:
  • Live migration (or save/restore) from QEMU releases prior to 0.13 to QEMU 1.1 is not supported.
  • Live migration supports IPv6. IPv6 addresses can be expressed as tcp:host:port. Brackets around a numeric host address are required if a port is also specified, otherwise they can be omitted.
  • Guest agent:
  • qemu-ga has been ported to Windows.
  • Interfaces added for suspending guests to disk/ram, and retrieving information about network interfaces
  • Interfaces for filesystem freeze have been hardened, and no longer depend on guest agent runtime state to determine whether a system is currently frozen.
  • An easier to use reset mechanism has been added: guest-sync-delimited.
  • Host support:
  • ARM hosts are now supported again (they were broken in 1.0).
  • Sockets and SLIRP on Windows hosts was broken in 0.14 and works again.
  • 64-bit Windows hosts are now supported.
  • User-mode emulation:
  • User-mode emulation can provide some information from the /proc filesystem.
  • On 64-bit hosts user-mode emulation now defaults to reserving 0xf7000000 bytes of address space for the guest. This significantly reduces the likelihood of QEMU having to fail a guest mmap() request when there is still memory available. This reservation can be overridden with the -R command line option.
  • Testing:
  • A make check target has been implemented and runs some quick sanity tests
  • qemu-iotests, which was previously hosted in an external git repository, has been merged into the QEMU source tree
  • Build dependencies:
  • Building QEMU requires glib 2.12 on POSIX systems, and glib 2.20 on Win32 systems.

New in version 2.0.0 RC0 (March 14th, 2014)

  • System emulation:
  • Incompatible changes to bus names:
  • The root PCI bus on the pSeries machine is now called "pci.0" rather than "pci".
  • ARM:
  • Support for "-M virt", a board type that only uses virtio devices
  • Support for "-cpu host" when running under KVM
  • Support for new 32-bit mode ARMv8 instructions in TCG
  • Support for AArch64 disassembling (requires a C++ compiler to be installed on the host)
  • Support for AArch64 user-mode emulation
  • Initial support for KVM on AArch64 systems (some features such as migration are not yet implemented)
  • Support for the Canon PowerShot A1100 DIGIC board using "-M canon-a1100"
  • Support for the allwinner-a10-based board "-M cubieboard"
  • Support for flow control in the Cadence UART
  • Power:
  • Support for Altivec 2.07 and VSX instructions when running under TCG
  • Support for ISA 2.06 "load/store quadword instructions", "divide extended instructions" and "floating-point test instructions" when running under TCG
  • Prep is not anymore (incorrectly) included in qemu-system-ppcemb
  • Improved support for "-nodefaults" on the pSeries machine. Display devices created with "-device VGA" will be handled correctly in the device tree.
  • s390:
  • Support for adapter interrupts in virtio-cc2
  • SPARC:
  • Support for Sun CG3 framebuffer with the Sun4m machine. The CG3 framebuffer can be requested with "-vga cg3".
  • Support for the CASA compare-and-swap instruction in TCG.
  • x86:
  • On the Q35 machine, the HPET interrupt can now be attached to GSIs 16-23, like on real hardware.
  • The Q35 machine now supports CPU hotplug.
  • Two flash chips can be specified using the "-drive if=pflash" or "-pflash" options twice.
  • Memory layout has changed slightly; to improve performance, the PIIX4 machine ("-M pc") now has 3GB of low memory instead of 3.5GB if the guest has more than 3.5GB of memory. Similarly, the Q35 machine ("-M q35") now has 2GB instead of 2.75GB of low memory if the guest has more than 2.75GB of overall memory.
  • Support for migration of Intel MPX registers.
  • The Apple SMC device is now exposed in the ACPI tables.
  • PCI hotplug now supports devices behind a bridge (only for bridges not added by hotplug; hot-plugged bridges can still use the PCI Standard Hot-Plug Controller).
  • Support for the Hyper-V reference time counter via the "hv-time" suboption of "-cpu". This can improve performance of Windows guests substantially for applications that do many floating-point or SIMD operations. (Requires KVM and Linux 3.14).
  • The distributed qemupciserial.inf file now allows installing multiport PCI serial devices on Windows too.
  • KVM:
  • x2apic is now enabled by default when KVM is in use.
  • Xen:
  • PCI passthrough of devices with a ROM now works.
  • Xtensa:
  • added support for ML605 and KC705 FPGA boards.
  • Cache-related opcodes now correctly check privilege level/memory accessibility.
  • Device emulation:
  • SCSI:
  • the SCSI layer can offload the WRITE SAME command to the host storage. This is supported on XFS file systems, raw devices, and iSCSI targets.
  • SCSI disks can report a port WWN and port index, to make them look more like "real" SAS disks
  • USB:
  • support for suspend-to-RAM in the XHCI controller
  • support for Microsoft descriptors, to make Windows use remote suspend by default.
  • GUI:
  • Windows hosts support keyboard translation in the GTK+ interface
  • Support for SDL 2.0.
  • VNC:
  • setting the password via monitor command will not enable password auth as side effect any more. Use "qemu -vnc ${display},password" on the command line to enable password authentication.
  • GTK+:
  • Support for mouse wheel.
  • Monitor:
  • New HMP command cpu-add for CPU hotplug
  • New QMP commands object-add and object-del for generic object hotplug (enables virtio-rng hotplug)
  • New HMP commands object_add and object_del for generic object hotplug
  • Improved command-line completion for device_add and device_del (as well as the new commands object_add and object_del)
  • dump-guest-memory can produce kdump compressed format.
  • Migration:
  • Various fixes for migration with qcow2 images. Migration with qcow2 images is now reliable.
  • Reduction (or elimination) of guest stalls during migration
  • RDMA migration is now activated with the "rdma:HOST:PORT" syntax (used to be "x-rdma:HOST:PORT")
  • Network:
  • New backend "netmap" on BSD systems
  • Block devices in system emulation:
  • Live snapshot merge (...-commit) can be used to merge the active layer of an image into one of the snapshots
  • Live and offline snapshot merge ("commit") will resize the destination image if necessary.
  • The iSCSI and Gluster backends support snapshot merge.
  • "query-block-stats" provides statistics for all images in the chain of backing files
  • node-name, query-named-block-nodes: external snapshot, resize, change password (???)
  • Experimental support in virtio-blk for M:N threading model: if you specify x-dataplane=on, you can also create I/O threads with "-object iothread" and point virtio-blk devices to the desired iothread with the "x-iothread" property. Properties of the running iothreads can be queried with the QMP command "query-iothreads".
  • Various:
  • -name now supports a "debug-threads" suboption. With this option, QEMU will assign names to each threads in order to simplify debugging. Note that thread names do not constitute a stable API.
  • Improved coverage for "make check".
  • Lots of bugfixes reported by Coverity (mostly for non-x86 guests).
  • Block devices and tools:
  • Network block drivers (curl, iscsi, rbd, ssh, glusterfs) can be built as shared library modules with "--enable-modules" configure option.
  • When the destination of "qemu-img convert" is a raw device, qemu-img can ask the host storage to "discard" it instead of writing zeroes
  • "qemu-img convert" can be passed a "-S 0" option to create a fully allocated image
  • "qemu-img convert" can use hints from the host storage to speed up the transfer
  • "qemu-img convert", "qemu-img create", "qemu-img amend" support multiple occurrences of the "-o" command line option.
  • The libcurl interface had bitrotted and has been fixed.
  • A new "quorum" driver for redundant storage is supported.
  • QEMU is able to operate even if the underlying storage requires the buffer size to be a 4K multiple. This is the case for 4K-native disks (with cache=none or when accessed through iscsi:// URLs) and some raw devices. When this happens, QEMU emulates unaligned accesses using read-modify-write cycles if necessary. On properly configured guests newer than ~2009 there should be no performance penalty.
  • qemu-io supports command editing via readline
  • Pseudo-protocols like blkdebug and blkverify can be nested arbitrarily
  • Improved error messages for many operations
  • QEMU can access NFSv3 shares directly from userspace using libnfs. The share must be configured to allow access from high-numbered ports
  • TCG:
  • Improvements to the TCG optimizer make it produce faster code
  • QEMU can use getauxval to detect the host instruction set for PPC64, ARM, s390
  • QEMU supports generating MOVBE, ANDN, instructions in the x86 backend
  • Support for AArch64 disassembling (requires a C++ compiler to be installed on the host)
  • Tracing:
  • LTTng 2.x is now supported
  • User-mode emulation:
  • support for several more system calls and parameters