ChangeLog/10.1: Difference between revisions

From QEMU
 
(23 intermediate revisions by 12 users not shown)
Line 16: Line 16:


=== Arm ===
=== 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 ===
=== AVR ===
Line 28: Line 47:


=== Microblaze ===
=== 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 ===
=== MIPS ===
Line 44: Line 67:
* Use tail pseudoinstruction for calling tail
* Use tail pseudoinstruction for calling tail
* Fix some RISC-V vector instruction corner cases
* 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 ====
==== Machines ====
* Add support for RIMT to virt machine ACPI
* Add support for RIMT to virt machine ACPI
* Improve Microchip Polarfire SoC customization
* Improve Microchip Polarfire SoC customization
* Add Kunminghu CPU and platform
* Update FADT and MADT versions in ACPI tables


==== Fixes and Misc ====
==== Fixes and Misc ====
* Don't allow PMP RLB to bypass rule privileges
* Don't allow PMP RLB to bypass rule privileges
* Fix checks on writes to pmpcfg in Smepmp MML mode
* Fix checks on writes to pmpcfg in Smepmp MML mode
* Generate strided vector loads/stores with tcg nodes
* Fix endless translation loop on big endian systems
* Fix endless translation loop on big endian systems
* Fix write_misa vs aligned next_pc
* Fix write_misa vs aligned next_pc
* KVM CSR fixes
* 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 ===
=== 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 ===
=== SPARC ===
Line 64: Line 114:


=== x86 ===
=== 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.


==== KVM ====
==== TCG ====
* Support for the TSS trap bit


=== Xtensa ===
=== Xtensa ===
Line 90: Line 145:


==== Network devices ====
==== Network devices ====
* passt networking backend


==== NVDIMM ====
==== NVDIMM ====
Line 96: Line 152:


==== PCI/PCIe ====
==== 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 ====
==== SCSI ====
Line 112: Line 169:


* Initial support for CoCo guest-memfd memory backends
* 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 ====
* virtio-gpu: allow injection of virtio-gpu EDID name


==== vDPA ====
==== vDPA ====
Line 151: Line 220:


* spice/dbus: support multi-plane dmabuf
* spice/dbus: support multi-plane dmabuf
* spice: enable gl=on option for non-local or remote clients
* vdagent: add migration support
* vdagent: add migration support
* gtk: improve scale handling
* 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 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: 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 ===
=== GDBStub ===
Line 162: Line 234:
=== TCG Plugins ===
=== TCG Plugins ===
* ips plugin has gained configurable scaling and instructions per quantum arguments
* 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 ===
=== Host support ===
Line 173: Line 250:
* Initial supports of enabling both multifd and postcopy features (multifd is only enabled during precopy so far)
* 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
* Fix VFIO multifd live migration when tcp zerocopy send is enabled
* Precopy downtime optimization by avoiding unnecessary LOG_CLEAR operations
* Workaround for GNUTLS bug. https://gitlab.com/qemu-project/qemu/-/issues/1937#note_2651384888


=== Monitor ===
=== Monitor ===
Line 248: Line 327:


When Rust is enabled, QEMU now requires Meson 1.8.1.
When Rust is enabled, QEMU now requires Meson 1.8.1.
QEMU includes a script, <tt>scripts/get-wraps-from-cargo-registry.py</tt>, that can be used to populate the subprojects/ directory with packages from a local crate registry in a distro-specific path, such as <tt>/usr/share/cargo/registry</tt>.


=== Dependencies ===
=== Dependencies ===

Latest revision as of 02:40, 31 July 2025

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

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

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

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
  • Workaround for GNUTLS bug. https://gitlab.com/qemu-project/qemu/-/issues/1937#note_2651384888

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.
  • 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 device backends and tools

Block jobs

  • Non-active block-commit was optimized to keep sparseness
  • blockdev-mirror 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

signals

runtime

binfmt_misc

alpha

arm/arm64/aarch64

HPPA

LoongArch

PowerPC

s390

x86

TCG

LoongArch

Record/Replay

RISC-V

Guest agent

Documentation

Build Information

Process

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