QEMU Changelog

New in version 2.3.0 RC2

April 5th, 2015
  • System emulation:
  • Command-line compatibility:
  • Behavior when the three SMP topology options (socket, cores, threads) are specified but don't match the number of VCPUs was changed. In previous versions QEMU silently adjusted the "threads" option to (try to) make the topology match the number of VCPUs, now QEMU will abort when sockets*cores*threads don't match the number of VCPUs.
  • 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".
  • -readconfig will standardize on the name for the command line option.
  • Behavior of automatic calculation of SMP topology when some SMP topology options for -smp are omitted (sockets, cores, threads) will change in the future. If guest ABI needs to be preserved on upgrades while using the SMP topology options, users should either set set all options explicitly (sockets, cores, threads), or omit all of them.
  • Image encryption is fatally flawed, and will be dropped entirely. It'll remain available only in qemu-img, so you can use 'qemu-img convert' to convert encrypted images to uncrypted ones.
  • ARM:
  • When semihosting mode is active, the exit code is passed to the operating system.
  • New option -semihosting-config that supersedes -semihosting. A new suboption target=native forces QEMU to execute semihosting operations even when running under GDB. This helps for targets that do not implement semihosting calls in GDB.
  • The virt board now has a fw_cfg device. It allows use of the boot order options, as well as supporting -kernel/-initrd/-append even when you're using a firmware (-bios/-pflash) and not booting directly to the kernel.
  • The virt board now has a generic PCIe host bridge that uses the pci-host-ecam-generic driver in Linux.
  • Crypto instructions work on big-endian hosts too.
  • Support for emulation of the Netduino 2 boards.
  • The integratorcp board implements CARDIN and WPROT signals correctly.
  • KVM:
  • The virt board supports 32-bit guests on 64-bit hosts
  • MIPS:
  • Support for 5KEc and 5KEf MIPS64r2 processors.
  • Support for M14K and M14Kc MIPS32r2 microMIPS processors.
  • qemu-mips64 uses the 5KEf processor.
  • Many fixes.
  • PowerPC:
  • Pseudo-support for transactional memory extensions; the transaction will fail immediately, but no illegal instruction exception will be generated. This is valid behavior, though of course suboptimal.
  • ioeventfd (including vhost, dataplane, etc.) works for ppc64le hosts.
  • IBM (pSeries):
  • Support for switching VGA endianness at run time (for ppc64le guest support)
  • The PAPR RTC interface supports the RTC_CHANGE event, the -rtc command line option and the date QOM property.
  • Support for EEH RTAS calls.
  • PReP:
  • Improved support for m48t59 NVRAM.
  • s390:
  • PCI bus support (requires KVM).
  • Improvements to TCG support (can run GMP in the guest).
  • Support for reipl (reboot) from different disks for the virtio-ccw machine
  • Note that the bios is now mandatory for virtio-ccw machines!
  • Various fixes and improvements regarding memory accesses
  • Support for autodetection of DASD geometry.
  • The ccw bios is now relocateable, allowing e.g. for bigger ramdisks.
  • Handling of slow SIGP (signal processor) functions has been moved to qemu from kvm.
  • SPARC:
  • Improved support for m48t59 NVRAM (sun4u)
  • Fix Solaris 9 single user mode boot under OpenBIOS (sun4m)
  • Fix Solaris reboot panic under OpenBIOS (sun4m)
  • TriCore:
  • More complete emulation
  • x86:
  • New CPU model IvyBridge.
  • Consistent with the latest Intel microcode, RTM and HLE have been disabled on the Haswell and Broadwell CPU models. (will be reverted before release)
  • Support for defining maximum memory speed in "-smbios type=17" command-line options.
  • KVM:
  • Support for running under valgrind with KVM enabled.
  • Support for the XSAVES feature. The feature is not yet available in any predefined CPU model, but can be enabled with "-cpu host" or "-cpu ...,+xsaves".
  • kvm_stat now supports AArch64.
  • kvm_stat output is prettier.
  • KVM can now be used when QEMU is compiled as an x32 binary. The 4G address width limits the size of the guests that can be run, however.
  • Xen:
  • Support for the ioreq-server API.
  • Xtensa:
  • Device emulation and assignment
  • Audio:
  • Small improvements to the SoundBlaster 16 emulation (which, however, is still very buggy). Some Epic games now work with the "SoundBlaster Clone" setting.
  • SCSI:
  • vhost-scsi supports the bootindex property.
  • TPM:
  • Improved support.
  • VFIO:
  • Support for device request notification, a new feature in Linux 4.0 (FIXME: correct/expand)
  • VGA:
  • The standard VGA (PCI id 1234:1111) is now available on all targets that support PCI; it was missing for example on ARM and SH.
  • GUI:
  • VNC support for multiseat.
  • New query-vnc-servers QMP command, providing more information over query-vnc.
  • SPICE now supports Unix sockets (AF_LOCAL).
  • QEMU (with GTK+, SDL, SPICE, VNC interfaces) directly uses framebuffer data from the guest RAM for most pixel formats. This reduces CPU usage.
  • VNC websockets fixes? (expand/correct)
  • Monitor:
  • Improvements to hotplug error messages.
  • New "human" monitor commands "qom-list", "qom-set", "info qom-tree".
  • Migration:
  • "-incoming defer" can be used to start QEMU in incoming-migration mode, but without actually setting up the connection to the source machine. This makes it possible to set migration capabilities that may affect the incoming connection process.
  • A new "migrate_incoming" command can be used to start an incoming migration after "-incoming defer" was passed on the command line.
  • Commands "info migration" ("human" monitor) and "query-migration" (QMP) now return the "cancelling" state explicitly. Previously, the "cancelling" state was reported as "active". Note that the cancelling state lasts for a fraction of a second and is probably changed to "cancelled" by the time QEMU receives the "info migration", so the effect is mostly theoretical.
  • A JSON description of the migration schema is included, as a debugging aid, at the end of the migration stream.
  • Block devices in system emulation:
  • Support for SD cards on PCI systems, through the new device "sdhci-pci". (will go away before release)
  • QEMU will restrict writes to the first sector when an image is autodetected as a raw image, so that the next time the VM is started it will not be autodetected e.g. as qcow2. To avoid this restriction, start QEMU with an explicit "format=raw" option.
  • virtio-blk SCSI requests (SG_IO) are now handled asynchronously.
  • Support for merging reads in virtio-blk.
  • New monitor command blockdev-backup.
  • Block devices and tools:
  • qcow2 images (compat level 1.1) can now be created and used with a different reference count entry width than 16 bits (refcount_bits option), allowing powers of two from 1 to 64. If you do not intend to use internal snapshots, you can for instance use refcount_bits=1 to reduce disk usage a little. qemu-img amend does not yet support changing this option.
  • Improved support for DMG images.
  • Improved detection of unused partitions in qemu-nbd.
  • Support for optimized WRITE SAME operation on files using the fallocate system call.
  • Better interoperability with other hypervisors on large (>127GB) .vpc images.
  • Guest agent:
  • New commands guest-get-memory-blocks, guest-set-memory-blocks, guest-get-memory-block-info (Linux guests only).
  • New command guest-set-user-password.
  • File commands are supported for Windows guests.
  • User-mode emulation:
  • Support for shmat.
  • Support for SCM_CREDENTIALS.
  • Fixed build on NetBSD/sparc64 and NetBSD/arm.
  • Build dependencies:
  • System emulators (qemu-system-*) and block tools (qemu-img, qemu-io, qemu-nbd) now use "__thread" for thread-local storage on all architectures; Previously they only used it on Windows. If your system does not have native TLS support, you will need GCC 4.3 or newer to compile QEMU (this was already the case for Windows in previous releases). In particular, compiling QEMU on Mac OS X with Apple's GCC 4.2.1 is not supported:
  • on Mac OS X 10.7 or newer, you can use Clang (which should be the default compiler when compiling QEMU on these version)
  • on Mac OS X 10.6 or older, you need to build a newer GCC (Apple doesn't provide GPLv3 compilers) or install a binary from fink, homebrew, MacPorts or a similar distribution.

New in version 2.3.0 RC1 (March 25th, 2015)

  • System emulation:
  • Command-line compatibility:
  • Behavior when the three SMP topology options (socket, cores, threads) are specified but don't match the number of VCPUs was changed. In previous versions QEMU silently adjusted the "threads" option to (try to) make the topology match the number of VCPUs, now QEMU will abort when sockets*cores*threads don't match the number of VCPUs.
  • 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".
  • -readconfig will standardize on the name for the command line option.
  • Behavior of automatic calculation of SMP topology when some SMP topology options for -smp are omitted (sockets, cores, threads) will change in the future. If guest ABI needs to be preserved on upgrades while using the SMP topology options, users should either set set all options explicitly (sockets, cores, threads), or omit all of them.
  • Image encryption is fatally flawed, and will be dropped entirely. It'll remain available only in qemu-img, so you can use 'qemu-img convert' to convert encrypted images to uncrypted ones.
  • ARM:
  • When semihosting mode is active, the exit code is passed to the operating system.
  • New option -semihosting-config that supersedes -semihosting. A new suboption target=native forces QEMU to execute semihosting operations even when running under GDB. This helps for targets that do not implement semihosting calls in GDB.
  • The virt board now has a fw_cfg device. It allows use of the boot order options, as well as supporting -kernel/-initrd/-append even when you're using a firmware (-bios/-pflash) and not booting directly to the kernel.
  • The virt board now has a generic PCIe host bridge that uses the pci-host-ecam-generic driver in Linux.
  • Crypto instructions work on big-endian hosts too.
  • Support for emulation of the Netduino 2 boards.
  • The integratorcp board implements CARDIN and WPROT signals correctly.
  • KVM:
  • The virt board supports 32-bit guests on 64-bit hosts
  • MIPS:
  • Support for 5KEc and 5KEf MIPS64r2 processors.
  • Support for M14K and M14Kc MIPS32r2 microMIPS processors.
  • qemu-mips64 uses the 5KEf processor.
  • Many fixes.
  • PowerPC:
  • Pseudo-support for transactional memory extensions; the transaction will fail immediately, but no illegal instruction exception will be generated. This is valid behavior, though of course suboptimal.
  • ioeventfd (including vhost, dataplane, etc.) works for ppc64le hosts.
  • IBM (pSeries):
  • Support for switching VGA endianness at run time (for ppc64le guest support)
  • The PAPR RTC interface supports the RTC_CHANGE event, the -rtc command line option and the date QOM property.
  • Support for EEH RTAS calls.
  • PReP:
  • Improved support for m48t59 NVRAM.
  • s390:
  • PCI bus support (requires KVM).
  • Improvements to TCG support (can run GMP in the guest).
  • Support for reipl (reboot) from different disks for the virtio-ccw machine
  • Note that the bios is now mandatory for virtio-ccw machines!
  • Various fixes and improvements regarding memory accesses
  • Support for autodetection of DASD geometry.
  • The ccw bios is now relocateable, allowing e.g. for bigger ramdisks.
  • Handling of slow SIGP (signal processor) functions has been moved to qemu from kvm.
  • SPARC:
  • Improved support for m48t59 NVRAM (sun4u)
  • Fix Solaris 9 single user mode boot under OpenBIOS (sun4m)
  • Fix Solaris reboot panic under OpenBIOS (sun4m)
  • TriCore:
  • More complete emulation
  • x86:
  • New CPU model IvyBridge.
  • Consistent with the latest Intel microcode, RTM and HLE have been disabled on the Haswell and Broadwell CPU models. (will be reverted before release)
  • Support for defining maximum memory speed in "-smbios type=17" command-line options.
  • KVM:
  • Support for running under valgrind with KVM enabled.
  • Support for the XSAVES feature. The feature is not yet available in any predefined CPU model, but can be enabled with "-cpu host" or "-cpu ...,+xsaves".
  • kvm_stat now supports AArch64.
  • kvm_stat output is prettier.
  • KVM can now be used when QEMU is compiled as an x32 binary. The 4G address width limits the size of the guests that can be run, however.
  • Xen:
  • Support for the ioreq-server API.
  • Xtensa:
  • Device emulation and assignment
  • Audio:
  • Small improvements to the SoundBlaster 16 emulation (which, however, is still very buggy). Some Epic games now work with the "SoundBlaster Clone" setting.
  • SCSI:
  • vhost-scsi supports the bootindex property.
  • TPM:
  • Improved support.
  • VFIO:
  • Support for device request notification, a new feature in Linux 4.0 (FIXME: correct/expand)
  • VGA:
  • The standard VGA (PCI id 1234:1111) is now available on all targets that support PCI; it was missing for example on ARM and SH.
  • GUI:
  • VNC support for multiseat.
  • New query-vnc-servers QMP command, providing more information over query-vnc.
  • SPICE now supports Unix sockets (AF_LOCAL).
  • QEMU (with GTK+, SDL, SPICE, VNC interfaces) directly uses framebuffer data from the guest RAM for most pixel formats. This reduces CPU usage.
  • VNC websockets fixes? (expand/correct)
  • Monitor:
  • Improvements to hotplug error messages.
  • New "human" monitor commands "qom-list", "qom-set", "info qom-tree".
  • Migration:
  • "-incoming defer" can be used to start QEMU in incoming-migration mode, but without actually setting up the connection to the source machine. This makes it possible to set migration capabilities that may affect the incoming connection process.
  • A new "migrate_incoming" command can be used to start an incoming migration after "-incoming defer" was passed on the command line.
  • Commands "info migration" ("human" monitor) and "query-migration" (QMP) now return the "cancelling" state explicitly. Previously, the "cancelling" state was reported as "active". Note that the cancelling state lasts for a fraction of a second and is probably changed to "cancelled" by the time QEMU receives the "info migration", so the effect is mostly theoretical.
  • A JSON description of the migration schema is included, as a debugging aid, at the end of the migration stream.
  • Block devices in system emulation:
  • Support for SD cards on PCI systems, through the new device "sdhci-pci". (will go away before release)
  • QEMU will restrict writes to the first sector when an image is autodetected as a raw image, so that the next time the VM is started it will not be autodetected e.g. as qcow2. To avoid this restriction, start QEMU with an explicit "format=raw" option.
  • virtio-blk SCSI requests (SG_IO) are now handled asynchronously.
  • Support for merging reads in virtio-blk.
  • New monitor command blockdev-backup.
  • Block devices and tools:
  • qcow2 images (compat level 1.1) can now be created and used with a different reference count entry width than 16 bits (refcount_bits option), allowing powers of two from 1 to 64. If you do not intend to use internal snapshots, you can for instance use refcount_bits=1 to reduce disk usage a little. qemu-img amend does not yet support changing this option.
  • Improved support for DMG images.
  • Improved detection of unused partitions in qemu-nbd.
  • Support for optimized WRITE SAME operation on files using the fallocate system call.
  • Better interoperability with other hypervisors on large (>127GB) .vpc images.
  • Guest agent:
  • New commands guest-get-memory-blocks, guest-set-memory-blocks, guest-get-memory-block-info (Linux guests only).
  • New command guest-set-user-password.
  • File commands are supported for Windows guests.
  • User-mode emulation:
  • Support for shmat.
  • Support for SCM_CREDENTIALS.
  • Fixed build on NetBSD/sparc64 and NetBSD/arm.
  • Build dependencies:
  • System emulators (qemu-system-*) and block tools (qemu-img, qemu-io, qemu-nbd) now use "__thread" for thread-local storage on all architectures; Previously they only used it on Windows. If your system does not have native TLS support, you will need GCC 4.3 or newer to compile QEMU (this was already the case for Windows in previous releases). In particular, compiling QEMU on Mac OS X with Apple's GCC 4.2.1 is not supported:
  • on Mac OS X 10.7 or newer, you can use Clang (which should be the default compiler when compiling QEMU on these version)
  • on Mac OS X 10.6 or older, you need to build a newer GCC (Apple doesn't provide GPLv3 compilers) or install a binary from fink, homebrew, MacPorts or a similar distribution.

New in version 2.3.0 RC0 (March 19th, 2015)

  • System emulation:
  • Command-line compatibility:
  • Behavior when the three SMP topology options (socket, cores, threads) are specified but don't match the number of VCPUs was changed. In previous versions QEMU silently adjusted the "threads" option to (try to) make the topology match the number of VCPUs, now QEMU will abort when sockets*cores*threads don't match the number of VCPUs.
  • 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".
  • -readconfig will standardize on the name for the command line option.
  • Behavior of automatic calculation of SMP topology when some SMP topology options for -smp are omitted (sockets, cores, threads) will change in the future. If guest ABI needs to be preserved on upgrades while using the SMP topology options, users should either set set all options explicitly (sockets, cores, threads), or omit all of them.
  • Image encryption is fatally flawed, and will be dropped entirely. It'll remain available only in qemu-img, so you can use 'qemu-img convert' to convert encrypted images to uncrypted ones.
  • ARM:
  • When semihosting mode is active, the exit code is passed to the operating system.
  • New option -semihosting-config that supersedes -semihosting. A new suboption target=native forces QEMU to execute semihosting operations even when running under GDB. This helps for targets that do not implement semihosting calls in GDB.
  • The virt board now has a fw_cfg device. It allows use of the boot order options, as well as supporting -kernel/-initrd/-append even when you're using a firmware (-bios/-pflash) and not booting directly to the kernel.
  • The virt board now has a generic PCIe host bridge that uses the pci-host-ecam-generic driver in Linux.
  • Crypto instructions work on big-endian hosts too.
  • Support for emulation of the Netduino 2 boards.
  • The integratorcp board implements CARDIN and WPROT signals correctly.
  • KVM:
  • The virt board supports 32-bit guests on 64-bit hosts
  • MIPS:
  • Support for 5KEc and 5KEf MIPS64r2 processors.
  • Support for M14K and M14Kc MIPS32r2 microMIPS processors.
  • qemu-mips64 uses the 5KEf processor.
  • Many fixes.
  • PowerPC:
  • Pseudo-support for transactional memory extensions; the transaction will fail immediately, but no illegal instruction exception will be generated. This is valid behavior, though of course suboptimal.
  • IBM (pSeries):
  • Support for switching VGA endianness at run time (for ppc64le guest support)
  • The PAPR RTC interface supports the RTC_CHANGE event, the -rtc command line option and the date QOM property.
  • Support for EEH RTAS calls.
  • PReP:
  • Improved support for m48t59 NVRAM.
  • s390:
  • PCI bus support (requires KVM).
  • Improvements to TCG support (can run GMP in the guest).
  • Support for reipl (reboot) from different disks for the virtio-ccw machine
  • Note that the bios is now mandatory for virtio-ccw machines!
  • Various fixes and improvements regarding memory accesses
  • Support for autodetection of DASD geometry.
  • The ccw bios is now relocateable, allowing e.g. for bigger ramdisks.
  • Handling of slow SIGP (signal processor) functions has been moved to qemu from kvm.
  • SPARC:
  • Improved support for m48t59 NVRAM.
  • TriCore:
  • More complete emulation
  • x86:
  • New CPU model IvyBridge.
  • Consistent with the latest Intel microcode, RTM and HLE have been disabled on the Haswell and Broadwell CPU models.
  • KVM:
  • Support for running under valgrind with KVM enabled.
  • Support for the XSAVES feature. The feature is not yet available in any predefined CPU model, but can be enabled with "-cpu host" or "-cpu ...,+xsaves".
  • kvm_stat now supports AArch64.
  • kvm_stat output is prettier.
  • Xen:
  • Support for the ioreq-server API.
  • Audio:
  • Small improvements to the SoundBlaster 16 emulation (which, however, is still very buggy). Some Epic games now work with the "SoundBlaster Clone" setting.
  • SCSI:
  • vhost-scsi supports the bootindex property.
  • TPM:
  • Improved support.
  • VFIO:
  • Support for device request notification, a new feature in Linux 4.0 (FIXME: correct/expand)
  • VGA:
  • The standard VGA (PCI id 1234:1111) is now available on all targets that support PCI; it was missing for example on ARM and SH.
  • Character devices:
  • GUI:
  • VNC support for multiseat.
  • New query-vnc-servers QMP command, providing more information over query-vnc.
  • SPICE now supports Unix sockets (AF_LOCAL).
  • QEMU (with GTK+, SDL, SPICE, VNC interfaces) directly uses framebuffer data from the guest RAM for most pixel formats. This reduces CPU usage.
  • Monitor:
  • Improvements to hotplug error messages.
  • New "human" monitor commands "qom-list", "qom-set", "info qom-tree".
  • Migration:
  • "-incoming defer" can be used to start QEMU in incoming-migration mode, but without actually setting up the connection to the source machine. This makes it possible to set migration capabilities that may affect the incoming connection process.
  • A new "migrate_incoming" command can be used to start an incoming migration after "-incoming defer" was passed on the command line.
  • Commands "info migration" ("human" monitor) and "query-migration" (QMP) now return the "cancelling" state explicitly. Previously, the "cancelling" state was reported as "active". Note that the cancelling state lasts for a fraction of a second and is probably changed to "cancelled" by the time QEMU receives the "info migration", so the effect is mostly theoretical.
  • A JSON description of the migration schema is included, as a debugging aid, at the end of the migration stream.
  • Network:
  • Block devices in system emulation:
  • Support for SD cards on PCI systems, through the new device "sdhci-pci".
  • QEMU will restrict writes to the first sector when an image is autodetected as a raw image, so that the next time the VM is started it will not be autodetected e.g. as qcow2. To avoid this restriction, start QEMU with an explicit "format=raw" option.
  • virtio-blk SCSI requests (SG_IO) are now handled asynchronously.
  • Support for merging reads in virtio-blk.
  • New command blockdev-backup.
  • Block devices and tools:
  • qcow2 images (compat level 1.1) can now be created and used with a different reference count entry width than 16 bits (refcount_bits option), allowing powers of two from 1 to 64. If you do not intend to use internal snapshots, you can for instance use refcount_bits=1 to reduce disk usage a little. qemu-img amend does not yet support changing this option.
  • Improved support for DMG images.
  • Support for optimized WRITE SAME operation on files using the fallocate system call.
  • Better interoperability with other hypervisors on large (>127GB) .vpc images.
  • TCG:
  • Tracing:
  • Guest agent:
  • New commands guest-get-memory-blocks, guest-set-memory-blocks, guest-get-memory-block-info (Linux guests only).
  • New command guest-set-user-password.
  • File commands are supported for Windows guests.
  • User-mode emulation:
  • Support for shmat.
  • Support for SCM_CREDENTIALS.
  • Fixed build on NetBSD/sparc64 and NetBSD/arm.

New in version 2.2.1 (March 11th, 2015)

  • 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 (CD-ROM emulation known broken).
  • 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").
  • GUI:
  • Monitor:
  • The "info pcmcia" command was removed. PCMCIA hotplug was never implemented, and thus the command could only return static information.
  • Migration:
  • 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.
  • Source image cache mode can be set for qemu-img check, convert and rebase
  • 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 (December 10th, 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.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

New in version 1.7.0 (November 28th, 2013)

  • Device emulation:
  • Audio:
  • The HDA device emulation now includes a mixer by default. Previously this had to be enabled with the configure argument "--enable-mixemu" when building QEMU.
  • Audio will work correctly on systems without OSS (/dev/dsp). On previous versions, those systems needed special arguments to "configure" for audio to work out of the box.
  • Audio honors the QEMU_AUDIO_TIMER_PERIOD environment variable and has less CPU utilization by default than previous versions.
  • Block devices:
  • Support for the LSI 53C810 SCSI HBA, which unlike the 895A is supported on some very old Windows NT versions.
  • Device assignment:
  • VFIO now supports setting CPU affinity on MSI interrupts.
  • VFIO can now reset assigned devices much more reliably using either PCI function-level reset (FLR), power management, or a reset (done by the kernel) of the parent bridge.
  • Several improvements to the reliability of using option ROMs for devices that are assigned with VFIO.
  • USB:
  • Performance and functionality improvements for USB 3.0.
  • MicroBlaze:
  • Can now specify an initrd on the command line.
  • PowerPC:
  • PowerPC now supports the dump-guest-memory command.
  • s390x:
  • The "nmi" command will trigger a crash dump from kdump, using a RESTART interrupt.
  • The SCLP line-mode console ("operating system messages") can be accessed with "-device sclplmconsole".
  • x86:
  • ACPI tables can be generated by QEMU and can be used by firmware directly. This will in the future enable new features without modifications of all firmware components (SeaBIOS, OVMF, CoreBoot)
  • Initial support for supporting more than 1TB of RAM (but firmware does not yet support this).
  • Xen HVM domains can now resume from suspend-to-RAM (S3) state.
  • Monitor:
  • Subcommands (like "info block") can now autocomplete their options.
  • Help for a single subcommand can be printed with a monitor command such as "help info block".
  • New commands "blockdev-snapshot-internal-sync", "blockdev-snapshot-delete-internal-sync" improve support for internal qcow2 snapshot.
  • New command "blockdev-add" provides a QMP interface for block device hotplug.
  • Block devices:
  • The throttling algorithm has been rewritten; the new code is more robust, and supports configuration of separate limits for sustained I/O vs. I/O bursts
  • Migration:
  • Migration was broken from QEMU

New in version 1.7 RC2 (November 26th, 2013)

  • Device emulation:
  • Audio:
  • The HDA device emulation now includes a mixer by default. Previously this had to be enabled with the configure argument "--enable-mixemu" when building QEMU.
  • Audio will work correctly on systems without OSS (/dev/dsp). On previous versions, those systems needed special arguments to "configure" for audio to work out of the box.
  • Audio honors the QEMU_AUDIO_TIMER_PERIOD environment variable and has less CPU utilization by default than previous versions.
  • Block devices:
  • Support for the LSI 53C810 SCSI HBA, which unlike the 895A is supported on some very old Windows NT versions.
  • Device assignment:
  • VFIO now supports setting CPU affinity on MSI interrupts.
  • VFIO can now reset assigned devices much more reliably using either PCI function-level reset (FLR), power management, or a reset (done by the kernel) of the parent bridge.
  • Several improvements to the reliability of using option ROMs for devices that are assigned with VFIO.
  • USB:
  • Performance and functionality improvements for USB 3.0.
  • MicroBlaze:
  • Can now specify an initrd on the command line.
  • PowerPC:
  • PowerPC now supports the dump-guest-memory command.
  • s390x:
  • The "nmi" command will trigger a crash dump from kdump, using a RESTART interrupt.
  • The SCLP line-mode console ("operating system messages") can be accessed with "-device sclplmconsole".
  • x86:
  • ACPI tables can be generated by QEMU and can be used by firmware directly. This will in the future enable new features without modifications of all firmware components (SeaBIOS, OVMF, CoreBoot)
  • Initial support for supporting more than 1TB of RAM (but firmware does not yet support this).
  • Xen HVM domains can now resume from suspend-to-RAM (S3) state.
  • Monitor:
  • Subcommands (like "info block") can now autocomplete their options.
  • Help for a single subcommand can be printed with a monitor command such as "help info block".
  • New commands "blockdev-snapshot-internal-sync", "blockdev-snapshot-delete-internal-sync" improve support for internal qcow2 snapshot.
  • New command "blockdev-add" provides a QMP interface for block device hotplug.
  • Block devices:
  • The throttling algorithm has been rewritten; the new code is more robust, and supports configuration of separate limits for sustained I/O vs. I/O bursts
  • Migration:
  • Migration was broken from QEMU

New in version 1.6.1 (October 10th, 2013)

  • System emulation:
  • Block devices:
  • New device "nvme" provides a PCI device that implements the NVMe standard.
  • Fix for a possible data loss on crashes with IDE disks (due to mishandling of FLUSH requests)
  • Device assignment:
  • Legacy PCI assignment supports CPU affinity for MSI interrupts.
  • USB:
  • The XHCI (USB 3.0) controller supports live migration.
  • ARM:
  • The 32-bit ARMv8 LDA/STL instructions for load-acquire/store-release are supported (only with -cpu any); the remainder of the new v8 instructions will follow in a future release.
  • The vexpress-a9 and vexpress-a15 boards have experimental support for virtio devices via a virtio-mmio transport. Note that the virtio command lines used with x86 systems won't work as they will create PCI virtio devices; use the devices "virtio-blk-device", "virtio-net-device", etc instead. Note that this functionality may change in future releases.
  • The -initrd option now accepts ramdisks with a U-Boot header.
  • A model of the Calxeda ECX-2000 / Midway system is now supported ("midway").
  • PPC:
  • Mac OS X guests supported (10.2-10.4 for PPC, 10.4 for PPC64)
  • pSeries guests support live migration and savevm.
  • s390x:
  • If the kernel supports it, virtio-ccw supports ioeventfd and vhost when running on KVM.
  • The dump-guest-memory command is supported.
  • SPARC:
  • Sun4c and Sun4d architectures and related CPUs were not fully implemented and have been removed.
  • 24-bit display mode works
  • x86:
  • Firmware can be exposed to the guest as a flash device (using -pflash) also when running on KVM.
  • In addition to the "xenfv" machine type, which is kept for backwards compatibility, Xen can now use the pc machine type (including versioned machine types) using "-M pc -machine accel=xen". Note that using PV-on-HVM drivers requires "-M pc -machine accel=xen -device xen-platform".
  • Conroe, Penryn and Nehalem CPUs have had their CPUID values fixed
  • "-M isapc" now works on KVM too.
  • -pflash can be used with KVM too.
  • pvpanic device can now be enabled and disabled. Default has been changed to "disabled" (from "enabled" in 1.5). To enable, add flag -device pvpanic. pvpanic is a paravirtualized device for reporting guest panic events to management tools.
  • Monitor:
  • info block now returns different output for HMP. HMP is not a programmatic interface, please use QMP if you need a stable programmatic interface.
  • "-serial mon:stdio" will now trap signals in the same way that "-nographic" has always done. This means that ^C will be passed to the guest.
  • Block devices:
  • The "whitelist" that lets packagers specify which block device formats are supported by QEMU will now allow specifying formats that QEMU should only allow when opened as read-only. The --block-drv-whitelist configure option is thus split in two new options, --block-drv-rw-whitelist and --block-drv-ro-whitelist.
  • Support for a new block device background job. Started by drive-backup, it will backup a disk's content to a new file. Unlike drive-mirror, the new file will include the source disk's content at the time the backup job was started. Atomic backup of multiple disks is supported using the "transaction" QMP command.
  • Several bugfixes for VMDK and curl backends.
  • Support for thin provisioning ("discard") on qcow2 images. When a device is opened with "-drive ...,discard=on", discard requests from the guest are forwarded to the underlying file system or block device as is the case for "raw" format images.
  • Live Migration:
  • Initial support for live migration over RDMA using "migrate x-rdma:HOST:PORT".
  • Support for auto-convergence ("CPU stunning")
  • User interface:
  • BSDs now support the GTK+ user interface.
  • The GTK+ interface supports -full-screen and -no-quit
  • The Cocoa user interface now supports Mac OS X 10.6 better.
  • User-mode emulation:
  • Support for /proc/self has been extnded to include /proc/$$ (where $$ is the result of the getpid() system call).
  • The longstanding problem where fork() would typically fail "Invalid argument" for some guest architectures (most notably i386) has been fixed.
  • Guest agent:
  • On Win32, the state directory will be placed under CSIDL_COMMON_APPDATA, which typically is "C:\Documents and Settings\All Users\Application Data".
  • Host support:
  • linux-user does not support anymore *at system calls on glibc versions older than 2.5.
  • New TCG target for aarch64.
  • Build ARM, Microblaze and PPC targets will now use a bundled libfdt if the library is not available on the host.
  • Support for TUN/TAP on Mac OS X (http://tuntaposx.sourceforge.net)
  • It is now possible to build an installer for QEMU on Windows (make all installer). For this feature, NSIS must be installed on the build host. NSIS is also available for cross development.

New in version 1.6.0 (August 16th, 2013)

  • 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 1.5.2 (July 26th, 2013)

  • 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 1.5.1 (June 27th, 2013)

  • 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 1.5.0 (May 21st, 2013)

  • 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 1.4.0 (February 18th, 2013)

  • 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 1.3.1 (January 29th, 2013)

  • QMP:
  • The sendkey monitor command is now available via QMP.
  • All targets:
  • QEMU can now use the Linux VFIO driver to assign PCI devices to a virtual machine.
  • The bus master configuration bit for PCI devices is now emulated. PCI devices cannot anymore perform DMA without setting the bit before. This may break firmware that wasn't tested on real hardware.
  • ARM:
  • MIPS:
  • Loongson Multimedia Instructions are now implemented.
  • MIPS32/64 ASE DSP Instructions are now implemented.
  • x86:
  • The TSC frequency can be larger than 2.147 GHz.
  • Configuration files do not support anymore the cpudef section.
  • TCG (emulation) supports the SMEP (Supervisor Mode Execution Prevention) and SMAP (Supervisor Mode Access Prevention) features of newer x86 processors.
  • CPUID/models?
  • The "cpudef" config file section is now deprecated and will be removed in v1.4.
  • New CPU models: "Haswell" (new features: fma, pcid, movbe, fsgsbase, bmi1, hle, avx2, smep, bmi2, erms, invpcid, rtm) and "Opteron_G5" (new features: tbm, f16c, fma)
  • Added Intel Q35 chipset as a new machine type, '--machine q35'. Adds PCIe support. Requires an updated SeaBIOS (bios.bin), and '-acpitable file=/seabios-path/q35-acpi-dsdt.aml' to run.
  • Xtensa:
  • Single precision floating point instructions are now implemented.
  • Device emulation:
  • Emulation of the MC146818 real-time clock (used on PC and several other boards) does not wake up QEMU anymore every second to update the clock.
  • USB3 has been vastly improved, including support for USB mass storage devices and MSI/MSI-X support for the XHCI controller.
  • USB redirection now supports live migration.
  • Several bugs in the AHCI controller were fixed to support recent Windows versions.
  • ivshmem now has a "use64" property which will make the ivshmem driver register a 64-bit memory BAR.
  • New paravirtualized hardware random number generator device, VirtIORNG.
  • Network devices:
  • Some problems were fixed leading to bad receive performance of E1000 and Xen network cards.
  • Block devices:
  • qemu-img now can output information in JSON format using "qemu-img info --output=json".
  • Glusterfs volumes can be accessed with "gluster://" URIs for "-drive" and similar options. Optionally the transport can also be specified, as in "gluster+tcp://" (other supported transports are "unix" and "rdma").
  • Options on the QMP streaming command direct the job to pause on encountering errors, or to ignore them altogether.
  • A new block job is supported: live block commit (also known as "snapshot deletion") moves data from an image to another in the backing file chain. With the current implementation of QEMU 1.3, the "source" image may not be the active one.
  • A new block job is supported: live disk mirroring (also known as "storage migration") moves data from an image to another. A new command "block-job-complete" is used to switch the VM to use the destination image exclusively.
  • Block jobs can now be paused and resumed from the monitor.
  • NBD block devices can now be specified using URI syntax. "nbd://" defaults to TCP transport, while "nbd+tcp://" and "nbd+unix://" can be used (similar to Gluster) to specify it. URI syntax simplifies access to named exports; the export name is simply the "path" component of the URI.
  • NBD connections to Unix sockets support relative paths.
  • QEMU embeds an NBD server, accessible via the monitor. The NBD server allows live access to the image seen by the VM. Note that the embedded server uses "named exports", which QEMU can access using the "nbd://host:port/name" syntax.
  • Windows hosts support asynchronous disk I/O.
  • Live Migration, Save/Restore:
  • The "stop" and "cont" commands have new semantics on the destination machine during migration. Previously, the outcome depended on whether the commands were issued before or after the source connected to the destination QEMU: in particular, "cont" would fail if issued before connection, and "undo" the effect of the -S command-line option if issued after. Starting from this version, the effect of "stop" and "cont" will always take place at the end of migration (overriding the presence or absence of the -S option) and "cont" will never fail. This change should be transparent, since the old behavior was usually subject to a race condition.
  • The monitor now remains responsive during incoming migration. The new NBD server is also available during incoming migration.
  • USB:
  • Spice:
  • QEMU will only send changed screen content to the Spice client when running in legacy VGA mode.
  • Seamless migration support.
  • Composite QXL commands (for linux guests).
  • Multiple monitors on a single pci device.
  • Arbitrary resolution support.
  • Device based monitor configuration notification (for future drivers).
  • various bug fixes and assertion removals in favor of a guest_bug mode.
  • require spice-server >= 0.12.0
  • KVM:
  • QEMU now supports "old-style" PCI device assignment, which was the last missing feature from the qemu-kvm fork. Despite some remaining minor differences between qemu-kvm and QEMU, it is possible to switch from qemu-kvm to QEMU as soon as your guests can be rebooted. Live migration from qemu-kvm 1.2 to QEMU 1.3 is not supported, but can be enabled easily by downstream distributions who want to switch their packages from qemu-kvm to QEMU.
  • Xen:
  • QEMU can now be used to live-migrate Xen domains.
  • SLIRP:
  • SLIRP's TFTP server has improved performance, can transmit files bigger than 32 MB, and supports the block size option.
  • Guest agent:
  • The guest agent will now store the state file in /var/run by default.
  • Host support:
  • SPARCv7 and v8 support was removed.
  • Build dependencies:
  • QEMU can now be built with Clang.
  • QEMU now uses pixman. QEMU configure will detect and use a system pixman if the development headers are available (they should be available for most recent Linux distros). As a fallback, we provide an internal copy of the pixman sources which will be used if there is no set of system pixman libraries. Compiling these will require autoconf.
  • Compiling QEMU with Spice support now requires spice-server 0.12 or better.

New in version 1.3.0 (December 4th, 2012)

  • QMP:
  • The sendkey monitor command is now available via QMP.
  • All targets:
  • QEMU can now use the Linux VFIO driver to assign PCI devices to a virtual machine.
  • The bus master configuration bit for PCI devices is now emulated. PCI devices cannot anymore perform DMA without setting the bit before. This may break firmware that wasn't tested on real hardware.
  • ARM:
  • MIPS:
  • Loongson Multimedia Instructions are now implemented.
  • MIPS32/64 ASE DSP Instructions are now implemented.
  • x86:
  • The TSC frequency can be larger than 2.147 GHz.
  • Configuration files do not support anymore the cpudef section.
  • TCG (emulation) supports the SMEP (Supervisor Mode Execution Prevention) and SMAP (Supervisor Mode Access Prevention) features of newer x86 processors.
  • CPUID/models?
  • The "cpudef" config file section is now deprecated and will be removed in v1.4.
  • New CPU models: "Haswell" (new features: fma, pcid, movbe, fsgsbase, bmi1, hle, avx2, smep, bmi2, erms, invpcid, rtm) and "Opteron_G5" (new features: tbm, f16c, fma)
  • Xtensa:
  • Single precision floating point instructions are now implemented.
  • Device emulation:
  • Emulation of the MC146818 real-time clock (used on PC and several other boards) does not wake up QEMU anymore every second to update the clock.
  • USB3 has been vastly improved, including support for USB mass storage devices and MSI/MSI-X support for the XHCI controller.
  • USB redirection now supports live migration.
  • Several bugs in the AHCI controller were fixed to support recent Windows versions.
  • ivshmem now has a "use64" property which will make the ivshmem driver register a 64-bit memory BAR.
  • New paravirtualized hardware random number generator device, VirtIORNG.
  • Network devices:
  • Some problems were fixed leading to bad receive performance of E1000 and Xen network cards.
  • Block devices:
  • qemu-img now can output information in JSON format using "qemu-img info --output=json".
  • Glusterfs volumes can be accessed with "gluster://" URIs for "-drive" and similar options. Optionally the transport can also be specified, as in "gluster+tcp://" (other supported transports are "unix" and "rdma").
  • Options on the QMP streaming command direct the job to pause on encountering errors, or to ignore them altogether.
  • A new block job is supported: live block commit (also known as "snapshot deletion") moves data from an image to another in the backing file chain. With the current implementation of QEMU 1.3, the "source" image may not be the active one.
  • A new block job is supported: live disk mirroring (also known as "storage migration") moves data from an image to another. A new command "block-job-complete" is used to switch the VM to use the destination image exclusively.
  • Block jobs can now be paused and resumed from the monitor.
  • NBD block devices can now be specified using URI syntax. "nbd://" defaults to TCP transport, while "nbd+tcp://" and "nbd+unix://" can be used (similar to Gluster) to specify it. URI syntax simplifies access to named exports; the export name is simply the "path" component of the URI.
  • NBD connections to Unix sockets support relative paths.
  • QEMU embeds an NBD server, accessible via the monitor. The NBD server allows live access to the image seen by the VM. Note that the embedded server uses "named exports", which QEMU can access using the "nbd://host:port/name" syntax.
  • Windows hosts support asynchronous disk I/O.
  • Live Migration, Save/Restore:
  • The "stop" and "cont" commands have new semantics on the destination machine during migration. Previously, the outcome depended on whether the commands were issued before or after the source connected to the destination QEMU: in particular, "cont" would fail if issued before connection, and "undo" the effect of the -S command-line option if issued after. Starting from this version, the effect of "stop" and "cont" will always take place at the end of migration (overriding the presence or absence of the -S option) and "cont" will never fail. This change should be transparent, since the old behavior was usually subject to a race condition.
  • The monitor now remains responsive during incoming migration. The new NBD server is also available during incoming migration.
  • USB:
  • Spice:
  • QEMU will only send changed screen content to the Spice client when running in legacy VGA mode.
  • Seamless migration support.
  • Composite QXL commands (for linux guests).
  • Multiple monitors on a single pci device.
  • Arbitrary resolution support.
  • Device based monitor configuration notification (for future drivers).
  • various bug fixes and assertion removals in favor of a guest_bug mode.
  • require spice-server >= 0.12.0
  • KVM:
  • QEMU now supports "old-style" PCI device assignment, which was the last missing feature from the qemu-kvm fork. Despite some remaining minor differences between qemu-kvm and QEMU, it is possible to switch from qemu-kvm to QEMU as soon as your guests can be rebooted. Live migration from qemu-kvm 1.2 to QEMU 1.3 is not supported, but can be enabled easily by downstream distributions who want to switch their packages from qemu-kvm to QEMU.
  • Xen:
  • QEMU can now be used to live-migrate Xen domains.
  • SLIRP:
  • SLIRP's TFTP server has improved performance, can transmit files bigger than 32 MB, and supports the block size option.
  • Guest agent:
  • The guest agent will now store the state file in /var/run by default.
  • Host support:
  • SPARCv7 and v8 support was removed.
  • Build dependencies:
  • QEMU can now be built with Clang.
  • QEMU now uses pixman. QEMU configure will detect and use a system pixman if the development headers are available (they should be available for most recent Linux distros). As a fallback, we provide an internal copy of the pixman sources which will be used if there is no set of system pixman libraries. Compiling these will require autoconf.
  • Compiling QEMU with Spice support now requires spice-server 0.12 or better.

New in version 1.3.0 RC0 (November 20th, 2012)

  • QMP:
  • The sendkey monitor command is now available via QMP.
  • All targets:
  • QEMU can now use the Linux VFIO driver to assign PCI devices to a virtual machine.
  • ARM:
  • MIPS:
  • Loongson Multimedia Instructions are now implemented.
  • x86:
  • The TSC frequency can be larger than 2.147 GHz.
  • Configuration files do not support anymore the cpudef section.
  • TCG (emulation) supports the SMEP (Supervisor Mode Execution Prevention) and SMAP (Supervisor Mode Access Prevention) features of newer x86 processors.
  • CPUID/models?
  • Xtensa:
  • Single precision floating point instructions are now implemented.
  • Device emulation:
  • Emulation of the MC146818 real-time clock (used on PC and several other boards) does not wake up QEMU anymore every second to update the clock.
  • USB3 has been vastly improved, including support for USB mass storage devices and MSI/MSI-X support for the XHCI controller.
  • USB redirection now supports live migration.
  • Several bugs in the AHCI controller were fixed to support recent Windows versions.
  • ivshmem now has a "use64" property which will make the ivshmem driver register a 64-bit memory BAR.
  • Network devices:
  • Some problems were fixed leading to bad receive performance of E1000 and Xen network cards.
  • Block devices:
  • qemu-img now can output information in JSON format using "qemu-img info --output=json".
  • Glusterfs volumes can be accessed with "gluster://" URIs for "-drive" and similar options. Optionally the transport can also be specified, as in "gluster+tcp://" (other supported transports are "unix" and "rdma").
  • Options on the QMP streaming command direct the job to pause on encountering errors, or to ignore them altogether.
  • A new block job is supported: live block commit (also known as "snapshot deletion") moves data from an image to another in the backing file chain. With the current implementation of QEMU 1.3, the "source" image may not be the active one.
  • A new block job is supported: live disk mirroring (also known as "storage migration") moves data from an image to another. A new command "block-job-complete" is used to switch the VM to use the destination image exclusively.
  • Block jobs can now be paused and resumed from the monitor.
  • NBD block devices can now be specified using URI syntax. "nbd://" defaults to TCP transport, while "nbd+tcp://" and "nbd+unix://" can be used (similar to Gluster) to specify it. URI syntax simplifies access to named exports; the export name is simply the "path" component of the URI.
  • NBD connections to Unix sockets support relative paths.
  • QEMU embeds an NBD server, accessible via the monitor. The NBD server allows live access to the image seen by the VM. Note that the embedded server uses "named exports", which QEMU can access using the "nbd://host:port/name" syntax.
  • Windows hosts support asynchronous disk I/O.
  • Live Migration, Save/Restore:
  • The "stop" and "cont" commands have new semantics on the destination machine during migration. Previously, the outcome depended on whether the commands were issued before or after the source connected to the destination QEMU: in particular, "cont" would fail if issued before connection, and "undo" the effect of the -S command-line option if issued after. Starting from this version, the effect of "stop" and "cont" will always take place at the end of migration (overriding the presence or absence of the -S option) and "cont" will never fail. This change should be transparent, since the old behavior was usually subject to a race condition.
  • The monitor now remains responsive during incoming migration. The new NBD server is also available during incoming migration.
  • USB:
  • Spice:
  • QEMU will only send changed screen content to the Spice client when running in legacy VGA mode.
  • Seamless migration support.
  • Composite QXL commands (for linux guests).
  • Multiple monitors on a single pci device.
  • Arbitrary resolution support.
  • Device based monitor configuration notification (for future drivers).
  • various bug fixes and assertion removals in favor of a guest_bug mode.
  • require spice-server >= 0.12.0
  • KVM:
  • QEMU now supports "old-style" PCI device assignment, which was the last missing feature from the qemu-kvm fork. Despite some remaining minor differences between qemu-kvm and QEMU, it is possible to switch from qemu-kvm to QEMU as soon as your guests can be rebooted. Live migration from qemu-kvm 1.2 to QEMU 1.3 is not supported, but can be enabled easily by downstream distributions who want to switch their packages from qemu-kvm to QEMU.
  • Xen:
  • QEMU can now be used to live-migrate Xen domains.
  • SLIRP:
  • SLIRP's TFTP server has improved performance, can transmit files bigger than 32 MB, and supports the block size option.
  • Guest agent:
  • The guest agent will now store the state file in /var/run by default.
  • Host support:
  • SPARCv7 and v8 support was removed.
  • Build dependencies:
  • QEMU can now be built with Clang.
  • QEMU now uses pixman. QEMU configure will detect and use a system pixman if the development headers are available (they should be available for most recent Linux distros). As a fallback, we provide an internal copy of the pixman sources which will be used if there is no set of system pixman libraries. Compiling these will require autoconf.
  • Compiling QEMU with Spice support now requires spice-server 0.12 or better.

New in version 1.2.1 (November 20th, 2012)

  • All targets:
  • ... QMP error changes go here ...
  • File descriptors can be passed to qemu using the new add-fd/remove-fd QMP commands. It is intended that they can be used in any place where QEMU would expect a file name. This is ensured for disk images, support in other parts of QEMU may still be inconsistent.
  • ARM:
  • LPAE (large physical address extensions) are now supported for the Cortex-A15 CPU; you can now run a vexpress-a15 model with more than 4GB of RAM
  • The new monitor command "dump-guest-memory" creates an ELF dump of the guest memory.
  • New board model: i.MX31
  • PowerPC:
  • The pSeries target correctly creates segment size device tree nodes (fixes odd bugs with HV vs PR KVM)
  • The pSeries target implements an IOMMU.
  • ... pSeries VGA, USB, etc.? ...
  • The E500 target generates its device tree dynamically
  • New mpc8544ds -machine option: dumpdtb. This allows to dump the dynamically generated device tree to a file.
  • Emulation for e5500 cores
  • PC87312 Super I/O chipset emulation for PReP, adding parallel port to prep machine
  • x86:
  • Support for PCI passthrough is available for Xen fully-virtualized domains.
  • The new monitor command "dump-guest-memory" creates an ELF dump of the guest memory.
  • When using KVM, the in-kernel APIC supports MSI.
  • Also when using KVM, new PV EOI feature improves performance when both host and guest run linux 3.6-rc1 and up. To enable, add +kvm_pv_eoi to -cpu option, e.g.
  • -cpu kvm64,+kvm_pv_eoi
  • The "cpudef" config file section is being deprecated and may be removed in v1.3.
  • Device emulation:
  • VGA and QXL cards (obtained with -vga std and -vga qxl) have 16 MB of VRAM rather than 8 MB.
  • Three new SCSI host bus adapter devices are available: am53c974 and dc390 emulate respectively an AMD PCI PCscsi and a Tekram DC-390 device, both of which are supported on older operating systems including MS DOS 6.2, MS Windows 3.11, 98 SE, NT 3.1 and NT 4.0. megasas emulated an LSI SAS1078 RAID controller. The next version of SeaBIOS will support booting from am53c974 and dc390 disks.
  • An USB-attached SCSI controller is now available.
  • Audio devices:
  • The PC speaker audio card is now available by default.
  • Network devices:
  • The guestfwd argument to slirp now supports running an arbitrary command on every TCP connection (as in inetd). This is invoked by specifying a target that starts with "cmd:".
  • Block devices:
  • Emulated IDE and SCSI as well as virtio-blk devices can now switch the cache mode between writethrough and writeback. virtio-blk automatically switches to writethrough if the guest driver doesn't support flushes.
  • The default cache mode for images is now writeback.
  • Emulated SCSI devices can be given a custom vendor name, product name and WWN.
  • Improved support for passthrough of SCSI tapes and media changers.
  • libiscsi can be used together with scsi-generic to pass iSCSI tapes and media changers to the guest.
  • When raw files are streamed, parts of the files that are holes in the underlying filesystem are treated as unallocated (as long as the OS supports either the FIEMAP ioctl or the SEEK_HOLE/SEEK_DATA modes)
  • CD-ROM drives can now be used with AHCI
  • qcow2:
  • qcow2 images support a new option, lazy_refcounts. If on, the speed of cache=writethrough mode will be improved, at the cost of requiring an fsck-like pass (and thus QEMU 1.2) to use the image again after a power loss.
  • qemu-img check can now repair qcow2 and QED images with the new -r option.
  • VMDK:
  • Support for images in the streamOptimized subformat has been fixed. This is a VMDK subformat commonly used with OVF appliances.
  • rbd:
  • rbd no longer ignores the cache setting
  • Live Migration, Save/Restore:
  • Migration works much better with guests with large memory.
  • USB mass storage and passthrough devices support live migration.
  • VNC:
  • The threaded VNC server is now enabled by default.
  • Guest agent:
  • A new command "fstrim" was added to the guest agent.
  • New targets:
  • OpenRISC is now supported for both user-mode and system emulation.
  • Build dependencies:
  • No changes from 1.1.0.

New in version 1.0.1 (February 18th, 2012)

  • General:
  • i386-softmmu is no longer named qemu but instead referred to as qemu-system-i386 for better consistency with other targets. A new tool is likely to be introduced that uses the qemu name so distributions are advised to not undo this change.
  • QEMU now uses a separate thread for VCPU execution. This merges the biggest difference between the qemu-kvm tree and upstream QEMU.
  • A new memory dispatch API has been added internally. A new monitor command "info mtree" can show the hierarchy of memory regions in the guest.
  • QEMU now has a build dependency on glib and makes extensive use of glib.
  • QEMU now can run on more hosts. Hosts without a native code generator can use the TCG interpreter (TCI). See Features/TCI for more information.
  • Block devices (disks):
  • QEMU now supports I/O latency accounting in the monitor command "info blockstats".
  • Errors are now tracked per device and are shown by the monitor command "info block".
  • All image formats now support asynchronous operation. IDE and SCSI emulation will use this feature, while other devices (notably floppy and SD) will not.
  • IDE/ATAPI:
  • A large number of bugs were fixed regarding CD media change and tray locking.
  • SCSI:
  • Memory management errors could crash QEMU when scsi-disk encountered I/O errors. Many instances of this problem were fixed.
  • The accuracy of error handling for SCSI emulation has been greatly improved.
  • SCSI devices can now be addressed by channel, target (id) and LUN. Not all emulated HBAs will support this feature (in particular, the LSI controller will not).
  • Block device pass through is now supported through a new scsi-block device. The scsi-block device works with block devices (like /dev/sda or /dev/sr0) rather than /dev/sgN devices, and is more efficient because it does not consume arbitrary amounts of memory when the guest does large data transfers.
  • SCSI CD-ROMs now report media changed events.
  • SCSI CD-ROMs now support DVD images.
  • Bugfixes for IDE media change also apply to SCSI.
  • SCSI devices now report a unit attention condition when the system is started or reset. This may cause problems with old firmware versions.
  • VDI:
  • Now supports discarded blocks in dynamically-sized images.
  • User-mode networking (SLIRP):
  • SLIRP can process ARP replies and gratuitous ARP requests from the guest.
  • ARM:
  • QEMU now supports the new Cortex-A15 instructions in linux-user mode (via "-cpu any"): VFPv4 fused multiply-accumulate (VFMA, VFMS, VFNMA, VFNMS) and also integer division (UDIV, SDIV).
  • The vexpress-a9, versatileab, versatilepb and realview-* boards now have audio support.
  • QEMU is known not to work on ARM hosts in this release. (ARM target emulation is fine.)
  • pSeries:
  • sPAPR VIO devices can now be created with -device.
  • Xtensa:
  • QEMU now supports DC232b and FSF xtensa CPU cores.
  • QEMU now supports sim (similar to Tensilica ISS) and LX60/LX110/LX200 machines.
  • Migration:
  • QEMU now supports live migration using image files like QCOW2 on shared storage

New in version 1.0 (December 2nd, 2011)

  • General:
  • i386-softmmu is no longer named qemu but instead referred to as qemu-system-i386 for better consistency with other targets. A new tool is likely to be introduced that uses the qemu name so distributions are advised to not undo this change.
  • QEMU now uses a separate thread for VCPU execution. This merges the biggest difference between the qemu-kvm tree and upstream QEMU.
  • A new memory dispatch API has been added internally. A new monitor command "info mtree" can show the hierarchy of memory regions in the guest.
  • QEMU now has a build dependency on glib and makes extensive use of glib.
  • QEMU now can run on more hosts. Hosts without a native code generator can use the TCG interpreter (TCI). See Features/TCI for more information.
  • Block devices (disks):
  • QEMU now supports I/O latency accounting in the monitor command "info blockstats".
  • Errors are now tracked per device and are shown by the monitor command "info block".
  • All image formats now support asynchronous operation. IDE and SCSI emulation will use this feature, while other devices (notably floppy and SD) will not.
  • IDE/ATAPI:
  • A large number of bugs were fixed regarding CD media change and tray locking.
  • SCSI:
  • Memory management errors could crash QEMU when scsi-disk encountered I/O errors. Many instances of this problem were fixed.
  • The accuracy of error handling for SCSI emulation has been greatly improved.
  • SCSI devices can now be addressed by channel, target (id) and LUN. Not all emulated HBAs will support this feature (in particular, the LSI controller will not).
  • Block device pass through is now supported through a new scsi-block device. The scsi-block device works with block devices (like /dev/sda or /dev/sr0) rather than /dev/sgN devices, and is more efficient because it does not consume arbitrary amounts of memory when the guest does large data transfers.
  • SCSI CD-ROMs now report media changed events.
  • SCSI CD-ROMs now support DVD images.
  • Bugfixes for IDE media change also apply to SCSI.
  • SCSI devices now report a unit attention condition when the system is started or reset. This may cause problems with old firmware versions.
  • VDI:
  • Now supports discarded blocks in dynamically-sized images.
  • User-mode networking (SLIRP):
  • SLIRP can process ARP replies and gratuitous ARP requests from the guest.
  • ARM:
  • QEMU now supports the new Cortex-A15 instructions in linux-user mode (via "-cpu any"): VFPv4 fused multiply-accumulate (VFMA, VFMS, VFNMA, VFNMS) and also integer division (UDIV, SDIV).
  • The vexpress-a9, versatileab, versatilepb and realview-* boards now have audio support.
  • QEMU is known not to work on ARM hosts in this release. (ARM target emulation is fine.)
  • pSeries:
  • sPAPR VIO devices can now be created with -device.
  • Xtensa:
  • QEMU now supports DC232b and FSF xtensa CPU cores.
  • QEMU now supports sim (similar to Tensilica ISS) and LX60/LX110/LX200 machines.
  • Migration:
  • QEMU now supports live migration using image files like QCOW2 on shared storage

New in version 0.15.1 (October 13th, 2011)

  • 82b2b32 Version 0.15.1
  • 4a81ab8 qed: fix use-after-free during l2 cache commit
  • 68e3508 sdl: Fix termination in -no-shutdown mode
  • fb52404 Fix termination by signal with -no-shutdown
  • 3363983 Add support for finding libpng via pkg-config.
  • 672aefe Check for presence of compiler -pthread flag.
  • 6a10ccc Allow overriding the location of Samba's smbd.
  • 7095e71 Fix linker scripts
  • 91b31d6 Fix install(1) usage to be compatible with OpenBSD's install(1).
  • b89f4a7 Fix qjson test of solidus encoding
  • fbdd7c8 configure: Copy test data to build directory
  • e19a4e8 monitor: fix build breakage for !CONFIG_VNC
  • ff5aced monitor: fix build breakage with --disable-vnc
  • 2af86a2 Fix forcing multicast msgs to loopback on OpenBSD.
  • a80f53a user: Restore debug usage message for '-d ?' in user mode emulation

New in version 0.14.1 (May 9th, 2011)

  • virtio-blk: fail unaligned requests (commit)
  • qed: Fix consistency check on 32-bit hosts (commit)
  • exit if -drive specified is invalid instead of ignoring the "wrong" -drive (commit)
  • vhost: fix dirty page handling (commit)
  • Do not delete BlockDriverState when deleting the drive (commit)
  • vnc: tight: Fix crash after 2GB of output (commit)
  • lan9118: Ignore write to MAC_VLAN1 register (commit)
  • Don't allow multiwrites against a block device without underlying medium (commit)
  • lsi53c895a: add support for ABORT messages (commit)
  • virtio-pci: fix bus master work around on load (commit)
  • fix applesmc REV key (commit)
  • rbd: don't link with -lcrypto (commit)
  • net: Add the missing option declaration of "vhostforce" (commit)
  • lsi53c895a: Update dnad when skipping MSGOUT bytes (commit)
  • Revert "prep: Disable second IDE channel, as long as ISA IDE emulation doesn't support same irq for both channels" (commit)
  • isa-bus: Remove bogus IRQ sharing check (commit)
  • virtio-net: Fix lduw_p() pointer argument of wrong size (commit)
  • hw/sd.c: Add missing state change for SD_STATUS, SEND_NUM_WR_BLOCKS (commit)
  • vnc: Fix fatal crash with vnc reverse mode (commit)
  • qemu-char: Check for missing backend name (commit)

New in version 0.12.3 (February 27th, 2010)

  • kvm: Fix eflags corruption in kvm mode (Jan Kiszka)
  • qcow2: Fix access after end of array (Kevin Wolf)
  • ide save/restore pio/atapi cmd transfer fields and io buffer (Marcelo Tosatti)
  • net: Monitor command set_link finds only VLAN clients, fix (Markus Armbruster)
  • net: info network shows only VLAN clients, fix (Markus Armbruster)
  • net: net_check_clients() checks only VLAN clients, fix (Markus Armbruster)
  • net: Fix bogus "Warning: vlan 0 with no nics" with -device (Markus Armbruster)
  • net: net_check_clients() runs too early to see -device, fix (Markus Armbruster)
  • net: Remove unused net_client_uninit() (Markus Armbruster)
  • don't dereference NULL after failed strdup (Jim Meyering)
  • virtio-net: fix network stall under load (Tom Lendacky)
  • json: fix PRId64 on Win32 (Roy Tam)
  • fix inet_parse typo (Marcelo Tosatti)
  • iothread: fix vcpu stop with smp tcg (Marcelo Tosatti)
  • segfault due to buffer overrun in usb-serial (David S. Ahern)
  • qcow2: Fix signedness bugs (Kevin Wolf)
  • Do not ignore error, if open file failed (-serial /dev/tty) (Evgeniy Dushistov)
  • pc-bios: update to newer version of (stable) seabios (Anthony Liguori)
  • target-mips: fix ROTR and DROTR by zero (Aurelien Jarno)
  • target-mips: fix CpU exception for coprocessor 0 (Nathan Froyd)
  • tcg/mips: fix crash in tcg_out_qemu_ld() (Aurelien Jarno)
  • target-mips: don't call cpu_loop_exit() from helper.c (Aurelien Jarno)
  • virtio-blk: Fix error cases which ignored rerror/werror (Kevin Wolf)
  • virtio-blk: Fix restart after read error (Kevin Wolf)
  • virtio_blk: Factor virtio_blk_handle_request out (Kevin Wolf)
  • cirrus: Properly re-register cirrus_linear_io_addr on vram unmap (Jan Kiszka)
  • qcow2: Don't ignore qcow2_alloc_clusters return value (Kevin Wolf)
  • qcow2: Don't ignore update_refcount return value (Kevin Wolf)
  • qcow2: Allow updating no refcounts (Kevin Wolf)
  • qcow2: Improve error handling in update_refcount (Kevin Wolf)
  • qcow2: Fix error handling in grow_refcount_table (Kevin Wolf)
  • block: Return original error codes in bdrv_pread/write (Kevin Wolf)
  • qcow2: Return 0/-errno in qcow2_alloc_cluster_offset (Kevin Wolf)
  • qcow2: Return 0/-errno in get_cluster_table (Kevin Wolf)
  • qcow2: Fix error handling in qcow_save_vmstate (Kevin Wolf)
  • qcow2: Fix error handling in qcow2_grow_l1_table (Kevin Wolf)
  • win32/sdl: Fix toggle full screen (Herve Poussineau)
  • win32: pair qemu_memalign() with qemu_vfree() (Herve Poussineau)
  • vnc_refresh: calling vnc_update_client might free vs (Stefano Stabellini)
  • Musicpal: Fix descriptor walk in eth_send (Jan Kiszka)
  • Musicpal: Fix wm8750 I2C address (Jan Kiszka)
  • fix savevm command without id or tag (Marcelo Tosatti)
  • reduce number of reinjects on ACK (Gleb Natapov)
  • QMP: Fix asynchronous events delivery (Luiz Capitulino)
  • Documentation: Add missing documentation for qdev related command line options (Stefan Weil)
  • pc: add driver version compat properties (Gerd Hoffmann)
  • scsi: device version property (Gerd Hoffmann)
  • ide: device version property (Gerd Hoffmann)
  • QMP: Emit asynchronous events on all QMP monitors (Adam Litke)
  • Fix QEMU_WARN_UNUSED_RESULT (Kevin Wolf)

New in version 0.11 RC1 (July 31st, 2009)

  • add machine aliasing support (Mark McLoughlin)
  • add getfd/closefd monitor commands (Mark McLoughlin)
  • use correct headers for tap-win32 (Filip Navara)
  • fix live migration (Glauber Costa)
  • slirp: use monotonic clock if available (Ed Swierk)
  • clear msix_entries_nr on error (Michael Tsirkin)
  • HPET: fix reg writes (Beth Kon)
  • slirp: fix guestfwd for incoming data (Jan Kiszka)
  • fix build of qemu-thread.c on win32 (Sebastian Herbszt)
  • improve signrom.sh portability (Christoph Egger)
  • fix qemu-img convert to copy unallocated parts of the image (Akkarit Sangpetch)
  • vmdk: fix backing file handling (Kevin Wolf)
  • scsi: add save/restore support (Nolan Leake)
  • fix live migration for SCSI (Nolan Leake)
  • various sparc build fixes (Blue Swirl)
  • fix OpenBSD build (Blue Swirl)
  • only allow -cpu host when using KVM (Anthony Liguori)
  • fix build breakage when !KVM (Anthony Liguori)

New in version 0.10.6 (July 31st, 2009)

  • e1000: ignore reset command (Kevin Wolf)
  • fix VNC memory allocation (Stefan Weil)
  • fix raw_pread_aligned return value (Christoph Hellwig)
  • allow monitor interaction when using -incoming exec: (Chris Lalancette)
  • fix -net socket,listen (Jan Kiszka)
  • live migration: don't send gratuitous packets all at once (Gleb Natapov)
  • serial: fix lost characters after sysrq (Jason Wessel)
  • Fix prototype of zfree (Stefan Weil)
  • Handle EINTR with exec: migration (Uri Lublin)
  • Delete io-handler before closing fd after migration (Uri Lublin)
  • Fix qemu_aio_flush (Andrea Arcangeli)
  • lsi53c895a: Implement additional registers (Sebastian Herbszt)
  • virtio-blk: fix warning (Gerd Hoffman)
  • i386: fix cpu reset (Nitin Kamble)
  • kvm: fix irq injection into full queue (Jan Kiszka)
  • Prevent CD-ROM eject while device is locked (Mark McLoughlin)
  • Fix screen dump with blank screen (Eduardo Habkost)
  • Fix memory leak with cpu_unregister_map_client (Isaku Yamahata)
  • Fix memory leak in SDL (Jan Kiszka)
  • Fix build on OS X 10.4 (John Arbuckle)
  • Fix leak of vlan clients after hot remove (Mark McLoughlin)
  • Fix migration after hot remove with eepro100 (Mark McLoughlin)
  • Don't start a VM after failed migration if stopped (Anthony Liguori)
  • Fix live migration under heavy IO load (Glauber Costa)
  • Honor -S on incoming migration (Paolo Bonzini)
  • Reset HPET config register on reset (Beth Kon)
  • Reset PS2 keyboard/mouse on reset (Dinesh Subraveti)

New in version 0.10.5 (May 22nd, 2009)

  • kvm: trim unsupported cpu features from cpuid (Avi Kivity)
  • kvm: provide a better error message for -smp > 1 (Mark McLoughlin)
  • Remove initrd printfs (Richard Jones)
  • Initial variables found by valgrind (Jean-Christophe Dubois)
  • Fix -initrd with > 4GB guests (Glauber Costa)
  • Fix busy loop on live migration for certain platforms (Uri Lublin)
  • Remove GCC 3.x requirements from docs (Hollis Blanchard)
  • ETRAX: fixes for kernel command line, ethernet address, bmi (Edgar Iglesias)
  • CRIS: Fix bmi (Edgar Iglesias)
  • Fix bounce buffer errors (Avi Kivity)
  • Fix regression in -kernel (Anthony Liguori)

New in version 0.10.4 (May 13th, 2009)

  • Improve block range checks to remove integer overflow (Kevin Wolf)
  • e1000: do not re-init PCI config space 0 (Amit Shah)
  • fix AIO deletion race (Alex Graf)
  • reset option roms on reboot (Glauber Costa)
  • fix qcow2 corruption in cluster freeing (Gleb Natapov)
  • Enable power button event generation (Gleb Natapov)

New in version 0.10.3 (May 2nd, 2009)

  • fix AIO cancellations (Avi Kivity)
  • fix live migration error path on incoming
  • avoid SEGV on pci hotplug failure (Chris Wright)
  • fix serial option in -drive
  • support DDIM for option roms (Glauber Costa)
  • avoid fork/exec on pre-2.6.27 kernels with KVM (Jan Kiszka)
  • block-vpc: don't silently create smaller images than requested (Kevin Wolf)
  • Fix non-ACPI timer interrupt routing (Beth Kon)
  • hpet: fix emulation of HPET_TN_SETVAL (Jan Kiszka)
  • kvm: fix cpuid initialization (Jan Kiszka)
  • qcow2: fix corruption on little endian hosts (Kevin Wolf)
  • avoid leaing memory on hot unplug (Mark McLoughlin)
  • fix savevm/migration after hot unplug (Mark McLoughlin)
  • Fix keyboard mapping on newer Xords with non-default keymaps (balrog)
  • Make PCI config status register read-only (Anthony Liguori)
  • Fix crash on resolution change -> screen dump -> vga redraw (Avi Kivity)

New in version 0.10.2 (April 7th, 2009)

  • fix savevm/loadvm (Anthony Liguori)
  • live migration: fix dirty tracking windows (Glauber Costa)
  • live migration: improve error propogation (Glauber Costa)
  • qcow2: fix image creation for > ~2TB images (Chris Wright)
  • hotplug: fix error handling for if= parameter (Eduardo Habkost)
  • qcow2: fix data corruption (Nolan Leake)
  • virtio: fix guest oops with 2.6.25 kernels (Rusty Russell)
  • SH4: add support for -kernel (Takashi Yoshii, Aurelien Jarno)
  • hotplug: fix closing of char devices (Jan Kiszka)
  • hotplug: remove incorrect check for device name (Eduardo Habkost)
  • enable -k on win32 (Herve Poussineau)
  • configure: use LANG=C for grep (Andreas Faerber)
  • fix VGA regression (malc)

New in version 0.10.1 (March 22nd, 2009)

  • virtio-net: allow masking of notifications on empty queue (Alex Williamson)
  • e1000: fix rx descriptor low threshold logic (Alex Willaimson)
  • x86 tcg: add NULL checks to lsl instruction (Jan Kiszka)
  • kvm vga: fix screen corruption with -std-vga and Windows (Avi Kivity)
  • kvm vga: fix screen corruption with Ubuntu installations (Glauber Costa)
  • virtio-net: check right return size on sg list (Alex Williamson)
  • Make qemu_announce_self handle holes (live migration after hotplug) (Marcelo Tosatti)
  • Revert r6804-r6808 (qcow2 allocation info). This series of changes added a high cost to startup for large qcow2 images (Anthony Liguori)
  • qemu-img: fix help message (Aurelien Jarno)
  • Fix build for non-default installs of SDL (Anthony Liguori)
  • Fix race condition in env->interrupt_request. When using TCG and a dynticks host timer, this condition could cause TCG to get stuck in an infinite loop (Aurelien Jarno)
  • Fix reading encrypted hard disk passwords during early startup (Jan Kiszka)
  • Fix encrypted disk reporting in 'info block' (Jan Kiszka)
  • Fix console size with tiny displays (MusicPal) (Jan Kiszka)
  • Improve error handling in bdrv_open2 (Jan Kiszka)
  • Avoid leaking data in mux'ed character devices (Jan Kiszka)
  • Fix initial character device reset (no banner in monitor) (Jan Kiszka)
  • Fix cpuid KVM crash on i386 host (Lubomir Rintel)
  • Fix SLES10sp2 installation by adding ISTAT1 register to LSI SCSI emulation (Ryan Harper)

New in version 0.10.0 (March 7th, 2009)

  • TCG support (No longer requires GCC 3.x)
  • Kernel Virtual Machine acceleration support
  • BSD userspace emulation
  • Bluetooth emulation and host passthrough support
  • GDB XML register description support
  • Intel e1000 emulation
  • HPET emulation
  • VirtIO paravirtual device support
  • Marvell 88w8618 / MusicPal emulation
  • Nokia N-series tablet emulation / OMAP2 processor emulation
  • PCI hotplug support
  • Live migration and new save/restore formats
  • Curses display support
  • qemu-nbd utility to mount supported block formats
  • Altivec support in PPC emulation and new firmware (OpenBIOS)
  • Multiple VNC clients are now supported
  • TLS encryption is now supported in VNC
  • MIPS Magnum R4000 machine (Hervé Poussineau)
  • Braille support (Samuel Thibault)
  • Freecom MusicPal system emulation (Jan Kiszka)
  • OMAP242x and Nokia N800, N810 machines (Andrzej Zaborowski)
  • EsounD audio driver (Frederick Reeve)
  • Gravis Ultrasound GF1 sound card (Tibor "TS" Schütz)
  • Many, many, bug fixes and new features