QEMU Changelog

What's new in QEMU 3.1.0

Dec 12, 2018
  • System emulation:
  • Incompatible changes:
  • The "qemu-system-ppcemb" target has been removed. "qemu-system-ppc" or "qemu-system-ppc64" should be used instead.
  • The "tls", "x509", and "x509verify" options to "-vnc" have been removed. The "tls-creds" option should be used instead to point to a "tls-creds-x509" object created using "-object"
  • The -drive options "cyls", "heads", "secs", "trans", "addr" and "serial" have been removed. The corresponding options of the "-device" parameter have to be used instead now.
  • The "-balloon" option has been removed since it is replaced by "-device virtio-balloon" now.
  • The "-nodefconfig" option has been removed. Use "-no-user-config" instead.
  • The "-startdate", "-localtime" and "-rtc-td-hack" options have been removed. Use the corresponding parameters of "-rtc" instead.
  • The "-tftp", "-bootp", "-redir" and "-smb" options have been removed. Use the corresponding parameters of "-nic" or "-netdev" instead.
  • The "ssi-sd" device cannot be created anymore with "-device". This could be changed again in the future.
  • x86 machines cannot be live-migrated if nested Intel virtualization is enabled. The next version of QEMU will be able to do live migration when nested virtualization is enabled, if supported by the kernel.
  • New deprecated options and features:
  • The '-machine enforce-config-section' parameter is replaced by the '-global migration.send-configuration' option.
  • The 'name' parameter of the '-net' option is a synonym for the 'id' parameter, which should now be used instead.
  • The 'hub_id name' parameter tuple of the 'hostfwd_add' and 'hostfwd_remove' HMP commands has been replaced by 'netdev_id'.
  • The PowerPC target 'prep' machine type should be replaced by the '40p' machine type.
  • Parsing of key,value pair filenames for the RBD block device
  • Incorrect CPU topologies specified by -smp socket,core,thread options that are describing number of VCPUs not equal to 'maxcpus'
  • Consult the "Deprecated Features" appendix for the full list of historically deprecated features/options.
  • Arm:
  • New microbit machine model (initially the only supported device is the UART; more complete device support is planned for the next release)
  • Support for the ARMv6M architecture and the Cortex-M0 CPU
  • New virtual Xilinx Versal machine model: "xlnx-versal-virt"
  • implement some missing hypervisor trap bits in HCR register
  • New CPU model: Cortex-A72
  • Implement emulation of ARMv8M hardware stack limit checking
  • Support Scalable Vector Extension in system emulation mode
  • Implement some devices previously missing from mps2-an505 board
  • raspi: Support virtual framebuffer/viewport in display device
  • Add model of Freescale i.MX6 UltraLite 14x14 EVK Board
  • Support execution from small (

New in QEMU 2.8.0 (Dec 22, 2016)

  • System emulation:
  • Incompatible changes:
  • The number of allow PCI host bridges for pSeries machine was reduced from 256 to 31 (more can be configured by setting up MMIO windows manually).
  • Removed support for tftp:// in the block layer, since this has been broken forever for files bigger than 256KB.
  • 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.
  • Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.
  • QMP command blockdev-add is still a work in progress. It doesn't support all block drivers, it lacks a matching blockdev-del, and more. It might change incompatibly.
  • For x86, specifying a CPUID feature with both "+feature/-feature" and "feature=on/off" will cause a warning. The current behavior for this combination ("+feature/-feature" wins over "feature=on/off") will be changed so that "+feature" and "-feature" will be synonyms for "feature=on" and "feature=off" respectively).
  • ARM:
  • Improvements to the Aspeed board.
  • Support for HLT semihosting traps in AArch32 mode (both ARM and Thumb).
  • The ACPI tables for the "virt" machine type support ITS.
  • The Cadence GEM device now supports multiple priority queues through the num-priority-queues property.
  • The STM32F2xx board (Netduino 2) now includes ADC and SPI devices.
  • MIPS:
  • Support for 24KEc CPUs.
  • PowerPC:
  • Support for POWER9 CPUs.
  • Improvements for the new "powernv" platform.
  • pSeries:
  • PCI host bridges can be associated to NUMA nodes.
  • Support for more than 1 TiB of guest memory.
  • Support for more than 64 GiB of MMIO window in a PCI host bridge.
  • Support for the "-prom-env" parameter
  • s390:
  • Support for CPU models.
  • Support for virtio-ccw revision 2.
  • x86:
  • Support for several new CPUID features related to AVX-512 instruction set extensions.
  • The emulated IOAPIC (used by TCG and, with KVM, if the "-machine kernel_irqchip" option has the value "off" or "split") now defaults to version 0x20, which supports directed end-of-interrupt messages.
  • Support for Extended Interrupt Mode (EIM) in the intel_iommu device. EIM requires KVM (Linux v4.7 or newer, for x2APIC support) and "-machine kernel-irqchip=split"; it is enabled automatically if interrupt remapping is enabled ("-machine kernel-irqchip=split -device intel_iommu,intremap=on").
  • Support for up to 288 CPUs with the Q35 machine types. 256 or more CPUs are only supported if IOMMU and EIM are enabled.
  • Xen:
  • Support for unplugging SCSI disk.
  • Support for SUSE xenlinux-compatible device unplug.
  • Device emulation and assignment:
  • QEMU now includes a generic loader pseudo-device that lets you load multiple images or values into memory at startup. This device is documented in docs/generic-loader.txt.
  • ACPI:
  • Support for hotplugging of NVDIMM devices (_FIT)
  • Network devices:
  • Support for fault tolerance based on coarse-grained lock stepping (COLO).
  • PCI/PCIe:
  • The sample EDU device now supports MSI.
  • PCI Express Guidelines documentation has been added for advice on topology and PCI vs PCIe.
  • virtio:
  • New device vhost-vsock.
  • Initial support for graceful handling of guest errors (i.e. QEMU should not exit on guest errors).
  • Support for new virtio-crypto device.
  • Xen:
  • Support for grant copy.
  • Crypto subsystem:
  • Support for more hash algorithms for PBKDF.
  • Support for CTR mode.
  • GUI:
  • SPICE can use pure OpenGL rendering if "gl=on" is specified.
  • Monitor:
  • Migration:
  • Support for fault tolerance based on coarse-grained lock stepping (COLO).
  • Network:
  • Block devices and tools:
  • More QMP commands support node-name (block-stream, block-commit, blockdev-backup, blockdev-mirror, blockdev-snapshot-delete-internal-sync, blockdev-snapshot-internal-sync, change-backing-file, drive-backup, drive-mirror, nbd-server-add).
  • The BLOCK_IO_ERROR event now includes the node name.
  • More QMP commands accept device model names (block_set_io_throttle, blockdev-change-medium, eject, x-blockdev-remove-medium, x-blockdev-insert-medium, blockdev-open-tray, blockdev-close-tray)
  • The DEVICE_TRAY_MOVED event now includes the device id.
  • Throttling now applies to the guest device only, and not to block jobs or the NBD server.
  • drive-backup and blockdev-backup support writing out backups in compressed format.
  • The LUKS format now can configure the PBKDF iteration count.
  • block-stream supports streaming from a backing file to another backing file.
  • Support for replication, for coarse-grained lock stepping (COLO) fault tolerance.
  • New "dd" subcomamand of qemu-img.
  • The DMG driver can be compiled to a separate driver, so as to make QEMU's dependency on libbz2 optional.
  • Support for iSER in QEMU's iSCSI initiator through a iser:// URI.
  • The NBD client and server support the NBD_CMD_WRITE_ZEROES extension.
  • Raw images support "offset" and "size" options to access only a part of the file or device.
  • Tracing:
  • New tracing backend "syslog".
  • Support for multiple "-d trace:PATTERN" command-line arguments.
  • CLI options:
  • User-mode emulation
  • Removed target support
  • The unicore32-linux-user target implemented a different system call ABI from mainline Linux for this architecture. Support for it has been dropped.
  • New functionality:
  • Added support for more syscalls including preadv, pwritev, syslog.
  • Major scalability improvements for multi-threaded programs (ARM, SPARC, x86).
  • QEMU can now understand and generate fence and cmpxchg operations.
  • TCG:
  • New TCG primitives have been added for safely modelling architectural synchronisation instructions (e.g. atomics, LL/SC, LOCK prefixes). arm, aarch64, alpha and x86 targets now use these primitives for multi-threaded linux-user programs. TCG target maintainers are encouraged to port their front-ends to use the new facilities.
  • The TCG backends now emit appropriate barrier instructions for frontend barriers when running multi-threaded programs. However, emulating a strongly-ordered architecture (e.g., x86) on a weakly-ordered one (e.g., ARM or POWER) will not work yet.
  • tb_flush() is finally thread-safe meaning multi-threaded programs are less likely to crash when the translation buffer is reset
  • lock contention in the main cpu run-loop has been reduced improving performance for multi-threaded code
  • a number of races were identified and fixed
  • A lot of the TCG work merged in this cycle where prerequisites for supporting multi-threaded system emulation (MTTCG). While full MTTCG support is expected to be merged in the next development cycle, multi-threaded linux-user programs will already benefit from this work.

