ChangeLog/6.2
System emulation
Incompatible changes
Consult the 'Removed features' page for details of suggested replacement functionality
New deprecated options and features
Consult the "Deprecated Features" chapter of the QEMU System Emulation User's Guide for further details of the deprecations and their suggested replacements.
68k
- Improved support for Apple's Nubus, including the ability to load declaration ROMs and slot IRQ support
- The macfb framebuffer device now supports the same video modes found on a real Quadra 800
Alpha
Arm
- On macOS hosts with Apple Silicon CPUs we now support the 'hvf' accelerator for running AArch64 guests
- M-profile CPUs now emulate trapping on division by zero via CCR.DIV_0_TRP
- The pl011 UART model now supports sending 'break'
- The Fujitsu A64FX processor model is now supported in TCG ('-cpu a64fx')
- The M-profile MVE extension is now supported, and enabled in the Cortex-M55
- The deprecated machine names 'raspi2' and 'raspi3' have been removed; use 'raspi2b' and 'raspi3b' instead
- The 'virt' machine now supports an emulated ITS
- New machine type: kudo-bmc
- The xlnx-zcu102 and xlnx-versal-virt machines now support BBRAM and eFUSE devices
- The 'virt' machine now supports more than 123 CPUs in TCG emulation mode
- The pl031 real-time clock device now supports sending RTC_CHANGE QMP events
AVR
Hexagon
HPPA
Microblaze
MIPS
Nios2
OpenRISC
PowerPC
- Improved POWER10 support for the 'powernv' machine
- Initial support for POWER10 DD2.0 CPU added
- Added support for FORM2 PAPR NUMA descriptions in the "pseries" machine type
- With a guest kernel that also has support, this allows for asymmetric and other complex NUMA tolopogies which previously couldn't be communicated to the guest
- Maintainer changed from David Gibson & Greg Kurz, to Cédric le Goater & Daniel Henrique Barboza
Renesas RX
Renesas SH
RISC-V
- Add Zb[abcs] instruction support
- Remove RVB support
- Fixup virt flash node
- Don't override users supplied ISA version
- Fixup some CSR accesses
- Fix an overflow in the SiFive CLINT (https://gitlab.com/qemu-project/qemu/-/issues/493)
- ePMP CSR address updates
- SiFive PWM support
- Support for RISC-V ACLINT
- Support vhost-user and numa mem options on all boards
- mstatus.SD bug fix for hypervisor extensions
- OpenTitan fix for USB dev address
- OpenTitan update to latest bitstream build
- Remove the Ibex PLIC
- Bug fix of setting mstatus_hs.[SD|FS] bits
- Fixes for sifive PDMA
- Mark shakti_c as not user creatable
- Add support for the experimental J extension
- Update the fmin/fmax handling
- Fixup VS interrupt forwarding
s390x
- Improved storage key emulation (e.g. fixed address handling, lazy storage key enablement for TCG, ...)
- New gen16 CPU features are now enabled automatically in the latest machine type
SPARC
- Fix for booting sun4m machines with more than 1 CPU
Tricore
x86
- New Snowridge-v4 CPU model, with split-lock-detect feature disabled
KVM
- Support for SGX in the virtual machine, using the /dev/sgx_vepc device on the host and the "memory-backend-epc" backend in QEMU.
- New "hv-apicv" CPU property (aliased to "hv-avic") sets the HV_DEPRECATING_AEOI_RECOMMENDED bit in CPUID[0x40000004].EAX.
x86_64
AMD SEV
- Measured launch with direct kernel boot is now possible by setting the 'kernel-hashes=on' property to the 'sev-guest' object. This requires a correspondingly new enough firmware to handle the hashes.
Xtensa
Device emulation and assignment
ACPI
Audio
Block devices
Graphics
I2C
Input devices
IPMI
Multi-process QEMU
Network devices
NVDIMM
NVMe
Emulated NVMe Controller
PCI/PCIe
SCSI
SD card
SMBIOS
TPM
USB
VFIO
virtio
Xen
fw_cfg
9pfs
- Fixed an occasional crash when handling 'Twalk' requests; thus bug was introduced in QEMU 6.1.0.
- Fixed sub-optimal I/O performance on guest due to incorrect IOUNIT which happened with certain applications like 'cat' which retrieve stat's st_blksize at runtime to determine their read/write buffer size.
virtiofs
Semihosting
Audio
Character devices
- ESCC reset fixes
Crypto subsystem
Authorization subsystem
GUI
GDBStub
TCG Plugins
Host support
Memory backends
Migration
Monitor
QMP
- New event DEVICE_UNPLUG_GUEST_ERROR, which allows guest-reported failures of hot unplugs to be reported to the user or management layer
- Since this relies on the guest, an event can't be guaranteed and only some hotplug mechanisms can generate it at all
- This will eventually replace MEM_UNPLUG_ERROR which reported the same thing, but only for memory unplug
HMP
Network
Block device backends and tools
- qemu-nbd now defaults to writeback caching, rather than writethrough, to match the defaults of qemu-img. While this has better performance, it may affect correctness if you were previously relying on writethrough semantics without explicit use of the '--cache=' option.
- qemu-nbd now has a --selinux-label option for setting the SELinux label of a Unix socket.
Tracing
Miscellaneous
User-mode emulation
binfmt_misc
Hexagon
TCG
- plugins now have a bool arg parsing helper and cleaned up argument syntax
- the cache plugin is now multi-core aware
Guest agent
Build Information
- the --enable-git-update and --disable-git-update options to configure were removed
- the --disable-blobs option to configure is deprecated and should be replaced with --disable-install-blobs
- the --enable-trace-backend to configure is deprecated and should be replaced with --enable-trace-backends
- the --enable-jemalloc to configure is deprecated and should be replaced with --enable-malloc=jemalloc
- the --enable-tcmalloc to configure is deprecated and should be replaced with --enable-malloc=tcmalloc
- versions 5.2 to 6.1 of QEMU didn't fully obey the configure options --extra-cflags and --extra-ldflags, so you could have some latent bugs if you were using them (and hoping that they would work). In particular, note that passing --extra-cflags='-Wall' will override QEMU's choice of which warnings need to be disabled, and might cause the build to fail if using -Werror.
Python
GIT submodules
Container Based Builds
VM Based Builds
Build Dependencies
Windows
Testing and CI
- The tests/acceptance folder was never used to store acceptance tests in terms of software engineering. This naming could confuse developers adding tests using the Avocado Framework to this folder. The folder name change to tests/avocado also changed the make target from check-acceptance to check-avocado. In this case, the use of the check-acceptance target is deprecated.
Known issues
- see Planning/6.2