ChangeLog/6.0
System emulation
Incompatible changes
- The deprecated pc-1.0, pc-1.1, pc-1.2 and pc-1.3 machine types have been removed (they likely could not be used for live migration from old QEMU versions anymore anyway). Use a newer pc-i440fx-... machine type instead.
- The change QMP command has been removed. Use blockdev-change-medium or change-vnc-password instead.
- The -show-cursor option has been removed. Use -display sdl,show-cursor=on instead.
- The -realtime option has been removed. Use -overcommit mem-lock=on|off' instead.
- The -tb-size option has been removed. Use -accel tcg,tb-size=... instead.
- The configure script --enable/disable-git-update args have been replaced with --with-git-submodules
New deprecated options and features
Consult the "Deprecated Features" chapter of the QEMU System Emulation User's Guide for the full list of historically deprecated features/options.
- The --enable-fips option has been deprecated. Consumers wishing to have FIPS compliance must build QEMU with libcrypt and gnutls, NOT nettle.
68k
Alpha
Arm
- QEMU now supports emulation of the Arm-v8.1M architecture and the Cortex-M55 CPU
- Emulation of the ARMv8.4-TTST extension is now supported
- Emulation of the ARMv8.4-SEL2 extension is now supported
- Emulation of the PAuth extension now supports an optional IMPDEF pauth algorithm which is not cryptographically secure but is much faster to compute
- Emulation of the ARMv8.4-DIT extension is now supported. (Note that QEMU's implementation does not in fact provide any timing guarantees; emulation of the extension is purely to support guests which query its presence and work with the PSTATE.DIT bit.)
- Emulation of the ARMv8.5-MemTag extension is now supported for linux-user. (It was already supported for system emulation.)
- xlnx-zynqmp boards now support the Xilinx ZynqMP CAN controllers
- the sbsa-ref board now supports Cortex-A53/57/72 cpus
- the xlnx-versal board now has USB support
- the sabrelite board emulation has been improved and it can now run U-Boot
- the npcm7xx boards support more devices: ADC, PWM, SMBus
- the gdbstub's representation of SVE registers allows GDB to properly handle aliasing
- the 'virt' board now provides a mechanism for secure (EL3) firmware to power down or reset the system
- documentation for vexpress/versatile has been updated with example kernel configuration/command lines
AVR
HPPA
Microblaze
MIPS
- Loongson-3 "virt" machine added
Nios2
OpenRISC
PowerPC
- Deprecated 'compat' property of server class POWER cpus removed (use the 'max-cpu-compat' machine option instead)
- You can now explicitly choose 'kvm_type=auto' rather than only being able to do that by not setting it at all.
- powernv machine type now defaults to 1GiB of RAM
- powernv now allows an external BMC
Renesas RX
Renesas SH
RISC-V
- Improve the sifive_u DTB generation
- Add QSPI NOR flash to Microchip PFSoC
- Fix a bug in the Hypervisor HLVX/HLV/HSV instructions
- Fix some mstatus mask defines
- Ibex PLIC improvements
- OpenTitan memory layout update (Breaking change)
- Initial steps towards support for 32-bit CPUs on 64-bit builds
- Automate GDB XML generation (should fix GDB E14 errors)
- Sifive OTP handle OTP access failures
- Correctly generate a PMP failure when no PMP entry is configured
- Fix 32-bit Linux boot problems with DTB placement
s390
- Linux kernels built with clang-11 and clang-12 now work correctly under tcg
SPARC
TileGX
Tricore
x86
- TCG can emulate the PKS feature (protection keys for supervisor pages).
- Intel PT can now be exposed to KVM guests when
CPUID.(EAX=14,ECX=0).ECX[LIP]
(bit 31) is 1. Previous versions only supported Intel PT when LIP=0 - New
sev-inject-launch-secret
QMP command - The WHPX accelerator supports accelerated APIC ("-accel whpx,kernel-irqchip=on")
- The microvm machine type got a second (optional) ioapic for the virtio-mmio irq lines, which in turn allows 24 (instead of 8) virtio-mmio devices.
- Support for running SEV-ES encrypted guests.
Xtensa
Device emulation and assignment
ACPI
Audio
Block devices
Graphics
Input devices
IPMI
Multi-process QEMU
- The experimental
-machine x-remote
and-device x-pci-proxy-dev
options have been added to support out-of-process device emulation. Currently only thelsi53c895
SCSI device can be emulated in a separate process. Please see the documentation and Features/MultiProcessQEMU for details on this experimental feature, which is still subject to change.
Network devices
NVDIMM
- nvdimm devices will check that
-device nvdimm,unarmed=on
option is used when using-object memory-backend-file,readonly=on
NVMe
PCI/PCIe
- The 'pvpanic-pci' device is a PCI-device version of the 'pvpanic' ISA device, which can be used on systems with only PCI and no ISA bus as a mechanism for the guest to inform QEMU that it has paniced.
SCSI
SD card
SMBIOS
TPM
USB
- Support for writing usb traffic to package capture files for inspection with wireshark has been added. Use the new pcap=<file> property added to all usb devices to enable this.
VFIO
virtio
Xen
fw_cfg
9pfs
virtiofs
- Security fix for CVE-2020-35517 - prevent opening of special files
- Performance improvements with new guest kernel feature FUSE_KILLPRIV_V2
Semihosting
- Added support for RiscV (ARM style semihosting)
- Added support for HEAPINFO, ELAPSED, TICKFREQ, TMPNAM and ISERROR to semihosting
Audio
Character devices
Crypto subsystem
experimental qmp interface
GUI
- vnc: support for cursors with alpha channel has been added.
- vnc: support for extended desktop resize has been added. With virtio-vga the guest display should adapt to vnc client window resizes.
GDBStub
- the stub now supports the Xfer:auxv:read for Linux user guests
- the GDB stubs now uses the "official" gdb representation for SVE registers
TCG Plugins
- New API for querying details about HW access
- Bug fix to avoid double counting some instructions when using -icount
Host support
Memory backends
- hostmem-file: added readonly=on|off option
Migration
- New feature (experimental): Background RAM snapshot from Andrey Gruzdev; using the Linux UFFD-WP feature, enabling fixed size snapshots even with busy guests
- QMP native snapshot commands -snapshot-{save,load,delete}
- query/info-migrate now display the migration blocker status and the reasons for blocking.
Monitor
QMP
- A new command set-action has been introduced. The command generalizes watchdog-set-action and allows changes to all the settings of the (also new) -action command line option.
- New OOB commands yank and query-yank have been introduced. The yank command allows to recover from a hanging QEMU by shutting down sockets for example. See the QMP documentation for more information. The query-yank command lists the available things to yank.
- The new QMP commands load-snapshot, save-snapshot and delete-snapshot provide a mechanism for managing internal qcow2 snapshots, that was previously only available via HMP commands loadvm, savevm and delvm
- The block-bitmap-mapping parameter within the QMP command migrate-set-parameters gained a transform member for adjusting the persistence of a bitmap on the destination.
HMP
Network
Block device backends and tools
- For its background operation, the backup job now runs multiple asynchronous requests in parallel
- The stream block job now uses the copy-on-read block driver (and its new bottom option) to let copy-on-read help make progress even when using any of block-stream’s base, base-node, or bottom options
- The new QMP commands load-snapshot, save-snapshot and delete-snapshot provide a mechanism for managing internal qcow2 snapshots, that was previously only available via HMP commands loadvm, savevm and delvm
- When qemu operates as an NBD server that will service multiple clients (whether via QMP nbd-server-start, qemu-storage-daemon, or qemu-nbd), it now allows a larger backlog of pending clients. When using a Unix socket, this avoids a client failing to connect due to EAGAIN.
- qemu-nbd --shared=0 now works to allow an unlimited number of shared clients to a single NBD server.
Tracing
Miscellaneous
- A new command line option -action, with suboptions panic, shutdown, reboot and watchdog. -action subsumes the pre-existing options -no-shutdown (-action panic=pause,shutdown=pause), -no-reboot (-action reboot=shutdown) and -watchdog-action; plus, it allows the user to choose whether guest panic should pause the guest (-action panic=pause), shut it down (-action panic=poweroff, the default) or be ignored (-action panic=none).
- A new generic machine option confidential-guest-support was added to (partially) unify configuration for AMD SEV memory encrypt, POWER PEF and s390 Protected Virtualization, plus future methods of protecting a guest from eavesdropping by a compromised hypervisor.
User-mode emulation
Hexagon
Added support for the Qualcomm Hexagon processor, in linux-user mode only.
TCG
- Added support for Apple Silicon hosts (macOS)
Guest agent
Build Information
- Support for building with link-time optimization or with LLVM control-flow integrity
- New "gtags" build target for developers
- checkpatch now better handles commit ids when checking
Python
GIT submodules
Container Based Builds
- handling of binfmt_misc containers has improved the handling of dynamically linked binaries pointing at symlinks
Build Dependencies
Windows
Testing and CI
- shippable support has been removed
- more testing has been migrated from Travis to GitLab
Known issues
- see Planning/6.0