ChangeLog/2.9
System emulation
Incompatible changes
- Improvements to "-drive":
- "-drive"'s if option defaults to "none" on machines that do not have an onboard IDE or SCSI controller.
- "-drive if=scsi" does not work anymore with PC machine types, as it created an obsolete SCSI controller model. QEMU supports better controllers (megasas, mptsas, virtio-scsi) but which to use depends on the guest you are using.
- "Orphan" -drive options, where an if option is not supported by the emulated machine (e.g. "if=mtd" on x86) is now a fatal error. It had been triggering a warning since version 2.2.
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).
68k
- Support for many 680x0 opcodes.
ARM
KVM
MIPS
- New MIPS Boston board (-M boston) on MIPS64EL.
Nios2
- New target, with support for Nios-II R1, emulating the 10M50 development kit with the Nios2 GHRD loaded in the FPGA.
OpenRISC
- Many fixes and many instructions added.
PowerPC
- Lots of POWER9 instructions are implemented for TCG.
- New "40p" machine type, essentially a cleaned up version of the old "-M prep".
- Under KVM, the guest timebase stops when the guest is stopped.
pSeries
- Support for the H_SIGNAL_SYS_RESET hypercall
s390
- Multiple bus support for zPCI.
- Bump maximum numbers of virtqueues for virtio-ccw to 1024 (same as other transports).
- Enable virtio-crypto via virtio-ccw.
SH
SPARC
- Support for Niagara has been rewritten; "-M niagara" has replaced the old "-M Niagara" (with uppercase N) machine type.
TileGX
Tricore
- Support for more instructions (UPDFL, more JNE/MOV variants, MADD.F, MSUB.F, FTOUZ).
x86
- TCG supports 5-level paging.
- The q35 machine type offers SMI feature negotiation to interested guest firmware.
- Intel IOMMU emulation can now report the caching mode capability to the guest through the "caching-mode=on" property. This is disabled by default.
KVM
- When KVM is in use, the VMware-specific CPUID leaf for the TSC frequency can be passed to guests if the TSC frequency of the guest is stable. This happens with either "-cpu ...,invtsc" or "-cpu ...,tsc-freq=HZ"
- When Hyper-V crash reporting is active, QEMU will augment GUEST_PANICKED events with the bugcheck code and arguments
Xen
- Support for unplugging NVMe disks at startup
Xtensa
- Support for -icount.
Device emulation and assignment
ACPI
- The QEMU linker/loader command set has been extended with WRITE_POINTER, which lets guest firmware pass the address of firmware-allocated areas back to QEMU.
- QEMU provies ATSR information in the DMAR table. ATSR is required for software that wants to enable ATS on endpoint devices behind a PCIe Root Port.
Block devices
- I/O threads (supported by virtio-blk and experimentally by virtio-scsi) will poll for I/O submission and completion for a limited time after they have been woken up. This improves performance on some I/O-heavy testcases but 10-20%.
Network devices
- virtio-net devices can pass the MTU to the guest.
SCSI
PCI/PCIe
- New device "pcie-root-port" provides a generic PCIe root port.
- New machine types have SHPC disabled on PCI-to-PCI bridges, and only use ACPI for hotplug support. This makes slot 0 usable.
USB
- Many XHCI emulation bugfixes.
VFIO
virtio
- virtio-crypto devices support hotplug.
- virtio-pci devices enable Address Translation Service (ATS). This is needed to support vhost for devices sitting behind an IOMMU.
Xen
fw_cfg
The DMA interface to fw_cfg now supports writeable blobs.
The fw_cfg_io and fw_cfg_mem devices now have more slots for files; the FW_CFG_FILE_SLOTS constant has been replaced with the (internal only) x-file-slots property. The property can be further raised in future machine types if absolutely necessary.
Character devices
- A new backend "wctablet" provides emulation for Wacom Penpartner serial tablets.
Crypto subsystem
- The crypto subsystem now includes support for HMAC algorithms, which are used in virtio-crypto. (?)
GUI
- "-display vnc" can specify multiple VNC listen addresses.
- "-display vnc" can listen on all resolved addresses for a hostname, including for example IPv4 and IPv6 addresses.
Monitor
- QEMU now includes Texinfo documentation for all QMP commands and events.
- The guest memory map can be dumped in flat format (i.e. with all subregions resolved) with "info mtree -f".
Migration
- A new option --only-migratable will prevent adding devices that cannot be live-migrated.
Network
- slirp's TFTP server supports dynamic block sizes.
Block devices and tools
User-mode emulation
- Support for hppa-linux emulation.
- Support for nios2-linux emulation.
Removed target support
New functionality
TCG
- Improvements to MIPS code generation.
- TCG can use host opcodes for "extract", "count leading/trailing zeros", "population count"
Build Information
Documentation
Build dependencies
- QEMU now requires a minimum dtc version of 1.4.2.