New in QEMU 2.7.0 (Sep 5, 2016)

  • Multiqueue support for virtio-blk devices
  • Busy-polling support for virtio-net/vhost-net devices
  • Live migration support for virtio-gpu 2D displays
  • Support for Xen paravirtualized USB
  • VFIO passthrough support for Intel integrated graphics devices
  • New management interfaces to improve CPU hot plug/unplug
  • General TCG emulation improvements up to 20%
  • User-mode networking support for DHCPv6, RDNSS, DNS6, and link-local DNS addresses
  • Support for building user-mode emulation docker images for use in cross-compiling/testing
  • ARM: virt machine now has support for NUMA and GICv3 interrupt controller
  • ARM: new xlnx-zcu102 machine type implementing Xilinx Zynq ZCU102 board
  • ARM: Xilinx Zynq MP now supports graphics/audio over emulated DisplayPort interface.
  • ARM: Xilinx Zynq support for KVM on AArch64 hosts
  • MIPS: Initial GIC support
  • PPC: many fixes for TCG
  • PPC: mac99 machine can now boot MacOS 9.1+
  • PPC: pseries machine support for CPU hotplug
  • PPC: pseries machine performance improvements: large/64-bit DMA windows for VFIO-based PCI passthrough, and significant improvements for spapr-llan
  • s390: support for runtime instrumentation
  • s390: significant refactoring/improvement of s390 PCI device emulation and hot unplug
  • x86: CPU hot unplug support based on newer device_add/device_del management interface
  • x86: q35 machine support for IOMMU emulation

New in QEMU 2.6.0 (May 13, 2016)

  • Headless support for OpenGL-capable displays via Virgil/virtio-gpu are now available via Spice client.
  • virtio performance improvements through vring access optimizations
  • Support for IPMI through internally emulated BMC or an external BMC interface
  • PCIe multi-root support via pxb-pcie bridge, allowing devices to be exposed to guest on specifically-defined NUMA nodes
  • Post-copy migration now officially supported
  • TLS support for character devices (e.g. isa-serial port) exposed over TCP sockets
  • VFIO passthrough support for AMD XGBE 10Gb NIC
  • Block device throttling now supports separate controls for burst IOPS over a specified interval
  • Image support for LUKSv1, and TLS and authentication support for various remote disk protocols (iSCSI, NBD, RBD, ...)
  • New default tracing backend, and command-line/wildcard support for enabling specific traces
  • ARM: Raspberry Pi 2 emulation support via new raspi2 machine
  • ARM: virt machine now supports QEMU-signalled powerdown, and RAM limit increased from 30GB to 255GB
  • ARM: new palmetto-bmc machine type implementing ASPEED AST2400 SoC
  • MIPS: support for FPU and SIMD instructions in KVM guests
  • PowerPC: improved migration and serial port support for g3beige and mac99 machines
  • PowerPC: GDB stub support for VSX instruction set
  • PowerPC: pseries now exposes XHCI USB by default
  • s390: CPU hotplug support, and PCI/virtio-scsi improvements
  • Tricore: support for FPU instructions, context management, and illegal opcode and opd traps
  • x86: KVM and TCG emulation support for PKU memory protection feature of newer Intel CPUs within guest
  • x86: resume from suspend support for Q35 machine type
  • x86: support for older Windows guest (XP/2003) on Q35 machine type

