ChangeLog/8.0

From QEMU

System emulation

Removed features and incompatible changes

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

  • Size suffixes such as 'k' or 'M' are now allowed only when the base is written in decimal. For example, "0x20M" should be written as either "32M" or "0x2000000".
  • -chardev tty and -chardev parport have been removed; they should be replaced respectively by -chardev serial and -chardev parallel.
  • -spice password=... is insecure and should be replaced by the password-secret option.
  • -M kernel-irqchip=off is not supported anymore on KVM if the CPU model includes a local APIC.
  • Support for MIPS "trap-and-emulate KVM" is not supported anymore. It was removed from Linux in 2021.
  • The "sga" device, which provided a way to send BIOS output to the serial console, has been removed; SeaBIOS 1.11.0 and newer supports this feature natively when QEMU is started with the option -M graphics=off (or -nographic which implies it).
  • The virtiofsd tool has been superseded by a newer implementation at https://gitlab.com/virtio-fs/virtiofsd, which is stable and has a similar feature set to the daemon that was included in QEMU.

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.

  • The --enable-gprof configure option is deprecated. It is suggested to use a non-instrumenting profiler instead.
  • The -no-hpet and -no-acpi options are deprecated. Use -M hpet=offand -M acpi=off instead.
  • The HAXM project has been retired, and -accel hax has therefore been deprecated.
  • System emulation on 32-bit x86 and ARM hosts has been deprecated. The QEMU project no longer considers 32-bit x86 and ARM support for system emulation to be an effective use of its limited resources, and thus intends to discontinue. User mode emulation continues to be supported on 32-bit hosts.
  • Specifying the iSCSI password in plain text on the command line using the password option is insecure and has been deprecated.

68k

Alpha

Arm

  • The following CPU architecture features are now emulated:
    • FEAT_EVT
    • FEAT_FGT
    • AArch32 ARMv8-R support
  • New emulated CPU types:
    • Cortex-A55 CPU
    • Cortex-R52 CPU
  • The GICv3 can now be emulated under hvf acceleration
  • M-profile system registers and A-profile pointer-authentication information is now exposed to the gdbstub
  • Linux/arm64 EFI zboot format kernel images can now be booted with -kernel

Machines

  • The cubieboard machine is now able to boot directly from an SD card image.
  • orangepi now implements some previously missing i2c controllers
  • New machine types:
    • ``olimex-stm32-h405`` -- Olimex STM32 H405 board with STM32F405RGT6 microcontroller

AVR

Hexagon

HPPA

  • Implemented fid instruction (Floating-Point Identify)
  • Create illegal instruction when executing 64-bit load/save on 32-bit emulation

LoongArch

Microblaze

MIPS

Nios2

OpenRISC

PowerPC

Renesas RX

Renesas SH

RISC-V

ISA and Extensions

  • Add smstateen support
  • Support native debug icount trigger
  • Support cache-related PMU events in virtual mode
  • Add Zawrs ISA extension support
  • Add support for the T-Head vendor extensions
  • Experimantal support for writable misa.
  • Support for Svadu extension.
  • Support for the Zicond extension.
  • Support for the Zicbiom, ZCicboz, and Zicbop extensions.
  • Support for setting the virtual address width (ie, sv39/sv48/sv57) on the command line.

Machines

  • Bump the OpenTitan supported version
  • Add some missing PolarFire SoC io regions
  • riscv_htif: Support console output via proxy syscall
  • Update opentitan IRQs
  • OpenSBI has been updated to version 1.2, see release notes for more details.
  • Support for ACPI on RISC-V.

