ChangeLog/1.3

From QEMU

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.