New in QEMU 2.5.0 (Dec 17, 2015)

  • System emulation:
  • guard pages are now inserted after guest RAM, to guard against guest-triggered buffer overflow attacks
  • Incompatible changes:
  • The mips32r5-generic CPU was renamed to P5600
  • Host floppy device pass-through (block driver “host_floppy”) has been removed; it is still possible to use them just like any other device file, however, a medium change will no longer be passed through to the guest
  • 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.
  • Block device parameter aio=native has no effect without cache.direct=on. It will be made an error.
  • Block device parameter aio=native has no effect if qemu is compiled without libaio support. It will be made an error.
  • A few devices will be configured with explicit properties instead of implicitly. Unlikely to affect users; for the full list, see the 2.3 ChangeLog.
  • QMP command blockdev-add is still a work in progress. It doesn't support all block drivers, it lacks a matching blockdev-del, and more. It might change incompatibly.
  • The s390-virtio machine has been deprecated for 2.5; it will be removed in 2.6. s390x users should switch to the (default) s390-ccw-virtio machine.
  • Changes to device "sdhci-pci" will make migration between old and new versions impossible.
  • Alpha
  • ARM:
  • The "virt" machine type supports passing SMBIOS to the firmware.
  • Semihosting support on AArch64
  • New i.MX31 SoC.
  • The ZynqMP and Allwinner A10 platforms support AHCI.
  • Support for VGICv3 in KVM
  • Support for GICv3 in the ACPI tables.
  • The "virt" machine now has a second PCIe MMIO region of 512GB in size in high memory. Note that older 32-bit ARM Linux kernels built without CONFIG_LPAE have a bug where the presence of this region in high memory causes them to refuse to use the PCIe controller at all. In this case you can either reconfigure your kernel with CONFIG_LPAE=y, or pass QEMU the "-machine highmem=off" option to disable the use of high memory for PCIe. The kernel bug is expected to be fixed in Linux kernel release 4.4.
  • MIPS:
  • The mips32r5-generic CPU was renamed to P5600
  • Improvements to MIPS R6 emulation
  • PowerPC
  • pSeries:
  • Support for memory hotplug
  • The shipped version of SLOF includes GPT support.
  • Using VFIO doesn't need spapr-pci-vfio-host-bridge anymore.
  • virtio-vga now supported on sPAPR guests.
  • H_RANDOM hypercall device for providing good random data to the guests.
  • Mac99:
  • Improve ability to boot MacOS 9 (based upon GSoC project "Implement support for Mac OS 9 in QEMU " by Cormac O'Brien)
  • s390:
  • Storage keys are migrated.
  • New "info skeys" command in HMP to dump the storage key for a given address.
  • Support for virtio 1 in the virtio-ccw devices.
  • A maximum virtio-ccw revision can be specified via the "max_revision" property: max_revision=0 may be used to enforce usage of legacy virtio mode.
  • Support for boot from El Torito iso images on virtio-blk has been added.
  • SPARC:
  • sun4u: Fix EBus device enumeration under FreeBSD SPARC64 (OpenBIOS)
  • TileGX:
  • New target.
  • x86:
  • The emulated IOMMU (VT-d) supports devices behind a bridge
  • QEMU will warn when using a "-cpu" model that includes unsupported features. These features are disabled automatically, just like in previous versions of QEMU
  • /machine/icc-bridge was removed from the QOM tree. Software relying on icc-bridge to find CPU objects should use the "qom_path" field of "query-cpus" QMP command
  • CPU models and features:
  • Haswell and Broadwell CPU models now include ABM
  • Cache information passthrough (which was enabled by default on "-cpu host") is now disabled by default
  • ABM, POPCNT, and SSE4a are not enabled in the default CPU models (qemu64, qemu32) anymore, as many hosts don't support it
  • RDTSCP was removed from AMD CPU models, as current KVM versions can't expose RDTSCP to guests in AMD hosts
  • New Intel memory instructions (clflushopt/clwb/pcommit) are now supported
  • TCG now supports Debug Extensions (CR4.DE)
  • KVM:
  • Support for Hyper-V-compatible reporting of crashes.
  • Xen:
  • Support for passthrough of Intel integrated GPUs.
  • Device emulation and assignment:
  • fw_cfg supports a DMA interface on ARM and x86. This interface makes -kernel/-initrd much faster if supported by the firmware. SeaBIOS supports the DMA interface starting with release 1.9.0 (commit 06316c9d). The UEFI guest fw for ARM VMs (known as ArmVirtQemu or AAVMF) supports the DMA interface starting with git commit 953bcbcc / SVN r18545.
  • ACPI
  • Audio
  • Block devices
  • Character devices
  • IDE:
  • AHCI ATAPI PIO transfers greater than one sector are fixed. This helps on OVMF, which utilizes such transfers.
  • Zero byte count limits will no longer hang ATAPI drives.
  • ATAPI PIO reads, when the byte count limit is set to the ATAPI block size, are now asynchronous. This should help to prevent hangs due to missing CDROM media mounted via NFS.
  • Mouse/keyboard
  • Network
  • SCSI:
  • scsi-generic devices now can be used together with a "readonly=on" backend.
  • Shared memory device:
  • A sample implementation of the ivshmem client and ivhsmem server is included with QEMU.
  • ivshmem supports a new "x-memdev" property that uses a memory object for the backend. This makes it possible to use ivshmem with a hugetlbfs backend. This property is experimental and may be removed in future release in favour of an alternative ivshmem device.
  • Use kvm irqfd for msi notifications
  • Protocol change, native long -> LE int64_t
  • PCI/PCIe:
  • hotplug support added for multifunction devices. To use, add all functions except function 0 first. Adding function 0 exposes the device to the guest. Request removal on function 0. On guest acknowledge, all functions are ejected together.
  • TPM
  • VFIO
  • virtio:
  • virtio-gpu now supports 3D mode
  • vhost-user now supports live migration. client changes are required to enable this. When used with an old client without migration support, vhost-user will now block migration (instead of failing silently)
  • vhost-user now supports multi-queue. Use queues=# to enable this. client changes are required to enable this mode. When used with an old client without multi-queue support, device will automatically fall back on using a single pair of queues.
  • vhost-user protocol now includes protocol feature negotiation, including multiple new messages. When used with old clients, all new messages are automatically disabled.
  • vhost-user no longer sents the RESET_OWNER message on device stop. The only QEMU version that sent it was 2.4, the message is now officially deprecated.
  • migration now works when virtio 1 is enabled for virtio-pci
  • For virtio-pci, virtio 1 performance on kvm on Intel CPUs has been improved (on kernel 4.4 and up).
  • a new flag modern-pio-notify can be used to enable PIO for notifications in virtio 1 mode, to improve performance for host kernels older than 4.4, and processors without EPT support.
  • virtio devices can now be placed on the pci express bus
  • vhost is no longer disabled when guest does not use MSI-X. The vhostforce flag is no longer required.
  • in virtio 1 mode, scsi passthrough is now disabled for virtio blk
  • Please note that for virtio-pci, the modern (virtio 1) interface is still disabled by default. To enable, set the flag disable-modern=off.
  • VGA
  • Character devices
  • GUI:
  • New syntax for enabling TLS in the VNC server:
  • Equivalent to -vnc hostname:0,tls: -object tls-creds-anon,id=tls0,endpoint=server -vnc hostname:0,tls-creds=tls0
  • Equivalent to -vnc hostname:0,tls,x509=/path/to/certs: -object tls-creds-x509,id=tls0,endpoint=server,dir=/path/to/certs,verify-peer=no -vnc hostname:0,tls-creds=tls0
  • Equivalent to -vnc hostname:0,tls,x509verify=/path/to/certs: -object tls-creds-x509,id=tls0,endpoint=server,dir=/path/to/certs,verify-peer=yes -vnc hostname:0,tls-creds=tls0
  • The Cocoa GUI does not have show an 'open image file' dialog box anymore even if QEMU is started without arguments
  • Thu curses GUI supports 256 colors and line graphics.
  • Monitor:
  • New "info iothreads" command.
  • New "query-qmp-schema" command allows the caller to introspect the QMP schema used by QEMU.
  • Migration:
  • Postcopy migration for migration of large/busy guests
  • A more flexible auto-converge mechanism (for busy guests)
  • Network:
  • Support for multiqueue in vhost-user.
  • Support for network filters. Currently, the only filter objects are "filter-buffer", which batches packets every N microseconds, and "filter-dump", which can be used to log the network traffic in a file. Filters are attached to a netdev device using e.g. "-object filter-buffer,id=filter,netdev=net0,queue=rx,interval=1000" (which creates a 1ms filter-buffer).
  • Block devices in system emulation:
  • Command-line options
  • TCG
  • Improved system emulation performance for targets with software TLBs (e.g. SPARC).
  • Initial support for record/replay.
  • Block devices and tools:
  • The HMP “change” command (QMP's “blockdev-change-medium”) now allows you to change the read-only mode of the device (e.g. when inserting a read-only floppy disk image into a previously R/W drive)
  • Fine-grained control over a block device's tray with the new QMP commands “blockdev-open-tray”, “blockdev-close-tray”, “x-blockdev-insert-medium”, and “x-blockdev-remove-medium” (the latter two are experimental for now)
  • New “reopen” command in qemu-io
  • block-dirty-bitmap-add and block-dirty-bitmap-clear transaction actions have been added to now fully support (transient) incremental bitmap usage and management.
  • QMP transactions now support a "completion-mode" parameter which controls the completion behavior of jobs launched by transactions, which will allow them to fail together. See the bitmaps.md documentation for how this affects incremental backups.
  • Block I/O accounting can now report average queue depth, min/avg/max latency, and failed/invalid request counts
  • qcow2 learnt a new option cache-clean-interval, which allows to free unused cache entries after some time.
  • An experimental QMP command x-blockdev-del was added as a completement for the (also still experimental) blockdev-add command.
  • A new QMP command blockdev-snapshot that allows creating a snapshot using as overlay an image previously opened with blockdev-add. This allows opening the overlay image with arbitrary run-time options, solving one of the limitations of blockdev-snapshot-sync.
  • It is now possible to open an image without its backing file by specifying the empty string as a backing file reference when opening the image. This is useful for creating snapshots, since images opened with blockdev-add are not supposed to have a backing file before the blockdev-snapshot operation.
  • Host CD-ROM support now works on Mac OS X hosts
  • Host floppy support has been removed (it was deprecated in QEMU 2.3)
  • The temporary "x-data-plane=on/off" option for virtio-blk device is removed now, all users are requested to use the canonical "-object iothread,id= -device virtio-blk,iothread=,..." syntax.
  • Audio:
  • Guest agent:
  • Add an optional qemu-ga.conf system configuration
  • Support for dumping the configuration current file with --dump-conf
  • Win32 support for guest-set-user-password
  • New command guest-exec
  • User-mode emulation:
  • The configure option --disable-guest-base has been removed.
  • Build dependencies:
  • libcacard has been moved to a standalone project, hosted at git://anongit.freedesktop.org/spice/libcacard. The libcacard library from QEMU 2.4 can also be used to build QEMU 2.5.
  • virtio-gpu 3D support requires virglrenderer.

New in QEMU 2.4.1 (Nov 8, 2015)

  • System emulation:
  • Incompatible changes:
  • The handling of the floppy device controller is different between =2.4 machine types that use the Q35 chipset (e.g. "-M pc-q35-2.3" vs. "-M pc-q35-2.4"). This can cause problems if you are defining floppy drives with command-line options such as "-global isa-fdc.driveA=id.
  • The ARM 'virt' board default interface type has changed from IDE to virtio. This means that some incorrect command lines that we previously silently accepted will now fail with an error message like "qemu-system-arm: -drive file=img.qcow2,id=foo: Drive 'foo' is already in use because it has been automatically connected to another device (did you need 'if=none' in the drive options?)". As the error message suggests, you should add "if=none" to the -drive option to fix this.
  • 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.
  • Host floppy device pass-through (block driver "host_floppy") is deprecated, and will be dropped in a future release.
  • Block device parameter aio=native has no effect without cache.direct=on. It will be made an error.
  • A few devices will be configured with explicit properties instead of implicitly. Unlikely to affect users; for the full list, see the 2.3 ChangeLog.
  • QMP command blockdev-add is still a work in progress. It doesn't support all block drivers, it lacks a matching blockdev-del, and more. It might change incompatibly.
  • The configure option --disable-guest-base is unneeded and will be removed in a future release.
  • Alpha:
  • Major fixes to the implementation of floating point exceptions.
  • ARM:
  • New board model xlnx-ep108
  • Support for ACPI v5.1 tables in the "-M virt" board.
  • Support for instantiation sysbus devices from the command line (using "-device") in the "-M virt" board.
  • Emulation of the stream ID for MSI writes, for use in GICv3.
  • The "virt" board default drive type is now virtio; this means that drives created with if=virtio or with no if= specification will be created as drives plugged into a virtio-blk-pci device. Short form options like -hda will also create this kind of drive. (Note that at time of writing Linux only supports the virt board's PCI controller for 32-bit ARM kernels; support has not yet made it into the 64-bit kernels. So 64-bit guests will need to continue using long command lines and virtio-mmio for now.) Unfortunately this means that some old command lines will need to change -- see the "incompatible changes" section above for details.
  • MIPS:
  • More accurate emulation of the dp8393x network card and RC4030 DMA/IOMMU controller.
  • Support for microMIPS32 R6 emulation (enabled in new "-cpu mips32r6-generic")
  • Support for unaligned R6 and MSA memory accesses in TCG
  • Support for XPA in MIPS32 and LPA in MIPS64 (eXtended and Large Physical Addressing) emulation
  • Support for MIPS UHI semihosting
  • PowerPC:
  • The default RAM size for the pseries machine is 512 MB.
  • Support of PCI device hotplug on SPAPR (pSeries).
  • s390:
  • Channel I/O is now available when running with TCG. Thus, the default machine for qemu-system-s390x is now s390-ccw.
  • Several other fixes for TCG (emulation) mode.
  • Extended name and UUID in STSI 3.2.2 information block
  • Support for reading/writing guest memory while holding the IPTE lock under KVM, including access register mode
  • Various cleanups in the s390-virtio and virtio-ccw transports
  • Support for diag288 watchdog (KVM only).
  • Support for vector registers
  • Add virtio-1 specific ccws to virtio-ccw (SET_REV and v1 version of SET_VQ)
  • Revision 1 (and therefore virtio 1) is not yet enabled, however.
  • The s390-ccw-virtio machine is now versioned; the first versioned machine is s390-ccw-virtio-2.4
  • The s390-ccw alias has been removed
  • SH:
  • Optimizations to code generated by TCG.
  • SPARC:
  • Fix SunOS 4.1.4 boot on sun4m with OpenBIOS
  • x86:
  • Improvements to system management mode emulation, including support for high SMRAM and TSEG on machines using the Q35 chipset.
  • q35 machine types starting with pc-q35-2.4.0 do not have a floppy disk controller. It will be created if you use "-drive if=floppy", "-fda" or "-fdb" to add a floppy disk drive, or it can be created if necessary with "-device isa-fdc".
  • q35 now implements the TCO watchdog. Unlike real hardware, the watchdog is disabled when the virtual machine boot, so as to let existing firmware run with new QEMU. This may change in the future, but the change would be restricted to new machine types.
  • KVM:
  • Support for MMIO operations outside the "big QEMU lock". For now, this only applies to the ACPI PM timer, which can alone improve performance substantially for very large Windows guests as long as they do not span multiple NUMA nodes in the host. For guests that span multiple NUMA nodes more kernel changes are required.
  • Support for system management mode (requires Linux 4.1).
  • When running under KVM, CPUID information includes the ARAT ("Always running APIC timer") bit
  • Device emulation and assignment:
  • ACPI:
  • Support for memory hot-unplug.
  • S3/S4 states can be disabled for boards using the Q35 machine type via "-global ICH9_LPC.disable_s3=on" and"-global ICH9_LPC.disable_s4=on"
  • Block devices:
  • Minimal support in NVMe emulation for the NVME_VOLATILE_WRITE_CACHE feature.
  • The infamous floppy device controller is not added to Q35 boards if not explicitly requested and no floppy drives are specified with "-drive if=floppy".
  • I/O throttling now supports groups, so I/O limits can be shared among multiple drives (use -drive throttling.group=).
  • Performance of the parallels image format block driver has been improved
  • Character devices:
  • Improved support for flow control in virtio-serial.
  • IDE:
  • Fix macio CDROM detection for PPC
  • Fix macio data corruption bug under Darwin/OS X PPC
  • AHCI support rerror=stop and werror=stop.
  • Mouse/keyboard:
  • Support for virtio-keyboard, virtio-mouse, virtio-tablet.
  • Network:
  • Support for the "rocker" L2 switch device.
  • SCSI:
  • scsi-generic now supports migration.
  • PCI/PCIe:
  • Support for extra PCI root buses using PCI expander bridge devices. Unlike PCI-PCI bridges, a PCI expander bridge's bus can be associated with a NUMA node, allowing the guest OS to recognize the proximity of a device to RAM and CPUs.
  • TPM:
  • Support for TPM 2
  • VFIO:
  • Support for resetting AMD Bonaire and Hawaii GPUs
  • Platform device passthrough support for Calxeda xgmac devices
  • virtio:
  • Support for up to 1024 queues.
  • Support for ioeventfd in virtio-mmio.
  • Support for virtio 1 standard:
  • For virtio-pci, Virtio 1 mode can now be enabled by specifying disable-modern=false. To suppress the legacy interface and create a non-transitional device, specify disable-legacy=true additionally. All devices now support this mode.
  • This support is still experimental: it functions fine in normal usage and so should be appropriate for guest driver development, but there are known issues around migration, guest out of memory handling, and performance.
  • When used with virtio 1, virtio blk no longer supports scsi command passthrough. Please use virtio scsi instead.
  • New virtio-gpu device (only supports accelerated 2D for now)
  • New virtio-input-host, virtio-keyboard, virtio-mouse and virtio-tablet devices (and corresponding virtio-*-pci devices for use on a PCI bus).
  • Support for cross-endian vhost (i.e. little-endian host and big-endian guest, or vice versa).
  • vhost can now be enabled even if MSI-X is not
  • virtio-balloon can tell the guest that it should deflate the balloon on OOM conditions.
  • VGA:
  • Support for virtio-vga, a VGA device that also supports the virtio-gpu interface.
  • Character devices:
  • Improved support for flow control in spice-char.
  • GUI:
  • Support for OpenGL-based display rendering in the SDL2 and GTK+ backend. This is preparatory work for 3D acceleration.
  • Improvements to the Cocoa front-end, fixing full-screen mode and adding a list of consoles to the View menu.
  • The two extra keys in Brazilian 107-key keyboards are now usable.
  • Monitor:
  • qmp: New MIGRATION event to communicate change in the migration state
  • Migration:
  • Support for compression of RAM data using multiple threads for compression and decompression (using migration capability "compress" and migration parameters "compress_threads", "compress_level" and "decompress_threads").
  • Network:
  • Support for multi-queue vhost-user backends.
  • Block devices in system emulation:
  • The BLOCK_IMAGE_CORRUPTED event has a new "node-name" field.
  • Block device mirroring supports concurrent unmap (aka discard or trim) operations on the source device and can create a thin-provisioned image in this case.
  • Block device mirroring can use discard or "write zero" operations to speed up copying of large zero regions.
  • Incremental backup interfaces added (sans transactions), see http://git.qemu-project.org/?p=qemu.git;a=blob;f=docs/bitmaps.md;hb=HEAD or http://github.com/qemu/qemu/blob/master/docs/bitmaps.md for details
  • Command-line options:
  • A longhand version of -global (-global driver=DRIVER,property=PROP,value=VAL) is introduced, to set properties globally for devices that have a period in their name. The older syntax -global DRIVER.PROP=VAL did not allow this.
  • New option -fw_cfg to pass arbitrary binary data to the guest.
  • TCG:
  • New command line option "-icount sleep=no". The option will run emulation at the maximum possible speed: every time the CPU would go to sleep, the virtual clock will move to the next timer deadline. For virtual machines that have no other sources of non-determinism (e.g. asynchronous block I/O, character devices or user input) this will also make execution deterministic.
  • Block devices and tools:
  • The "null" block device now has a new "latency-ns" option to delay the answer from the block device.
  • The iscsi driver can use the target's FUA capabilities to greatly improve roundtrip times in write-through caching modes (cache.writeback=off). These modes are recommended when the storage has a non-volatile (battery-backed) cache.
  • Parallels format driver now supports image creation and write to the image. Performance is significantly improved.
  • qcow2 performance improvements.
  • qemu-io supports encrypted qcow2 images (which are deprecated).
  • Audio:
  • Obsolete audio backends have been removed: esd (superseded by pulseaudio), winwave (superseded by dsound), fmod (not compatible with the GPL)
  • Guest agent:
  • Support for building a .msi file with the Windows version of the guest agent ("make msi"). This requires msitools.
  • qemu-ga implements guest-get-fsinfo and guest-network-get-interfaces on Windows too
  • User-mode emulation:
  • The default CPU for qemu-sh4 and qemu-sh4eb is the sh7785.
  • Build dependencies:
  • QEMU now requires a minimum glib version of 2.22. (In particular, we will no longer build on a stock RHEL5 or Centos 5 system.)
  • QEMU can now optionally be linked against tcmalloc.
  • QEMU now compiles using clang 3.5 without warnings, which includes disabling GCC features not supported by clang.
  • QEMU now compiles with ICC.
  • libepoxy is required to compile QEMU with OpenGL support.
  • Building on Mac OS X versions earlier than 10.5 is no longer supported.
  • Sound on Windows now requires DirectSound (the old 'winwave' default audio backend has been dropped).

New in QEMU 2.4.0 (Aug 12, 2015)

  • Incompatible changes
  • The handling of the floppy device controller is different between =2.4 machine types that use the Q35 chipset (e.g. "-M pc-q35-2.3" vs. "-M pc-q35-2.4"). This can cause problems if you are defining floppy drives with command-line options such as "-global isa-fdc.driveA=id.
  • The ARM 'virt' board default interface type has changed from IDE to virtio. This means that some incorrect command lines that we previously silently accepted will now fail with an error message like "qemu-system-arm: -drive file=img.qcow2,id=foo: Drive 'foo' is already in use because it has been automatically connected to another device (did you need 'if=none' in the drive options?)". As the error message suggests, you should add "if=none" to the -drive option to fix this.
  • 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.
  • Host floppy device pass-through (block driver "host_floppy") is deprecated, and will be dropped in a future release.
  • Block device parameter aio=native has no effect without cache.direct=on. It will be made an error.
  • A few devices will be configured with explicit properties instead of implicitly. Unlikely to affect users; for the full list, see the 2.3 ChangeLog.
  • QMP command blockdev-add is still a work in progress. It doesn't support all block drivers, it lacks a matching blockdev-del, and more. It might change incompatibly.
  • The configure option --disable-guest-base is unneeded and will be removed in a future release.
  • Alpha
  • Major fixes to the implementation of floating point exceptions.
  • ARM
  • New board model xlnx-ep108
  • Support for ACPI v5.1 tables in the "-M virt" board.
  • Support for instantiation sysbus devices from the command line (using "-device") in the "-M virt" board.
  • Emulation of the stream ID for MSI writes, for use in GICv3.
  • The "virt" board default drive type is now virtio; this means that drives created with if=virtio or with no if= specification will be created as drives plugged into a virtio-blk-pci device. Short form options like -hda will also create this kind of drive. (Note that at time of writing Linux only supports the virt board's PCI controller for 32-bit ARM kernels; support has not yet made it into the 64-bit kernels. So 64-bit guests will need to continue using long command lines and virtio-mmio for now.) Unfortunately this means that some old command lines will need to change -- see the "incompatible changes" section above for details.
  • KVM
  • MIPS
  • More accurate emulation of the dp8393x network card and RC4030 DMA/IOMMU controller.
  • Support for microMIPS32 R6 emulation (enabled in new "-cpu mips32r6-generic")
  • Support for unaligned R6 and MSA memory accesses in TCG
  • Support for XPA in MIPS32 and LPA in MIPS64 (eXtended and Large Physical Addressing) emulation
  • Support for MIPS UHI semihosting
  • PowerPC
  • The default RAM size for the pseries machine is 512 MB.
  • Support of PCI device hotplug on SPAPR (pSeries).
  • s390
  • Channel I/O is now available when running with TCG. Thus, the default machine for qemu-system-s390x is now s390-ccw.
  • Several other fixes for TCG (emulation) mode.
  • Extended name and UUID in STSI 3.2.2 information block
  • Support for reading/writing guest memory while holding the IPTE lock under KVM, including access register mode
  • Various cleanups in the s390-virtio and virtio-ccw transports
  • Support for diag288 watchdog (KVM only).
  • Support for vector registers
  • Add virtio-1 specific ccws to virtio-ccw (SET_REV and v1 version of SET_VQ)
  • Revision 1 (and therefore virtio 1.0) is not yet enabled, however.
  • The s390-ccw-virtio machine is now versioned; the first versioned machine is s390-ccw-virtio-2.4
  • The s390-ccw alias has been removed
  • Optimizations to code generated by TCG.
  • SPARC
  • Fix SunOS 4.1.4 boot on sun4m with OpenBIOS
  • x86
  • Improvements to system management mode emulation, including support for high SMRAM and TSEG on machines using the Q35 chipset.
  • q35 machine types starting with pc-q35-2.4.0 do not have a floppy disk controller. It will be created if you use "-drive if=floppy", "-fda" or "-fdb" to add a floppy disk drive, or it can be created if necessary with "-device isa-fdc".
  • q35 now implements the TCO watchdog. Unlike real hardware, the watchdog is disabled when the virtual machine boot, so as to let existing firmware run with new QEMU. This may change in the future, but the change would be restricted to new machine types.
  • KVM
  • Support for MMIO operations outside the "big QEMU lock". For now, this only applies to the ACPI PM timer, which can alone improve performance substantially for very large Windows guests as long as they do not span multiple NUMA nodes in the host. For guests that span multiple NUMA nodes more kernel changes are required.
  • Support for system management mode (requires Linux 4.1).
  • When running under KVM, CPUID information includes the ARAT ("Always running APIC timer") bit
  • Xen
  • Device emulation and assignment
  • ACPI
  • Support for memory hot-unplug.
  • S3/S4 states can be disabled for boards using the Q35 machine type via "-global ICH9_LPC.disable_s3=on" and"-global ICH9_LPC.disable_s4=on"
  • Audio
  • Block devices
  • Minimal support in NVMe emulation for the NVME_VOLATILE_WRITE_CACHE feature.
  • The infamous floppy device controller is not added to Q35 boards if not explicitly requested and no floppy drives are specified with "-drive if=floppy".
  • I/O throttling now supports "groups" so multiple disks can use share a budget (use -drive groups=)
  • Performance of the parallels image format block driver has been improved
  • Character devices
  • Improved support for flow control in virtio-serial.
  • IDE
  • Fix macio CDROM detection for PPC
  • Fix macio data corruption bug under Darwin/OS X PPC
  • AHCI support rerror=stop and werror=stop.
  • Mouse/keyboard
  • Support for virtio-keyboard, virtio-mouse, virtio-tablet.
  • Network
  • Support for the "rocker" L2 switch device.
  • SCSI
  • scsi-generic now supports migration.
  • PCI/PCIe
  • Support for extra PCI root buses using PCI expander bridge devices. Unlike PCI-PCI bridges, a PCI expander bridge's bus can be associated with a NUMA node, allowing the guest OS to recognize the proximity of a device to RAM and CPUs.
  • TPM
  • Support for TPM 2
  • VFIO
  • Support for resetting AMD Bonaire and Hawaii GPUs
  • Platform device passthrough support for Calxeda xgmac devices
  • virtio
  • Support for up to 1024 queues.
  • Support for ioeventfd in virtio-mmio.
  • FIXME: virtio 1
  • New virtio-gpu device (only supports accelerated 2D for now)
  • New virtio-input-host, virtio-keyboard, virtio-mouse and virtio-tablet devices (and corresponding virtio-*-pci devices for use on a PCI bus).
  • Support for cross-endian vhost (i.e. little-endian host and big-endian guest, or vice versa).
  • vhost can now be enabled even if MSI-X is not
  • virtio-balloon can tell the guest that it should deflate the balloon on OOM conditions.
  • VGA
  • Support for virtio-vga, a VGA device that also supports the virtio-gpu interface.
  • Character devices
  • Improved support for flow control in spice-char.
  • GUI
  • Support for OpenGL-based display rendering in the SDL2 and GTK+ backend. This is preparatory work for 3D acceleration.
  • Improvements to the Cocoa front-end, fixing full-screen mode and adding a list of consoles to the View menu.
  • The two extra keys in Brazilian 107-key keyboards are now usable.
  • Monitor
  • qmp: New MIGRATION event to communicate change in the migration state
  • Migration
  • Support for compression of RAM data using multiple threads for compression and decompression (using migration capability "compress" and migration parameters "compress_threads", "compress_level" and "decompress_threads").
  • Network
  • Support for multi-queue vhost-user backends.
  • Block devices in system emulation
  • The BLOCK_IMAGE_CORRUPTED event has a new "node-name" field.
  • FIXME: Throttle groups
  • Block device mirroring supports concurrent unmap (aka discard or trim) operations on the source device and can create a thin-provisioned image in this case.
  • Block device mirroring can use discard or "write zero" operations to speed up copying of large zero regions.
  • FIXME: incremental backup?
  • Command-line options
  • A longhand version of -global (-global driver=DRIVER,property=PROP,value=VAL) is introduced, to set properties globally for devices that have a period in their name. The older syntax -global DRIVER.PROP=VAL did not allow this.
  • New option -fw_cfg to pass arbitrary binary data to the guest.
  • TCG
  • New command line option "-icount sleep=no". The option will run emulation at the maximum possible speed: every time the CPU would go to sleep, the virtual clock will move to the next timer deadline. For virtual machines that have no other sources of non-determinism (e.g. asynchronous block I/O, character devices or user input) this will also make execution deterministic.
  • Block devices and tools
  • The "null" block device now has a new "latency-ns" option to delay the answer from the block device.
  • The iscsi driver can use the target's FUA capabilities to greatly improve roundtrip times in write-through caching modes (cache.writeback=off). These modes are recommended when the storage has a non-volatile (battery-backed) cache.
  • Parallels format driver now supports image creation and write to the image. Performance is significantly improved.
  • qcow2 performance improvements.
  • qemu-io supports encrypted qcow2 images (which are deprecated).
  • Audio
  • Obsolete audio backends have been removed: esd (superseded by pulseaudio), winwave (superseded by dsound), fmod (not compatible with the GPL)
  • Guest agent
  • Support for building a .msi file with the Windows version of the guest agent ("make msi"). This requires msitools.
  • qemu-ga implements guest-get-fsinfo and guest-network-get-interfaces on Windows too
  • User-mode emulation
  • The default CPU for qemu-sh4 and qemu-sh4eb is the sh7785.
  • Build dependencies
  • QEMU now requires a minimum glib version of 2.22. (In particular, we will no longer build on a stock RHEL5 or Centos 5 system.)
  • QEMU can now optionally be linked against tcmalloc.
  • QEMU now compiles using clang 3.5 without warnings, which includes disabling GCC features not supported by clang.
  • QEMU now compiles with ICC.
  • libepoxy is required to compile QEMU with OpenGL support.
  • Building on Mac OS X versions earlier than 10.5 is no longer supported.
  • Sound on Windows now requires DirectSound (the old 'winwave' default audio backend has been dropped).

New in QEMU 2.4.0 RC1 (Jul 17, 2015)

  • System emulation:
  • Incompatible changes:
  • The handling of the floppy device controller is different between =2.4 machine types that use the Q35 chipset (e.g. "-M pc-q35-2.3" vs. "-M pc-q35-2.4"). This can cause problems if you are defining floppy drives with command-line options such as "-global isa-fdc.driveA=id.
  • The ARM 'virt' board default interface type has changed from IDE to virtio. This means that some incorrect command lines that we previously silently accepted will now fail with an error message like "qemu-system-arm: -drive file=img.qcow2,id=foo: Drive 'foo' is already in use because it has been automatically connected to another device (did you need 'if=none' in the drive options?)". As the error message suggests, you should add "if=none" to the -drive option to fix this.
  • 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.
  • Host floppy device pass-through (block driver "host_floppy") is deprecated, and will be dropped in a future release.
  • Block device parameter aio=native has no effect without cache.direct=on. It will be made an error.
  • A few devices will be configured with explicit properties instead of implicitly. Unlikely to affect users; for the full list, see the 2.3 ChangeLog.
  • QMP command blockdev-add is still a work in progress. It doesn't support all block drivers, it lacks a matching blockdev-del, and more. It might change incompatibly.
  • The configure option --disable-guest-base is unneeded and will be removed in a future release.
  • Alpha:
  • Major fixes to the implementation of floating point exceptions.
  • ARM:
  • New board model xlnx-ep108
  • Support for ACPI v5.1 tables in the "-M virt" board.
  • Support for instantiation sysbus devices from the command line (using "-device") in the "-M virt" board.
  • Emulation of the stream ID for MSI writes, for use in GICv3.
  • The "virt" board default drive type is now virtio; this means that drives created with if=virtio or with no if= specification will be created as drives plugged into a virtio-blk-pci device. Short form options like -hda will also create this kind of drive. (Note that at time of writing Linux only supports the virt board's PCI controller for 32-bit ARM kernels; support has not yet made it into the 64-bit kernels. So 64-bit guests will need to continue using long command lines and virtio-mmio for now.) Unfortunately this means that some old command lines will need to change -- see the "incompatible changes" section above for details.
  • MIPS:
  • More accurate emulation of the dp8393x network card and RC4030 DMA/IOMMU controller.
  • Support for microMIPS32 R6 emulation (enabled in new "-cpu mips32r6-generic")
  • Support for unaligned R6 and MSA memory accesses in TCG
  • Support for XPA in MIPS32 and LPA in MIPS64 (eXtended and Large Physical Addressing) emulation
  • Support for MIPS UHI semihosting
  • PowerPC:
  • The default RAM size for the pseries machine is 512 MB.
  • Support of PCI device hotplug on SPAPR (pSeries).
  • s390:
  • Channel I/O is now available when running with TCG. Thus, the default machine for qemu-system-s390x is now s390-ccw.
  • Several other fixes for TCG (emulation) mode.
  • Extended name and UUID in STSI 3.2.2 information block
  • Support for reading/writing guest memory while holding the IPTE lock under KVM, including access register mode
  • Various cleanups in the s390-virtio and virtio-ccw transports
  • Support for diag288 watchdog (KVM only).
  • Support for vector registers
  • Add virtio-1 specific ccws to virtio-ccw (SET_REV and v1 version of SET_VQ)
  • Revision 1 (and therefore virtio 1.0) is not yet enabled, however.
  • The s390-ccw-virtio machine is now versioned; the first versioned machine is s390-ccw-virtio-2.4
  • The s390-ccw alias has been removed
  • SH:
  • Optimizations to code generated by TCG.
  • SPARC:
  • Fix SunOS 4.1.4 boot on sun4m with OpenBIOS
  • x86:
  • Improvements to system management mode emulation, including support for high SMRAM and TSEG on machines using the Q35 chipset.
  • q35 machine types starting with pc-q35-2.4.0 do not have a floppy disk controller. It will be created if you use "-drive if=floppy", "-fda" or "-fdb" to add a floppy disk drive, or it can be created if necessary with "-device isa-fdc".
  • q35 now implements the TCO watchdog. Unlike real hardware, the watchdog is disabled when the virtual machine boot, so as to let existing firmware run with new QEMU. This may change in the future, but the change would be restricted to new machine types.
  • KVM:
  • Support for MMIO operations outside the "big QEMU lock". For now, this only applies to the ACPI PM timer, which can alone improve performance substantially for very large Windows guests as long as they do not span multiple NUMA nodes in the host. For guests that span multiple NUMA nodes more kernel changes are required.
  • Support for system management mode (requires Linux 4.1).
  • When running under KVM, CPUID information includes the ARAT ("Always running APIC timer") bit
  • Device emulation and assignment:
  • ACPI:
  • Support for memory hot-unplug.
  • S3/S4 states can be disabled for boards using the Q35 machine type via "-global ICH9_LPC.disable_s3=on" and"-global ICH9_LPC.disable_s4=on"
  • Block devices:
  • Minimal support in NVMe emulation for the NVME_VOLATILE_WRITE_CACHE feature.
  • The infamous floppy device controller is not added to Q35 boards if not explicitly requested and no floppy drives are specified with "-drive if=floppy".
  • Character devices:
  • Improved support for flow control in virtio-serial.
  • IDE:
  • Fix macio CDROM detection for PPC
  • Fix macio data corruption bug under Darwin/OS X PPC
  • AHCI support rerror=stop and werror=stop.
  • Mouse/keyboard:
  • Support for virtio-keyboard, virtio-mouse, virtio-tablet.
  • Network:
  • Support for the "rocker" L2 switch device.
  • SCSI:
  • scsi-generic now supports migration.
  • PCI/PCIe:
  • Support for extra PCI root buses using PCI expander bridge devices. Unlike PCI-PCI bridges, a PCI expander bridge's bus can be associated with a NUMA node, allowing the guest OS to recognize the proximity of a device to RAM and CPUs.
  • TPM:
  • Support for TPM 2
  • VFIO:
  • Support for resetting AMD Bonaire and Hawaii GPUs
  • Platform device passthrough support for Calxeda xgmac devices
  • virtio:
  • Support for up to 1024 queues.
  • Support for ioeventfd in virtio-mmio.
  • FIXME: virtio 1
  • New virtio-gpu device (only supports accelerated 2D for now)
  • New virtio-input-host, virtio-keyboard, virtio-mouse and virtio-tablet devices (and corresponding virtio-*-pci devices for use on a PCI bus).
  • Support for cross-endian vhost (i.e. little-endian host and big-endian guest, or vice versa).
  • vhost can now be enabled even if MSI-X is not
  • virtio-balloon can tell the guest that it should deflate the balloon on OOM conditions.
  • VGA:
  • Support for virtio-vga, a VGA device that also supports the virtio-gpu interface.
  • Character devices:
  • Improved support for flow control in spice-char.
  • GUI:
  • Support for OpenGL-based display rendering in the SDL2 and GTK+ backend. This is preparatory work for 3D acceleration.
  • Improvements to the Cocoa front-end, fixing full-screen mode and adding a list of consoles to the View menu.
  • The two extra keys in Brazilian 107-key keyboards are now usable.
  • Monitor:
  • qmp: New MIGRATION event to communicate change in the migration state
  • Migration:
  • Support for compression of RAM data using multiple threads for compression and decompression (using migration capability "compress" and migration parameters "compress_threads", "compress_level" and "decompress_threads").
  • Network:
  • Support for multi-queue vhost-user backends.
  • Block devices in system emulation:
  • The BLOCK_IMAGE_CORRUPTED event has a new "node-name" field.
  • FIXME: Throttle groups
  • Block device mirroring supports concurrent unmap (aka discard or trim) operations on the source device and can create a thin-provisioned image in this case.
  • Block device mirroring can use discard or "write zero" operations to speed up copying of large zero regions.
  • FIXME: incremental backup?
  • Command-line options:
  • A longhand version of -global (-global driver=DRIVER,property=PROP,value=VAL) is introduced, to set properties globally for devices that have a period in their name. The older syntax -global DRIVER.PROP=VAL did not allow this.
  • New option -fw_cfg to pass arbitrary binary data to the guest.
  • TCG:
  • New command line option "-icount sleep=no". The option will run emulation at the maximum possible speed: every time the CPU would go to sleep, the virtual clock will move to the next timer deadline. For virtual machines that have no other sources of non-determinism (e.g. asynchronous block I/O, character devices or user input) this will also make execution deterministic.
  • Block devices and tools:
  • The "null" block device now has a new "latency-ns" option to delay the answer from the block device.
  • The iscsi driver can use the target's FUA capabilities to greatly improve roundtrip times in write-through caching modes (cache.writeback=off). These modes are recommended when the storage has a non-volatile (battery-backed) cache.
  • Parallels format driver now supports image creation and write to the image. Performance is significantly improved.
  • qcow2 performance improvements.
  • qemu-io supports encrypted qcow2 images (which are deprecated).
  • Audio:
  • Obsolete audio backends have been removed: esd (superseded by pulseaudio), winwave (superseded by dsound), fmod (not compatible with the GPL)
  • Guest agent:
  • Support for building a .msi file with the Windows version of the guest agent ("make msi"). This requires msitools.
  • qemu-ga implements guest-get-fsinfo and guest-network-get-interfaces on Windows too
  • User-mode emulation:
  • The default CPU for qemu-sh4 and qemu-sh4eb is the sh7785.
  • Build dependencies:
  • QEMU now requires a minimum glib version of 2.22. (In particular, we will no longer build on a stock RHEL5 or Centos 5 system.)
  • QEMU can now optionally be linked against tcmalloc.
  • QEMU now compiles using clang 3.5 without warnings, which includes disabling GCC features not supported by clang.
  • QEMU now compiles with ICC.
  • libepoxy is required to compile QEMU with OpenGL support.
  • Building on Mac OS X versions earlier than 10.5 is no longer supported.
  • Sound on Windows now requires DirectSound (the old 'winwave' default audio backend has been dropped).
  • Known issues:
  • SDL audio only works with SDL 1.x.
  • RCU thread registration is broken.
  • Compiling tools with --static may cause problems with gnutls and libgcrypt's pkg-config configuration.

New in QEMU 2.3.0 (Apr 27, 2015)

  • Support for 32-bit KVM guests on 64-bit ARM hosts
  • Support for running KVM under valgrind
  • New IvyBridge CPU model for x86 guests
  • Xen: support for ioreq-server API
  • New 5KEc and 5KEf MIPS64r2, and M14K and M14Kc MIPS32r2 microMIPS CPU models for MIPS guests
  • Basic support for transactional memory extentions in PowerPC guests
  • Improved VGA support for little-endian PPC/pSeries guests
  • PCI bus support for s390x guests
  • Support for automatic guest device unplug when passthrough devices are unbound from VFIO host driver
  • Improved UI performance/support for GTK+/VNC/SDL/Spice, and VNC support for multiseat
  • Performance improvements for virtio-blk emulation: asynchronous SCSI request handling, and disk read merging.
  • QEMU Guest Agent: now also supports file operations in Windows guests, can be used to enable/disable memory blocks in linux guests in support for memory hotplug.
  • Migration can now include a JSON description of migration stream to aid in identifying incompatibilities betweens guests/hosts.

New in QEMU 2.3.0 RC2 (Apr 5, 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 QEMU 2.3.0 RC1 (Mar 25, 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 QEMU 2.3.0 RC0 (Mar 19, 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 QEMU 2.2.1 (Mar 11, 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 QEMU 2.2.0 (Dec 10, 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 QEMU 2.2.0 RC3 (Nov 25, 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 QEMU 2.2.0 RC1 (Nov 12, 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 QEMU 2.2 RC0 (Nov 5, 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 QEMU 2.1.2 (Sep 26, 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 QEMU 2.1.1 (Sep 11, 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 QEMU 2.1.0 (Aug 1, 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 QEMU 2.1.0 RC2 (Jul 16, 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 QEMU 1.7.1 (Mar 26, 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 QEMU 2.0.0 RC0 (Mar 14, 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 QEMU 1.7.0 (Nov 28, 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 QEMU 1.7 RC2 (Nov 26, 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 QEMU 1.6.1 (Oct 10, 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 QEMU 1.6.0 (Aug 16, 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 QEMU 1.5.2 (Jul 26, 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 QEMU 1.5.1 (Jun 27, 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 QEMU 1.5.0 (May 21, 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 QEMU 1.4.0 (Feb 18, 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 QEMU 1.3.1 (Jan 29, 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 QEMU 1.3.0 (Dec 4, 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 QEMU 1.3.0 RC0 (Nov 20, 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 QEMU 1.2.1 (Nov 20, 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 QEMU 1.0.1 (Feb 18, 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 QEMU 1.0 (Dec 2, 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 QEMU 0.15.1 (Oct 13, 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 QEMU 0.14.1 (May 9, 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 QEMU 0.12.3 (Feb 27, 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 QEMU 0.11 RC1 (Jul 31, 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 QEMU 0.10.6 (Jul 31, 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 QEMU 0.10.5 (May 22, 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 QEMU 0.10.4 (May 13, 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 QEMU 0.10.3 (May 2, 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 QEMU 0.10.2 (Apr 7, 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 QEMU 0.10.1 (Mar 22, 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 QEMU 0.10.0 (Mar 7, 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