System emulation

Incompatible changes

Drop device types virtio-input-host-pci-transitional and virtio-input-host-pci-non-transitional

New deprecated options and features

The "-virtfs_synth" option is now deprecated. Please use "-fsdev synth" and "-device virtio-9p-..." instead.

The "-numa node,mem" sub-option is now deprecated. Please use "-numa node,memdev" instead.

Default memory distribution between NUMA nodes is now deprecated. Please specify memory per NUMA node explicitly using "-numa node,memdev"

Fallback to normal RAM allocation if QEMU is not able to allocate from the "-mem-path" provided file/filesystem is now deprecated. Make sure that host has sufficient resources on the filesystem/file pointed be "-mem-path".

Consult the "Deprecated Features" appendix for the full list of historically deprecated features/options.

Alpha

68k

Arm

QEMU now supports emulating an FPU for Cortex-M CPUs, and the Cortex-M4 and Cortex-M33 now provide the FPU.

The Cortex-R5F now correctly provides an FPU with registers D0-D15 only, rather than incorrectly providing also D16-D31.

The build config files have been switched to the new Kconfig system, so that a QEMU with individual boards can be built more easily.

The ARMv8.5-RNG extension is supported, for cpu generated random numbers.

The Exynos4210 SoC model now supports the PL330 DMA controllers.

Some bugs in handling of GICv3 ICC_CTLR_EL3 and ICH_VMCR_EL2 register writes have been fixed.

The built-in bootloader now handles loading AArch64 kernel Image files which are larger than 128MB.

The GICv3 now correctly reports GICD_TYPER.SecurityExtn as 0 if GICD_CTLR.DS is 1.

New board model: swift-bmc

New board-model: sbsa-ref (an AArch64 system intended for development of the server firmware and kernel software stack)

The Aspeed SoC/boards now support the RTC device and the xdma device

The i.mx7 PCI controller emulation has been improved so it can boot current Linux kernels

The pl031 RTC device now correctly makes the guest RTC track advances in host RTC time between a VM state save and a later reload.

HPPA

Microblaze

MIPS

Improved marking referenced memory pages as executable (it is now restricted to necessary cases only).

Fixed logic errors for certain cases of MFTR and MTTR instruction handling.

Fixed some corner cases of MSA FCLASS.<W|D> instruction handling.

Improved 'division by zero' cases in MSA ASE instructions DIV_<U|S>.<B|H|W|D> and MOD_<U|S>.<B|H|W|D> - they are now handled both in QEMU and on the reference hardware the same way.

Fixed emulation of a number of MSA ASE instructions on big endian hosts. Affected instructions are LD.<B|H|W|D>, ST.<B|H|W|D>, COPY_S.<B|H|W|D>, COPY_U.<B|H|W>, INSERT.<B|H|W|D>, ILVEV.<B|H|W|D>, ILVOD.<B|H|W|D>, ILVL.<B|H|W|D>, ILVR.<B|H|W|D>, PCKEV.<B|H|W|D>, and PCKOD.<B|H|W|D>.

Improved emulation performance of numerous MSA instructions, mostly integer and data permuting operations.

Nios2

OpenRISC

PowerPC

NVIDIA V100 GPU/NVLink2 passthrough for spapr using VFIO PCI

The TCG implementation of the Power9 DARN instruction now produces random numbers, instead of indicating failure.

pseries machine now supports KVM acceleration (kernel_irqchip=on) of the XIVE interrupt controller

pseries now defaults to XIVE interrupt controller if using pseries-4.1 machine version, POWER9 cpu and a guest OS which supports it

pseries now supports hot-plug of PCI bridges and hot-plug and unplug of devices under PCI bridges

powernv now supports dumping the device tree with the "dumpdtb" machine option

A number of vector (Altivec and VSX) instructions have had their implementations optimized in TCG

RISC-V

Arbitrary bits in SIP can no longer be set.

A new "spike" machine has been defined, with the old machines being deprecated.

sfence.vma can no longer execute from userspace.

Single-stepping over branches and jumps now works.

A handful of illegal instructions (all compressed) are now handled correctly, as opposed to being treated as NOPs.

Support for version 1.11.0 of the privileged specification has been added.

SiFive's PRCI now supports reading and writing all the device registers.

The ISA of the target machine can be controlled from the command line.

QEMU provides a cpu-topology device tree node on targets that support device trees.

Load reservations are broken by both store conditional and scheduling.

The 32-bit syscall ABI has various bug fixes.

The PCI bus-range property is now set correctly.

s390

The bios now supports IPL (boot) from ECKD DASD assigned to the guest via vfio-ccw.

The bios now tolerates the presence of bootmap signature entries written by zipl.

All Vector Instructions introduced with the "Vector Facility" have been implemented for TCG. The "Vector Facility" is now indicated in the "qemu" cpu model, which has been updated to a stripped-down z13.

More facilities and gen15 machines (official name not yet known) have been added to the cpu model. This also includes the AP Queue Interruption Facility, which allows to use interrupts for vfio-ap devices, if supported by the host kernel.

vfio-ccw now supports forwarding HALT SUBCHANNEL and CLEAR SUBCHANNEL to the device.

SH

SPARC

sun4m and sun4u fixes when running with -vga none (OpenBIOS)

sunhme fixes when running on a TAP network interface

TileGX

Tricore