Fixes and Misc

  • Fix PMP propagation for tlb
  • Remove the redundant ipi-id property in the virt machine
  • Fix mret exception cause when no pmp rule is configured
  • Fix bug where disabling compressed instructions would crash QEMU
  • Cleanup firmware and device tree loading
  • Fix elen check when using vector extensions
  • Ensure we always follow MISA parsing
  • Fix up masking of vsip/vsie accesses
  • Trap on writes to stimecmp from VS when hvictl.VTI=1
  • Update disas for xnor/orn/andn and slli.uw
  • Fix rom code when Zicsr is disabled
  • A collection of fixes for virtulisation
  • Set tval for triggered watchpoints
  • A fix for virtual instr exception
  • Fix ctzw behavior
  • Fix SBI getchar handler for KVM
  • A fix for PMP matching to avoid incorrectly appling the default permissions on PMP permission violations.
  • Fixes for the vector slide instructions to avoid truncating 64-bit values (such as doubles) on 32-bit targets.
  • Fixes to gdbstub, CSR accesses, dependencies between the various floating-point exceptions, and XTheadMemPair.

s390x

SPARC

Tricore

  • Fix OPC1_16_SRO_LD_H translation
  • Fix OPC2_32_BO_LD_BU_PREINC translation
  • Fix OPC2_32_RRRR_DEXTR/RRPW_DEXTR translation
  • Fix OPC2_32_RCRW_INSERT translation
  • Fix OPC2_32_RCRW_IMASK translation

x86

  • Add support for Xen guests under KVM with Linux v5.12+. See the "Xen HVM guest support" page for details.
  • New CPU model "SapphireRapids".
  • TCG exposes CPUID flags FSRM, FZRM, FSRS, FSRC. These do not correspond to any new instructions; they only direct software to use string operations even if the length is zero or short.

Xtensa

Device emulation and assignment

ACPI / SMBIOS

Audio

Block devices

  • New device "ide-cf" emulating a CompactFlash card.

Graphics

I2C

Input devices

IPMI

Multi-process QEMU

Network devices

  • igb device emulation

NVDIMM

NVMe

PCI/PCIe

SCSI

SD card

SMBIOS

TPM

USB

VFIO

  • Experimental migration support has been updated to the v2 VFIO migration protocol, v1 has been removed.

virtio

Xen

fw_cfg

9pfs

virtiofs

The old C virtiofsd has been removed, use the new Rust implementation instead.

Semihosting

  • semihosting now has some documentation in the manual
  • semihosting only supports O_BINARY mode for file operations

Audio

Character devices

Crypto subsystem

A flaw in handling cached data when reading from a TLS channel has been fixed. This could affect TLS when used with character devices in particular where it is common to read less than one TLS packet of data at a time.

Authorization subsystem

GUI

The deprecated 'password' option for SPICE is removed. Applications should use 'password-secret' instead, together with '-object secret'.

GDBStub

TCG Plugins

  • some deadlocks cases where fixed when using plugins

Host support

Memory backends

Migration

Monitor

QMP

HMP

Network

Block device backends and tools

  • The iscsi driver 'password' option is deprecated, in favour of 'password-secret' which is to be used in combination with '--object secret'

Tracing

Semihosting

Miscellaneous

User-mode emulation

build

binfmt_misc

Hexagon

LoongArch

Nios2

HPPA

x86

TCG backends

ARM

Guest agent

  • Add USB bus type support for guest-get-fsinfo in Windows
  • Add initial OpenBSD and NetBSD support
  • Add logging to Windows event log
  • Fix build with Glib version > 2.73.2 (Windows)
  • Add ability to specify VSS backup type (Windows FS freeze)
  • Fix CVE-2023-0664 in VSS installation (Windows)

Build Information

Build Dependencies

  • QEMU has dropped perl as a build dependency
  • This will be the last version supporting Python 3.6. Starting with QEMU 8.1, only Python 3.8 and newer will be supported (3.7 might work but it is not included in any of the environments that we run CI with).
  • QEMU will try much harder to use a single Python interpreter for everything including running Meson and sphinx. As a result, there may be more circumstances in which QEMU uses the bundled copy of Meson. These include when Python points to a virtual environment and when there is a $PYTHON environment variable. The implementation of this change is still incomplete, with more improvements to come in terms of robustness.

Windows

Testing and CI

  • we have started deprecating docker.py and directly call docker/podman to build most images now
  • some longer running avocado tests have been disabled for GITLAB_CI (tuxrun_baselines does a fairly comprehensive job across most architectures now)

Known issues