ChangeLog/9.1

From QEMU

Release schedule: Planning/9.1.

System emulation

Removed features and incompatible changes

Consult the 'Removed features' page for details of suggested replacement functionality.

  • The Nios II target has been removed.
  • The "scsi" property of virtio-blk devices has been removed. SCSI command passthrough had never been present on virtio-blk 1.0 devices, and is now removed from legacy devices as well. Use virtio-scsi instead.
  • The pvrdma device and rdmacm-mux helper has been removed.
  • The "block migration" options to the migrate commands ("blk" and "inc" for QMP, "-b"/"-i" for the human monitor) have been removed; guest management software such as libvirt is able to perform block migration more efficiently using block jobs and NBD devices.
  • The "compress" migration capability has been removed; multifd migration is able to do compression and can be used instead.

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.

  • Using the migration URI "fd" together with files has been deprecated. Use it only for sockets, and use "file:" to save a snapshot to a file.
  • The "ref405ep" machine and PPC405 CPUs have been deprecated. Firmware images are not available and Linux is dropping support this year as well.
  • The PCOMMIT instruction is not decoded by TCG anymore and the corresponding "-cpu pcommit=..." flag is deprecated.

68k

Alpha

Arm

  • New CPU architectural features emulated:
    • FEAT_NMI
    • FEAT_CSV2_3
    • FEAT_ETS2
    • FEAT_Spec_FPACC
    • FEAT_WFxT
  • The 'max' CPU and any new CPU types will default to a 1GHz generic timer frequency rather than the old 62.5MHz (this is architecturally required from ARMv8.6 onwards)
  • The emulated GICv3 also now has NMI support
  • Changes to existing board models:
    • Add DM163 display to B-L475E-IOT01A board
    • xilinx_zynq: The cache controller is now present
    • xilinx_zynq: Now supports up to two CPU cores
    • sbsa-ref: The default CPU type is now Neoverse-N2

AVR

Hexagon

HPPA

LoongArch

ISA and Extensions

Machines

Microblaze

MIPS

Nios2

OpenRISC

PowerPC

Renesas RX

Renesas SH

ISA and Extensions

RISC-V

ISA and Extensions

  • Implement SBI debug console (DBCN) calls for KVM
  • Set tval in breakpoints
  • Add support for Zve32x extension
  • Add support for Zve64x extension
  • Add th.sxstatus CSR emulation
  • Remove experimental prefix from "B" extension

Machines

  • Support 64-bit addresses for initrd

Fixes and Misc

  • Fix exposure of Zkr
  • Raise exceptions on wrs.nto
  • Tolerate KVM disable ext errors
  • Relax vector register check in RISCV gdbstub
  • Fix the element agnostic Vector function problem
  • Fix Zvkb extension config
  • Fix Zvfhmin checking for vfwcvt.f.f.v and vfncvt.f.f.w instructions
  • Check single width operator for vector fp widen instructions
  • Check single width operator for vfncvt.rod.f.f.w
  • Prioritize pmp errors in raise_mmu_exception()
  • Do not set mtval2 for non guest-page faults
  • Fixup CBO extension register calculation
  • Fix the hart bit setting of AIA
  • Decode all of the pmpcfg and pmpaddr CSRs

s390x

SPARC

New architectural features emulated:

  • FMAF
  • IMA
  • VIS3
  • VIS4

No new cpu types with these features are added, yet, but one may enable them manually with -cpu <type>,+<feature>.

Tricore

x86

  • New CPU models Icelake-Server-v7, SapphireRapids-v3 and SierraForest.
  • New CPU features "lam" and "rfds".
  • The argument to the new command line option "-smp modules" is now encoded in CPUID.
  • Support for SEV-SNP using the "-object sev-snp-guest" command line option.

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

SMBIOS

TPM

UFS

  • Supports emulation of MCQ behaviour based on UFSHCI v4.0.
  • MCQ Parameter Usage:
-device ufs,mcq=true,mcq-maxq=8

USB

VFIO

virtio

vDPA

Xen

fw_cfg

9pfs

virtiofs

Semihosting

Audio

Character devices

Crypto subsystem

Authorization subsystem

GUI

  • Allow UNIX socket option for VNC websocket

GDBStub

TCG Plugins

  • added STORE_U64 and conditional callback ops
  • updated examples to use new ops

Host support

Memory backends

Migration

  • New 'exit-on-error' option to migrate-incoming, if set to false causes QEMU to not exit on incoming migration failure, giving the management layer an opportunity to fetch the error through QMP.

Monitor

QMP

HMP

Network

Block device backends and tools

  • The QEMU 8.2 release introduced a regression in the ability to use TLS to encrypt the NBD connection used for storage migration, particularly visible when iothreads are in use. This regression has been fixed and the testsuite enhanced to ensure it does not regress again.

Tracing

Semihosting

Miscellaneous

User-mode emulation

runtime

binfmt_misc

alpha

arm/arm64/aarch64

LoongArch

HPPA

s390

x86

TCG

Record/Replay

RISC-V

Guest agent

Build Information

Build Dependencies

  • When using Python 3.10 or older, building QEMU requires the tomli package to be installed on the host. (The dependency was introduced in QEMU 8.2 but until now QEMU included a vendored copy of the library).

Configuration

  • When building with the "--without-default-devices" option, boards have to be enabled specifically in the configs/devices/*/*.mak files. In previous versions, most targets (all except ARM) listed enabled all boards even for --without-default-devices builds, and they had to be disabled instead.

Host support

  • When built for the x86 architecture (either 32-bit or 64-bit) QEMU now requires x86-64-v2 processors. This corresponds to CPUID features SSE4.2 and POPCNT, which are available on Intel Nehalem (Sandy Bridge for the Pentium and Celeron lines), Intel Atom Silvermont and AMD Bulldozer processors.

Docker Tweaks

  • Bumped docker images to Fedora 40 and Alpine 319

Windows

Testing and CI

  • The ansible configure scripts for CI machines are now driven by lcitool metadata

Known issues