Add FTOIZ/UTOF/QSEED insns

Fix sync of hflags and swapped args of RRPW_INSERT

x86

New Hygon Dhyana CPU model

New Intel SnowRidge CPU model

The host-cache-info CPU option now affects the TOPOEXT CPUID leaf (0x8000001D)

CPU option now affects the TOPOEXT CPUID leaf (0x8000001D) The RDRAND extension is implemented for TCG.

md-clear and mds-no feature flags, for detection and mitigation of MDS vulnerabilities (CVE-2018-12126, CVE-2018-12127, CVE-2018-12130, CVE-2019-11091)

All x86 CPU models are now versioned

CPU die topology can now be configured using the -smp ...,dies=... option

Xtensa

Implement memory protection unit (MPU) option

Implement Exclusive Access option

Device emulation and assignment

ACPI

Audio

Block devices

GPIO

SiFive's GPIO controller is now supported.

Graphics

Input devices

IPMI

Network devices

NVDIMM

PCI/PCIe

SCSI

SMBIOS

TPM

USB

VFIO

virtio

Xen

fw_cfg

9pfs

Semihosting

semihosting output can now be redirected to a chardev backend with -semihosting-config enable=on,target=native,chardev=[ID]

Audio

Character devices

Crypto subsystem

The nettle backends now build without deprecation warnings with nettle >= 3.5.1

GUI

virtio-gpu 2d/3d rendering may now be offloaded to an external vhost-user process, such as QEMU vhost-user-gpu. Use vhost-user-vga & vhost-user-gpu-pci for associated devices. See patch series.

Host support

Memory backends

QEMU will automatically try to use the MAP_SYNC mmap flag for memory backends configured with pmem=on,share=on

Monitor

query-qmp-schema now supports feature flags. Intended use is signalling some change that would otherwise be invisible in introspection. For details, see docs/devel/qapi-code-gen.txt.

now supports feature flags. Intended use is signalling some change that would otherwise be invisible in introspection. For details, see docs/devel/qapi-code-gen.txt. Security implications of using & exposing the monitor are explained in detail. See docs/security.texi

query-cpu-definitions now return CPU model alias information

now return CPU model alias information query-machines now return machine type deprecation information

Migration

Network

Support remote colo-frame (e.g Xen) through a new notify_dev parameter of COLO compare

Allow to trigger self announcement of dedicated interfaces list

Added a --salvage option to qemu-img convert , which prevents the conversion process from aborting on I/O errors. This can be used for example to salvage partially corrupted qcow2 files.

option to , which prevents the conversion process from aborting on I/O errors. This can be used for example to salvage partially corrupted qcow2 files. The SSH block driver switches from using libssh2 to libssh

qemu-img rebase works now even when the input file doesn't have a backing file yet

works now even when the input file doesn't have a backing file yet The backup block job now accepts any source node

qemu-nbd now supports a --pid-file option, writing its pid into that file after other initialization is complete

now supports a --pid-file option, writing its pid into that file after other initialization is complete QAPI schema introspection exposes the feature dynamic-auto-read-only for the type BlockdevOptionsFile to signal that for the file driver, auto-read-only=on is not only a static fallback to read-only when opening the file, but dynamically reopens the file read-only or read-write as needed (the behaviour changed already in 4.0, this adds introspection for it).

for the type to signal that for the driver, is not only a static fallback to read-only when opening the file, but dynamically reopens the file read-only or read-write as needed (the behaviour changed already in 4.0, this adds introspection for it). The VMDK block driver now has read-only support for the seSparse subformat

Tracing

Miscellaneous

Unless QEMU is configured with --disable-blobs , make install will install UEFI platform firmware binaries, and matching variable store templates, at $prefix/share/qemu/edk2-*.fd . These files are built from the edk2 project's ArmVirtPkg and OvmfPkg firmware platforms, and the edk2 project's OpenSSL and Berkeley SoftFloat submodules. They are documented (and exposed to virt management applications) through JSON files in $prefix/share/qemu/firmware/ . The schema definition for the JSON descriptors is located at docs/interop/firmware.json in the QEMU source tree.

, will install UEFI platform firmware binaries, and matching variable store templates, at . Now it's possible to specify memory-less NUMA node when using "-numa node,memdev" options which was only possible with now deprecated "-numa node,mem".

The capstone library is no longer linked to non-emulator binaries resulting in a significant disk footprint space saving for tool-only installs.

User-mode emulation

Alpha

Fix for linux-user emulation of fp exceptions (launchpad bug 1701835)

TCG

Softmmu test harnesses have been added for alpha, aarch64 and x86_64

gdbstub now supports custom gdb maint packet support for physical address mode

Guest agent

Build Information

The configure argument --source-path has been removed. This argument used to be provided to allow the user to specify that the source tree was in a different location from the configure script itself. This odd way of building is no longer supported, and we always assume that the source tree is where the configure script is. (Note that a separate build tree is still permitted -- the build tree is the working directory in which configure is run.)

Python

Python 2 support is deprecated and will be removed in a future QEMU version

Build and test scripts will now use the python3 binary by default if available

GIT submodules

Build Dependencies

The SSH block driver now requires libssh instead of libssh2

Testing

A number of the tests/vm images are now setup from scratch via serial install rather than relying on QEMU hosted golden images

Windows

The windows cross compile (test-mingw) now builds the installer as well