ChangeLog/10.1: Difference between revisions

From QEMU
(→‎Network: Mention NBD Unix socket buffer changes, and requirement for a host configuration tweak)
 
(20 intermediate revisions by 9 users not shown)
Line 22: Line 22:


=== HPPA ===
=== HPPA ===
* Fix & improve floating-point exception (FPE) emulation in user- and system-mode


=== LoongArch ===
=== LoongArch ===
Line 40: Line 42:


==== ISA and Extensions ====
==== ISA and Extensions ====
* Use tail pseudoinstruction for calling tail
* Fix some RISC-V vector instruction corner cases


==== Machines ====
==== Machines ====
* Add support for RIMT to virt machine ACPI
* Improve Microchip Polarfire SoC customization


==== Fixes and Misc ====
==== Fixes and Misc ====
* Don't allow PMP RLB to bypass rule privileges
* 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 write_misa vs aligned next_pc
* KVM CSR fixes


=== s390x ===
=== s390x ===
Line 108: Line 120:


==== 9pfs ====
==== 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 ====
==== virtiofs ====
Line 114: Line 130:


=== Audio ===
=== Audio ===
* alsa: Set "try-poll" to false by default
* add float sample endianness converters


=== Character devices ===
=== Character devices ===


=== Crypto subsystem ===
=== 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 ===
=== Authorization subsystem ===
=== I/O subsystem ===
* Most device backends which support TCP connectivity can now support configuration of TCP keepalive parameters


=== GUI ===
=== GUI ===
* spice/dbus: support multi-plane dmabuf
* vdagent: add migration support
* gtk: improve scale handling
* 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


=== GDBStub ===
=== GDBStub ===
Line 132: Line 163:


=== Migration ===
=== 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


=== Monitor ===
=== Monitor ===


==== QMP ====
==== 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 ====
==== HMP ====


=== Network ===
=== 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 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 ===
=== Tracing ===
Line 189: Line 237:
=== Rust usage ===
=== Rust usage ===
The minimum supported version of Rust is now 1.77.
The minimum supported version of Rust is now 1.77.
* On Debian bookworm, it is available in the rustc-web package.
* 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.
* 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.


=== Dependencies ===
=== Dependencies ===
Line 197: Line 249:


=== Host support ===
=== 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 ===
=== Windows ===

Latest revision as of 14:22, 3 June 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

AVR

Hexagon

HPPA

  • Fix & improve floating-point exception (FPE) emulation in user- and system-mode

LoongArch

Microblaze

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

Machines

  • Add support for RIMT to virt machine ACPI
  • Improve Microchip Polarfire SoC customization

Fixes and Misc

  • Don't allow PMP RLB to bypass rule privileges
  • 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 write_misa vs aligned next_pc
  • KVM CSR fixes

s390x

SPARC

Tricore

x86

KVM

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

SMBIOS

TPM

UFS

USB

VFIO

virtio

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
  • vdagent: add migration support
  • gtk: improve scale handling
  • 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

GDBStub

TCG 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

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.

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