ChangeLog/10.2
Release schedule: Planning/10.2.
System emulation
Clarification of QEMU's security policy
We have updated 'our security policy' to clarify that the "virtualization use case" which defines what we consider to be security bugs only applies if you are using particular machine types, which we now list explicitly.
Removed features and incompatible changes
- The -old-param option has been removed
- The Arm pxa CPU family has been removed
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
Alpha
Arm
- New CPU architectural features emulated:
- FEAT_SCTLR2
- FEAT_TCR2
- FEAT_CSSC
- FEAT_LSE128
- FEAT_ATS1A
- FEAT_RME_GPC2
- FEAT_AIE
- FEAT_MEC
- FEAT_GCS
- The deprecated pxa CPU family has now been removed
- The gdbstub now exposes the SME and SME2 registers to debuggers
- virt: You can now create multiple SMMUv3 devices on the command line, to give separate PCIe roots their own IOMMU
- aspeed: AST2600 and AST2700 SoCs have a PCIe host controller
- aspeed: AST2600 and AST1030 SoCs have an OTP memory device integrated with the Secure Boot Controller. A block device backend can be specified with the 'drive' property
- new board model: amd-versal2-virt
- xlnx-zynqmp: the GIC for the Cortex-R5 RPU cluster is now modelled
AVR
Hexagon
HPPA
- Added emulation for a HP 715/64 workstation
- Added emulation for a NCR 53c710 SCSI controller, as used in the HP LASI multi-I/O chip, and lots of fixes and enhancements for the LASI i82596 network driver. Both were developed during the Google Summer of Code 2025 program by Soumyajyotii Ssarkar <soumyajyotisarkar23@gmail.com>
- Updated SeaBIOS-hppa firmware to version 20, includes various fixes and support for 715/64.
LoongArch
- Support MSGINT irqchip in TCG mode
- Support HW Page Table Walk in TCG mode
Microblaze
MIPS
OpenRISC
PowerPC
- Support for PowerNV11 and PPE42 CPU/Machines.
- FADUMP Support for pSeries
- Decodetree movement for some floating-point instructions
- Firmware updates for SLOF, sam460ex u-boot
- Pegasos II cleanup and Pegasos I emulation
- Deprecation of pseries 3.0 up till 4.2, Power8E and Power8NVL
- Removal of unusable e200 CPUs
- Error reporting improvements for image loading failures
- Coverity fixes for fadump, amigaone
- Various (ppc) arch-wide bug fixes, improvements and cleanups.
Renesas RX
Renesas SH (sh4)
RISC-V
ISA and Extensions
- Minor fixes of RISC-V CFI
- Modify minimum VLEN rule
- Make PMP granularity configurable
Machines
- Add riscv64 to FirmwareArchitecture
- Implement MonitorDef HMP API
- Update OpenSBI to v1.7
- Correct mmu-type property of sifive_u harts in device tree
- Fix Ethernet interface support for microchip-icicle-kit
Fixes and Misc
- Fix MSI table size limit
- Fix SiFive UART character drop issue and minor refactors
- Fix RISC-V timer migration issues
- Align memory allocations to 2M on RISC-V
- Fix vslide1[up|down].vx unexpected result when XLEN=32 and SEW=64
- Fixup IOMMU PDT Nested Walk
- Fix endianness swap on compressed instructions
- Update status of IOMMU kernel support
- Fix mask for smsiaddrcfgh
s390x
- Enable irqfd to be used for virtio-pci on s390x if the kernel supports it to improve virtio-pci performance with KVM
- Provide a QAPI event when SCLP control-program identification data gets updated by the guest
- Fix problems with missing Clock Comparator interrupts in certain corner cases
- Use address generation for register branch targets in TCG mode
SPARC
Tricore
x86
- The HPET device does not take the big QEMU lock anymore.
- The isapc machine can only use 3.5G memory and will warn when used with 64-bit CPUs. Also, when -cpu max is used with isapc it will pick a Pentium III CPU.
- Support for a new accelerator, MSHV, which lets you create VMs from a Hyper-V guest without using nested virtualization.
KVM
TCG
Xtensa
Device emulation and assignment
ACPI / SMBIOS
Audio
Block devices
Graphics
Hyper-V
I2C
Input devices
IPMI
Multi-process QEMU
Network devices
NVDIMM
NVMe
PCI/PCIe
SCSI
SD card
- Added Replay Protected Memory Block (RPMB) emulation to the eMMC device model
SMBIOS
TPM
UFS
USB
VFIO
- Removal of the deprecated vfio-platform, vfio-calxeda-xgmac and vfio-amd-xgbe devices
virtio
vDPA
Xen
fw_cfg
9pfs
- Support for FreeBSD hosts.
virtiofs
Semihosting
- Only builds once now
Audio
Character devices
Crypto subsystem
- The minimum GNUTLS is now 3.7.5
- The minimum libgcrypt is now 1.9.4
- THe mimimum nettle is now 3.7.3
- QEMU now supports loading multiple x509 cert+key identities, to allow use of parallel certificates with different algorithms, needwed to facilitate the transition to post-quantum cryptography
- QEMU has deprecated use of the externally provided Diffie-Hellman parameters in the dh-params.pem file. DH params will be automatically negotiated in accordance with RFC 7919
- QEMU has fixed a potential use after free if TLS credential objects are deleted while a TLS handshake is taking place
- QEMU sanity checking no longer rejects certificates without "key encipherment" key purpose set. This check was obsolete for elliptic curve and post-quantum cryptography algorithms.
- QEMU sanity checking will only validate CA certs required by the chain of trust from the server / client leaf certs
- QEMU sanity checking will permit intermediate CA certs to be bundled in the server / client leaf cert PEM file
Authorization subsystem
I/O subsystem
- A crash in the cleanup for websocket handshakes was fixed (CVE-2025-11234, thanks Grant Millar | Cylo)
- Socket error queue will be flushed if a zero-copy write fails with ENOBUFS
GUI
GDBStub
TCG Plugins
- new uftrace plugin
- new hooks for discontinuity events (irqs, host calls and exceptions)
Host support
Memory backends
Migration
- Supported new cpr-exec migration mode
- Supported mapped-ram on snapshot save/load
- Fixed a false positive TLS warning when postcopy preempt migration is completing
- Fixed source QEMU hang when a postcopy migration failed at switchover phase
- Fixed a possible interrupt performance regression after migration when with VFIO-PCI devices
- Fixed snapshot crash when migration capabilities were wrongly specified
- Fixed COLO regression (since QEMU 10.0)
Monitor
QMP
HMP
- `wavcapture`, `stopcapture` and `info capture` are deprecated
Network
Block device backends and tools
- It is now possible to open both the server and client endpoints of an NBD connection from the same process. Previously, attempting to connect QEMU as an NBD client to a socket being served by the same process would deadlock.
- The block limits detected for a block backend (such as required request alignment, maximum request size etc.) are now exposed in QMP as part of the data returned by the 'query-block' and 'query-named-block-nodes' commands. The same information is displayed in 'qemu-img info' if the new option '--limits' is given.
- 'stats-intervals' can now be configured in '-device' for block devices. Previously, this was only available in '-drive' (and therefore inaccessible when using '-blockdev').
- Image creation now restricts qcow2 data files and VMDK extent files to local file names. Protocol prefixes (such as nbd: or http:) are no longer parsed. This makes image creation consistent with opening images, where they have already been interpreted as local file names since QEMU 9.1 for security reasons. With the inconsistency between image creation and opening, it was possible to create image files that contained a protocol-based data file or extent reference and then could never be opened. (If necessary, it is still possible to run qcow2 images with a data file using a protocol; however, this information cannot be stored in the image file itself and the setup must be configured on the command line instead.)
Block jobs
Tracing
- Trace backend generation has been optimized to reduce code size. This can reduce the QEMU system emulator binary size by as much as 1 MB.
Semihosting
Miscellaneous
- On host systems that support io_uring, QEMU's main loop is now based on io_uring, which can improve performance in some cases and will enable new features and potentially further performance improvements in the future.
- The '-run-with' argument gains a new 'exit-with-parent=on' parameter which, on Linux, FreeBSD and macOS platforms, will ensure QEMU is terminated when the parent process exists.
- Fixed possible memory leak on CPU hot plug / unplug
- Fixed TDX regression on using hugetlbfs
- Fixed guest-memfd use case on shmem
- Fixed possible poweroff hang on virtio devices with iommu_platform=on
User-mode emulation
various bugfixes and added features:
- implement fchmodat2 syscall
- support MADV_DONTDUMP and MADV_DODUMP
- fix FIBMAP and FIGETBSZ ioctls
- permit sendto() with NULL buf and 0 len
- aarch64: Enable GCS in HWCAP
- aarch64: Inject SIGSEGV for GCS faults
- aarch64: Implement map_shadow_stack syscall
- aarch64: Implement prctls for GCS
- hexagon: Fix sigcontext
- hppa: Send proper si_code on SIGFPE exception
- microblaze: Fix little-endianness binary
TCG
LoongArch
Record/Replay
RISC-V
Guest agent
- Fix truncated output handling in guest-exec status reporting
- Fix 'retry_path' logic for Windows service (Windows only)
- VSS: Write the hex value of the error in the log (Windows only)
- installer: Remove QGA VSS if QGA installation failed (Windows only)
- Support guest shutdown of BusyBox-based systems
- Improve Windows filesystem space info retrieval logic
Documentation
- VirtIO and device documentation re-organised
- Section on build deps updated
Build Information
Rust usage
The minimum supported version of Rust is now 1.83.
- On Debian bookworm, it is available in the rustc-web package except for the mips64el architecture; Rust support for mips64el requires Debian trixie or newer.
- On Ubuntu 22.04 and 24.04, it is available in the rust-1.83 package; the RUSTC and RUSTDOC environment variables must point to /usr/bin/rustc-1.83 and /usr/bin/rustdoc-1.83 respectively.
Support for Rust is still considered experimental, and it is not recommended to be used for anything other than development, but the two devices introduced by --enable-rust (PL011 and HPET) have feature parity with the C version except for dtrace/systemtap support.
Dependencies
- the qemu-minimal.yml list now drives debian-all-test-cross as a result is now defended in the CI
- documentation updated to point to lcitool
Testing and CI
- dropped the aarch32 CI runner in anticipation of dropping of 32 bit host support.
- rationalised the interaction of build-environment.yml and the "refresh" generated yml
- new ppc64le custom runner
- debian-all-test-cross migrated to lcitool using the qemu-minimal.yml