ChangeLog/2.12
Warning: unsupported host systems
Unsupported host setups are CPU and operating systems which we do not have access to and are thus unable to test. They will continue to work in this release (though configure will warn you about the unsupported status), but in a future QEMU release we may drop support for those hosts unless somebody volunteers to help us with maintaining them (and can provide build/CI machines).
This affects the OSes:
- GNU/kFreeBSD
- DragonFly BSD
- Solaris
- Haiku
System emulation
Incompatible changes
- The deprecated CLI options "-no-kvm-pit" and "-drive boot=on|off" have been removed (they only emitted a warning since QEMU 1.3.0).
- The deprecated CLI option "-net channel" has been removed. You can use "-netdev user,guestfwd=..." instead.
- The deprecated CLI option "-hdachs" has been removed. You can specify the disk geometry e.g. via -device ide-hd,cyls=c,heads=h,secs=s instead.
- The HMP commands "usb_add" and "usb_del" have been removed. Use "device_add" and "device_del" as replacement instead.
- The deprecated "spapr-pci-vfio-host-bridge" device has been removed (from qemu-system-ppc64). It is not needed for vfio since QEMU v2.6.0 anymore.
Deprecated options and features
- qemu-system-ppcemb is deprecated. Use qemu-system-ppc instead.
- The parameters "serial", "trans", "secs", "heads", "cyls" and "addr" of the "-drive" option are now deprecated. Use the corresponding options of "-device" instead.
- The "-nodefconfig" option is now deprecated. Use "-no-user-config" instead.
- The "-s390-squash-mcss" parameter for the s390-ccw-virtio machine is now deprecated. It has been made obsolete by allowing to put any device into any channel subsystem image (unrestricted cssids).
- The parameter "handle" of the "-fsdev" and "-virtfs" options is now depecrated. Use "local" instead.
- The qmp command "query-cpus" is now deprecated. Use the new "query-cpus-fast" qmp command instead, which does not interrupt all running vCPUs.
- While "-net" is not deprecated yet, you are encouraged to use the new option "-nic" instead of "-net", as it provides a simpler and better interface ("-nic user" replaces the old "-net nic -net user").
- The "handle" backend for 9pfs is deprecated.
Consult the "Deprecated Features" appendix for the full list of historically deprecated features/options.
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.
- 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).
- The read-only block drivers "bochs", "cloop" and "dmg" as well as "rbd" and "vvfat" in certain read-only configurations will no longer enable read-only mode automatically. It will be necessary to specify "read-only=on" explicitly on the command line and in QMP commands for the setup to keep working; the default "read-only=off" setting will result in an error.
- On s390x, using KVM with a Linux host kernel version < 3.15 has been broken since QEMU version 2.10. This will not be fixed unless a need is communicated (otherwise the code will be removed in the near future, so that you need at least Linux kernel version 3.15 on the host to run KVM on System z)
Alpha
68k
- Support for "info tlb", MC68040 MMU
- Full MC68040 FPU support
- MC68040 supervisor mode support (new instructions: moves, pflush, ptest, cpush, cinv)
- new user mode instructions: movep, move16, chk, chk2
ARM
- Cortex-M33 v8M emulation, used by the new mps2-an505 board.
- Many other improvements to M profile emulation.
- AArch64 v8.2 crypto instructions support.
- FCMA and RDM v8.1 and v8.3 instructions support.
- Initial support for Raspberry Pi 3 machine model
- i.MX6 SD controller support.
- i.MX7 SoC and i.MX7 Sabre board emulation.
- Display controller emulation for vexpress board.
- ZynqMP: support for QSPI, IPI and PMU devices.
- New options "-cpu max" and "-machine gic-version=max".
HPPA
- New target hppa-softmmu.
Microblaze
MIPS
Nios2
OpenRISC
PowerPC
- Improvements to the PPC4xx emulation, including I2C bus support.
- New Sam460ex machine types.
- Significant performance improvements for TCG.
pSeries
- Support for Meltdown/Spectre mitigations
RISC-V
- New RISC-V target, supporting machines "spike_v1.9.1", "spike_v1.10" and "virt".
s390
- unrestrict cssids: any device can now live in any channel subsystem image (no more virtual/non-virtual restrictions)
- this obsoletes the -s390-squash-mcss machine option
- pci: refactor and improve code, including handling of subregions
- virtio-pci devices that use MSI-X can now be used on s390x
- Support for sclp-based memory hotplug has been removed. It was incompatible with memory hotplug semantics on any other architecture, and has never worked correctly with regard to migration. You can still specify a 'maxmem=' parameter on the command line, but no standby memory will be available to the guest. This feature may be reintroduced with a s390x-specific interface in future releases.
- support for boot menu via the s390-ccw bios
- expose s390x guest crash information
TCG
- Rework of interrupt handling
- Implementation of missing instructions: SCKPF, STCRW, SAL, SCHM,
- Change qemu cpu model to a stripped down z12
- Can now boot recent Linux distributions (Fedora 26/27, Ubuntu 18.04,...)
- SMP support is now considered non-experimental
- PCI can now be used in tcg as well (add 'zpci=on' to the cpu model)
KVM
- allow for systems larger than 7.999TB
SH
SPARC
- Split sun4u APB device into separate Sabre, Simba and IOMMU devices and wire up using QOM/qdev instead of legacy init functions
- Add trace-events support for sun4u Sabre, IOMMU, and ebus devices (plus shared sparc64 functions)
- Add sun4u power device (including SUNW,power-off CIF service support)
- Add "power-off" command to OpenBIOS for sun4m and sun4u
- Fix leon3 irqmp software ACK
- Fix sparc_cpu_get_phys_page_debug() accesses to IO addresses
TileGX
Tricore
- Added variant instructions of JEQ and JNE
- Added 64 bit MOV instruction
- Added CORE_ID register
x86
- Intel IOMMU now supports 48-bit addresses.
- The default NIC for the q35 machine type is now e1000e (Intel 82574)
- -kernel now supports Multiboot kernels that set bss_end_addr = 0 in their Multiboot header
KVM
- Support for Processor Tracing
- Support for the "dedicated physical CPU" performance hint ("-cpu kvm-hint-dedicated=on")
- Support for AMD Secure Encrypted Virtualization
Xen
Xtensa
- The backend was changed to use the Xtensa libisa for instruction decoding and disassembling.
- New cores: de212 and sample_controller.
- XTFPGA boards now support noMMU configurations variants.
- Add linux-user support.
Device emulation and assignment
ACPI
Audio
Block devices
- Lots of SD card emulation cleanups and bugfixes.
Graphics
Input devices
IPMI
Network devices
PCI/PCIe
SCSI
- The share-rw property is now supported on scsi-block and scsi-generic.
TPM
- Support for the TPM 2.0 Command Response Buffer.
USB
- MTP write support.
- The share-rw property is now supported on usb-storage.
VFIO
- New experimental option x-no-geforce-quirks to disable GeForce quirks
- New experimental option x-msix-relocation to relocate the MSI-X MMIO BAR.
- Display support for vGPUs, on graphic backends that support dmabufs.
virtio
- Virtio balloon exposes statistics on disk caches
Xen
fw_cfg
9pfs
- No longer send spurious EINTR back to the guest on request cancellation (ie, when I/O was interrupted by a signal in the guest)
Audio
- Audio drivers for ALSA, OSS, PulseAudio and SDL can be build as run-time loaded modules.
Character devices
Crypto subsystem
GUI
- The Curses, GTK+ and SDL interfaces can be build as run-time loaded modules.
- GTK and Spice support dmabufs.
Host support
- Experimental support for two new virtualization accelerators: Apple's Hypervisor.framework ("-accel hvf") and Microsoft's Windows Hypervisor Platform Extensions ("-accel whpx")
Monitor
- A new qmp command, "query-cpus-fast", has been introduced to obtain information about vCPUs without the need to interrupt running vCPUs. In turn, "query-cpus" has been deprecated.
- The "info cpus" hmp command has been switched to use "query-cpus-fast" as a backend.
- The QMP monitor now advertises a new "oob" capability on initial connection; if the client requests this capability during "qmp_capabilities", then the client can request that certain QMP commands be processed out-of-band (where a reply may occur prior to a longer-running previous in-band command).
Migration
- Support for postcopy live migration when using a cooperative vhost-user server.
Network
- Backends created with -netdev can be used with the hostfwd_add and hostfwd_remove monitor commands
- A hub can be connected to a netdev using "-netdev hubport,id=...,netdev=NAME"
- CAN bus support, including support for Linux SocketCAN and three SJA1000-based PCI interfaces.
- Support for the VMware paravirtualized RDMA device. The device supports both RDMA HCA and Soft-RoCE (rxe).
- New option "-nic" to quickly create a network front-end (emulated NIC) and a host back-end.
- Any PCI NIC can be specified in "-net nic,model=..." or "-nic ...,model=".
Block devices and tools
- Block device dirty bitmaps can be copied to the destination machine during migration.
- Host NVMe controllers can be directly driven by QEMU via VFIO, with the new nvme:// protocol.
- Support for backing files in the Parallels driver.
- The QEMU NBD implementation (both as server and as client) has learned support for more efficient reads of sparse files (via structured reads), and for querying block status to learn which portions of an NBD export read as zeroes (via NBD_CMD_BLOCK_STATUS on the base:allocation namespace).
- qcow2 images can be configured with a custom L2 cache entry size.
- gluster and sheepdog support preallocation for resize now.
- The interactive qemu-io shell now recognises Ctrl-D for quit.
- Fixed some crashes related to guests attempting I/O on empty drives (for removable media).
- Added the experimental x-blockdev-create QMP command to create images. All block drivers that can create images are supported, with the exception of VMDK. This interface is not considered stable yet and may change incompatibly in future QEMU versions.
- The drive-backup and blockdev-backup QMP commands support the new options "auto-finalize" and "auto-dismiss", which allow clients to disable the automatic completion and/or deletion of block jobs so that the result can be queried even if the QMP event was missed, and changes to the block graph occur at a defined point.
Tracing
- The ftrace backend supports the "tracefs" file system that is provided by recent Linux kernels.
Miscellaneous
- Improved support for dual-stack IPv4/IPv6 networks. QEMU can now listen on separate sockets for IPv4 and IPv6 connections.
- Improved memory usage, especially at startup.
- Support for memfd memory backend (memory-backend-memfd). Unlike the default backend, memfd-backed memory can be shared with external vhost-user processes.
User-mode emulation
- New aarch64_be target.
- Preliminary SVE support.
- ARMv8.2 arithmetic extension for linux-user
- Support for renameat2, getcpu(), AT_SECURE auxval, ioctl TIOCGPTPEER
- Fixes for fork() deadlocks on heavily multi-threaded programs.
- MIPS and m68k select CPU model according to ELF header values
- ARM ELF startup speed fix
- Xtensa support
- Dropped unicore32 support
TCG
- Generic Vectors Support - a new extension to the TCG register types for better handling of SIMD registers
Guest agent
Build Information
GIT submodules
Build Dependencies
- GTK+ 2.x support is deprecated, GTK+ 3.x should be used instead.
- SDL 1.2 support is deprecated, SDL 2.0 should be used instead.
- Python 3.x can be used to build QEMU.
Known issues
- see Planning/2.12