Jump to navigation Jump to search
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.
- 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
- 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
- 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
- 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
- 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
- Fix for booting sun4m machines with more than 1 CPU
- New Snowridge-v4 CPU model, with split-lock-detect feature disabled
- 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.
- 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.
Device emulation and assignment
Emulated NVMe Controller
- QEMU now fully supports guest memory dumps with virtio-mem.
- QEMU now cleanly supports precopy migration, postcopy migration and background snapshots with virtio-mem.
- 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.
- ESCC reset fixes
- we now support Txxthread:yyyy; replies instead of a plain Sxx for signals arriving at a thread
- a bug with watchpoints and icount has been fixed
- 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
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.
- plugins now have a bool arg parsing helper and cleaned up argument syntax
- the cache plugin is now multi-core aware
- 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.
Container Based Builds
VM Based Builds
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.
- see Planning/6.2