Release schedule: Planning/10.1.
System emulation
Removed features and 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
Alpha
Arm
New CPU architectural features emulated: FEAT_SME2 FEAT_SME2p1 FEAT_SME_B16B16 FEAT_SME_F16F16 FEAT_SVE_B16B16 FEAT_SVE2p1
The 'highbank' and 'midway' board models have been deprecated
New board model 'max78000fthr' (Analog Devices max78000 Cortex-M4 board)
CXL can now be used on the Arm 'virt' board
The 'virt' board now supports using KVM nested virtualization via 'virtualization=on' with a sufficiently new host kernel
The 'virt' board now supports ACPI PCI hotplug and acpi-index for PCI devices. It can be turned on with '-global acpi-ged.acpi-pci-hotplug-with-bridge-support=on'
Added FW support to the AST2700 EVB machines
Introduced a new multi-SoC 'ast2700fc' machine
Introduced a new Meta 'catalina-bmc' machine
Introduced a new NVIDIA 'gb200-bmc' machine
Deprecated 'ast2700a0-evb' machine
AVR
Hexagon
HPPA
Fix & improve floating-point exception (FPE) emulation in user- and system-mode
LoongArch
Add kernel irqchip support
Fix big endian support with MCFG table
Fix start fail with smp cpu < smp maxcpus on KVM
inform guest of kvm
add check for fcond
Fix [X]VLDI raising exception incorrectly
Microblaze
The endianness of the petalogix_s3adsp1800 machine can now be toggled via the "endianness" property of the machine
The big-endian variants of ml605 and xlnx-zynqmp-pmu machines have been removed. The machines always run in little endian mode now in the qemu-system-microblaze binary.
The little-endian binary "qemu-system-microblazeel" binary is deprecated now and will be removed in the future.
MIPS
Fix for BSOD when booting Windows NT MIPS on magnum machine (issue #2464)
OpenRISC
PowerPC
Renesas RX
Renesas SH (sh4)
RISC-V
ISA and Extensions
Use tail pseudoinstruction for calling tail
Fix some RISC-V vector instruction corner cases
Remove capital 'Z' CPU properties
Support atomic instruction fetch (Ziccif)
Add max_satp_mode from host cpu
Extend and configure PMP region count
Add a property to set vill bit on reserved usage of vsetvli instruction
Add Svrsw60t59b extension support
Machines
Add support for RIMT to virt machine ACPI
Improve Microchip Polarfire SoC customization
Add Kunminghu CPU and platform
Update FADT and MADT versions in ACPI tables
Fixes and Misc
Don't allow PMP RLB to bypass rule privileges
Fix checks on writes to pmpcfg in Smepmp MML mode
Fix endless translation loop on big endian systems
Fix write_misa vs aligned next_pc
KVM CSR fixes
sstc extension fixes
Fix zama16b order in isa_edata_arr
Profile handling fixes
Extend PMP region up to 64
Add missing named features
Fix PPN field of Translation-reponse register
Fix fcvt.s.bf16 NaN box checking
Avoid infinite delay of async xmit function
Fix missing exit TB flow for ldff_trans
Fix migration failure when aia is configured as aplic-imsic
Fix MEPC/SEPC bit masking for IALIGN
Fix pmp range wraparound on zero
Fix target register read when source is inactive
Add riscv_hwprobe entry to linux-user strace list
Fix exception type when VU accesses supervisor CSRs
Restrict mideleg/medeleg/medelegh access to S-mode harts
Restrict midelegh access to S-mode harts
s390x
Control program identification data can now be retrieved via QOM (see https://gitlab.com/qemu-project/qemu/-/commit/f345978f24be for details)
Deprecated machine types older than v4.1 have been removed - please update to newer machine types if necessary
SPARC
Tricore
x86
Vendor-specific CPUID bits are left out when the guest CPU's vendor does not define them.
KVM
Support for TDX (requires Linux 6.16 or newer).
Support for starting a TDX or SEV-SNP virtual machine from an IGVM file.
TCG
Support for the TSS trap bit
Xtensa
Device emulation and assignment
ACPI / SMBIOS
Audio
Block devices
Graphics
Hyper-V
I2C
Input devices
IPMI
Multi-process QEMU
Network devices
passt networking backend
NVDIMM
NVMe
PCI/PCIe
ACPI PCI hotplug and acpi-index for PCI devices are now also supported by ARM 'virt' machine when using -global acpi-ged.acpi-pci-hotplug-with-bridge-support=on'
SCSI
SD card
SMBIOS
TPM
UFS
USB
VFIO
Initial support for CoCo guest-memfd memory backends
Updated IGD passthrough documentation
Fixed L2 crash on pseries machines
Added automatic enablement of OpRegion for IGD passthrough
Fixed OpRegion detection in IGD passthrough
Added support to report vfio-ap configuration changes
Added support for vfio-user client device
Added live update (CPR) support
Added support for VFIO migration with multifd on aarch64
Introduced a property to override a device PCI class code
Support for VFIO on TDX and SNP virtual machines.
virtio
virtio-gpu: allow injection of virtio-gpu EDID name
vDPA
Xen
fw_cfg
9pfs
Fixes for file descriptor reclaiming algorithm (i.e. when running towards host's allowed limit of max. open file descriptors).
Additional fixes on use-after-unlink idiom (i.e. client operations on a file descriptor after file has been removed).
virtiofs
Semihosting
Audio
alsa: Set "try-poll" to false by default
add float sample endianness converters
Character devices
Crypto subsystem
Use of the built-in AES impl is now removed for anything other than the TCG instruction emulator. Any other use of AES now requires QEMU to be built with one of gcrypt, nettle or gnutls as crypto providers.
Authorization subsystem
I/O subsystem
Most device backends which support TCP connectivity can now support configuration of TCP keepalive parameters
GUI
spice/dbus: support multi-plane dmabuf
spice: enable gl=on option for non-local or remote clients
vdagent: add migration support
gtk: improve scale handling
gtk: add keep-aspect-ratio and scale option
vnc: encoding of updates in non-tight VNC encodings are fixed when the client and server have different endianess
vnc: encoding of updates in 8/16-bpp is fixed when the client and server have different endianess
vnc: fix display pause issue after migration
GDBStub
added support for the qGDBServerVersion used by non-gdb clients
TCG Plugins
ips plugin has gained configurable scaling and instructions per quantum arguments
new functions to write register values
new functions to write to virtual address (see caveats)
new functions to read/write hardware addresses (see caveats)
new test plugin called patcher
sparc64 and alpha targets can now export register details to plugins
Host support
Memory backends
Migration
RDMA live migration starts to support ipv6
Postcopy preempt mode optimization on sequential memory accesses (e.g. video streaming)
Initial supports of enabling both multifd and postcopy features (multifd is only enabled during precopy so far)
Fix VFIO multifd live migration when tcp zerocopy send is enabled
Precopy downtime optimization by avoiding unnecessary LOG_CLEAR operations
Monitor
QMP
blockdev-mirror gained a new boolean flag target-is-zero that can be used to optimize mirroring of a sparse file to a destination that already reads as zero. Even without use of this flag, mirroring has been optimized to do less work on portions of the source that read as zero.
gained a new boolean flag that can be used to optimize mirroring of a sparse file to a destination that already reads as zero. Even without use of this flag, mirroring has been optimized to do less work on portions of the source that read as zero. blockdev-backup gained a new option on-cbw-error that allow users to specify how to behave when IO errors occur during copy-before-write operations.
HMP
Network
QEMU now attempts to arrange for larger buffers when using NBD over Unix sockets, which dramatically improves throughput. On MacOS, this works out of the box; but on Linux, the system administrator must make the following changes:
$ cat /etc/sysctl.d/net-mem-max.conf net.core.wmem_max = 2097152 $ sudo sysctl -p /etc/sysctl.d/net-mem-max.conf
Block jobs
Non-active block-commit was optimized to keep sparseness
was optimized to keep sparseness blockdev-mirror was optimized to do less work with zero blocks
was optimized to do less work with zero blocks blockdev-mirror and blockdev-backup gained new options, see QMP section
Tracing
Semihosting
Miscellaneous
User-mode emulation
Some minor updates to the documentation explaining its limitations
signals
runtime
binfmt_misc
alpha
arm/arm64/aarch64
HPPA
LoongArch
PowerPC
s390
x86
TCG
LoongArch
Record/Replay
RISC-V
Guest agent
Implement a 'guest-get-load' command (Windows part)
VSS provider unregistration retry (Windows only)
Propagate VSS provider installation error to the MSI installer (Windows only)
Documentation
Build Information
Process
documentation updated with b4 examples
all edk2 submodules included in firmware tarball
Rust usage
The minimum supported version of Rust is now 1.77.
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.77 package; the RUSTC and RUSTDOC environment variables must point to /usr/bin/rustc-1.77 and /usr/bin/rustdoc-1.77 respectively.
Debian bookworm remains a supported platform for QEMU; support for Rust is still considered experimental and not stable, and it is not recommended to be used for anything other than development.
When Rust is enabled, QEMU now requires Meson 1.8.1.
QEMU includes a script, scripts/get-wraps-from-cargo-registry.py , that can be used to populate the subprojects/ directory with packages from a local crate registry in a distro-specific path, such as /usr/share/cargo/registry .
Dependencies
Testing and CI
Host support
Support for Debian bullseye has been dropped.
Ninja 1.9 is now required. This version of Ninja was already found on all supported platforms (including Debian bullseye) as of QEMU 10.0.
Experimental support for compiling to WASM using Emscripten.
Windows
Known issues