ChangeLog/9.0
System emulation
Removed features and incompatible changes
Consult the 'Removed features' page for details of suggested replacement functionality.
- Running QEMU with KVM requires Linux 4.4 or newer. A future version of QEMU will increase the minimum requirement for Arm hosts to Linux 4.19 (also when running KVM); if this is too restrictive for your use case, please contact us at qemu-devel@nongnu.org.
- The behaviour of the '-serial none' option when used together with other '-serial' options has been corrected. Previously when '-serial none' was followed by '-serial something' the '-serial none' was effectively ignored. Now it controls the existence of the first serial port, and the following '-serial' option controls the behaviour of the second serial port; this brings it in to line with how all other cases of multiple '-serial' options work. If you have a command line that was accidentally relying on the old behaviour, you can simply delete the unnecessary '-serial none'.
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 CRIS architecture has been marked deprecated
- Arm boards akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex, z2 have been deprecated
68k
- Fixed exception frame format for 68010
Alpha
Arm
- Some board types modelling old Arm hardware using the PXA2xx and OMAP2 SoCs have been deprecated and are scheduled for removal in a future QEMU release: akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex, z2. The code implementing these boards was very old and unmaintained, and we don't believe that any of them have a large number of users.
- New architectural features now emulated:
- FEAT_ECV (Enhanced Counter Virtualization)
- FEAT_NV (Nested Virtualization)
- FEAT_NV2 (Enhanced nested virtualization support)
- New board types:
- b-l475e-iot01a : the B-L475E-IOT01A board (currently minimal support only)
- mps3-an536 : a Cortex-R52 board modelling the AN536 firmware image for the MPS3 development board
- raspi4b : the Raspberry Pi 4 Model B. Note that QEMU does not yet model PCI or ethernet; we hope to implement those devices for the next QEMU release.
- Changes to existing board types:
- The Freescale i.MX6 now models the cache controller and the PCIe controller
- The Allwinner R40 and Bananapi boards now model the USB controllers, the AHCI/SATA controller and the watchdog timer
- Raspberry Pi boards now support the SPI controller and the BSC i2c controller
- The npcm7xx based boards now support the ethernet controllers
- The virt board now wires up non-secure EL2 virtual timer IRQ when EL2 emulation is enabled with 'virtualization=on'.
Note that when the virt board uses the non-secure EL2 virtual timer IRQ, this will trip a bug in older versions of the EDK2 guest firmware, which causes EDK2 to assert on bootup with "ASSERT [ArmTimerDxe] /home/kraxel/projects/qemu/roms/edk2/ArmVirtPkg/Library/ArmVirtTimerFdtClientLib/ArmVirtTimerFdtClientLib.c(72): PropSize == 36 || PropSize == 48". If you see that assertion you should do one of:
- update your EDK2 binaries to edk2-stable202311 or newer
- use the 'virt-8.2' versioned machine type
- not use 'virtualization=on'
AVR
Hexagon
HPPA
- SeaBIOS-hppa version 16
- 64-bit and 32-bit SeaBIOS firmware binary
- Fixed 32-bit HP-UX crashes on B160L (32-bit) machine
- NetBSD
- Fixed boot failure due to power button in page zero
- Fixed networking with tulip driver
- Fixed FPU detection failure
- Fixed OpenBSD 7.4 boot failure
- Allows usage of up to 3840 MB of memory (instead of 3 GB)
- Supports the qemu --nodefaults option
- Added qemu-specific opcodes for "HALT QEMU", "RESET QEMU" and "RESTORE SHR" (restore shadow registers).
- No abort on access failure in Astro/Elroy registers
LoongArch
ISA and Extensions
Machines
Microblaze
MIPS
Nios2
- A bug was fixed in nios2-linux-user that meant async work was being skipped
OpenRISC
PowerPC
Renesas RX
Renesas SH
RISC-V
ISA and Extensions
- Add support for Zacas extension
- Add amocas.[w,d,q] instructions
- RVA22 profiles support
- Add RVV CSRs to KVM
- Add support for 'B' extension
- Implement optional CSR mcontext of debug Sdtrig extension
- Add support for Zaamo and Zalrsc
- Enable xtheadsync under user mode
- Add Ztso extension
- Use 'zfa' instead of 'Zfa'
- move ratified/frozen exts to non-experimental
Machines
- ACPI: Enable AIA, PLIC and update RHCT
- Fix the interrupts-extended property format of PLIC
- Document acpi parameter of virt machine
- Remove group setting of KVM AIA if the machine only has 1 socket
- sifive_u: Update S-mode U-Boot image build instructions
- Support vlenb and vregs[] in KVM
- Support new isa extension detection devicetree properties
- SMBIOS support for RISC-V virt machine
- Add rv32i,rv32e and rv64e CPUs
- Enable SPCR for SCPI virt machine
- Add SRAT and SLIT ACPI tables
- Update KVM exts to Linux 6.8
Fixes and Misc
- Fix th.dcache.cval1 priviledge check
- Don't allow write mstatus_vs without RVV
- Fix machine IDs QOM getters
- Fix KVM reg id sizes
- Upgrade OpenSBI from v1.3.1 to v1.4
- pmp: Ignore writes when RW=01 and MML=0
- Don't adjust vscause for exceptions
- Ensure mideleg is set correctly on reset
- Check for 'A' extension on all atomic instructions
- Allow large kernels to boot by moving the initrd further away in RAM
- FIX xATP_MODE validation
- Ensure mcountinhibit, mcounteren, scounteren, hcounteren are 32-bit
- Fix vector shift count overflow
- Fix setipnum_le write emulation for APLIC MSI-mode
- Fix in_clrip[x] read emulation
- Fix privilege mode of G-stage translation for debugging
- Fix ACPI MCFG table for virt machine
- A range of Vector fixes
- Update APLIC IDC after claiming iforce register
- Fix timebase-frequency when using KVM acceleration
s390x
- Fix access register handling in the emulation of the LOAD ADDRESS EXTENDED (LAE) instruction
- Add emulation of CVDG, CVB, CVBY and CVBG instructions
SPARC
Tricore
x86
Xen emulation under KVM
TCG
Known issues
Xtensa
Device emulation and assignment
ACPI / SMBIOS
Audio
Block devices
- The 'luks' block device driver now supports creation and usage of detached LUKS header files
Graphics
Hyper-V
I2C
Input devices
IPMI
Multi-process QEMU
Network devices
NVDIMM
NVMe
PCI/PCIe
SCSI
- The ESP SCSI (am53c974/dc390) device has been substantially rewritten, fixing several long-standing bugs and making it easier to maintain in future.
SD card
SMBIOS
TPM
UFS
USB
VFIO
virtio
vDPA
Xen
fw_cfg
9pfs
virtiofs
Semihosting
Audio
Character devices
- Fix potential crash if connection is dropped while the TLS handshake is still in progress
- Fix I/O on TLS channels when chardev frontend is not ready to consume data
- QEMU is more likely to process pending incoming data before processing EOF/HUP
Crypto subsystem
- The 'sm4' cipher algorithm is now supported and can be used with the 'luks' block driver
- The cipher test suite will automatically skip testing algorithms that have been disabled in the underlying OS crypto library at build time.
Authorization subsystem
GUI
GDBStub
- the gdbstub now supports catching syscalls in user-mode
- the gdbstub now supports fork-follow modes
- the gsbstub now supports siginfo:read
TCG Plugins
- vcpu_init callback will now always be in the vcpu context
- A new API for accessing register values is now available (and used by execlog)
- The inline API has been replaced with a thread safe scoreboard indexed by vcpu_index
Host support
Memory backends
- Memory backends specified on the QEMU commandline can now be preallocated concurrently/asynchronously in some configurations, to speedup QEMU startup with preallocation on multiple memory backends: one requirement is that memory backends that are getting preallocated have a "thread-context" set.
- QEMU 8.2 accidentally allowed for creation of memory backends with sizes that are not aligned to the (huge) page size. This has been fixed.
Migration
- Fixed migration for SUSPENDED VM, where we used to ignore the SUSPENDED state and kick off the VM even if it was suspended before the migration.
- New capability called "mapped-ram". It allows efficient VM snapshots save/load by providing both (1) constant size of ultimate VM image rather than unlimited, and (2) multi-threading support so that save/load of snapshots can be faster.
- Zero page detection offloading for multifd, so that idle guest migration should get a major boost when multifd is enabled.
- New parameter called "zero-page-detection", allow the user to choose the policy for detecting zero pages.
- Enhancement to CPR-reboot mode, added VFIO supports (requires guest suspensions), new documents.
Monitor
QMP
HMP
Network
Block device backends and tools
Tracing
Semihosting
Miscellaneous
- During startup QEMU system emulators will raise the max file descriptors soft limit to match the hard limit
- Seccomp filters will now return EPERM rather than killing QEMU if code attempts to spawn a child process. Fixes compatibility with some NVIDIA libraries which try to run modprobe.
User-mode emulation
runtime
binfmt_misc
alpha
arm/arm64/aarch64
LoongArch
HPPA
s390
x86
TCG
Record/Replay
- fixed record/replay to avoid problems with partial chardev drains
- updated replay-dump.py for current ABI
RISC-V
Guest agent
- Fix build on Solaris
- Improve help for --allow-rpcs and --block-rpcs command line options
- Fix guest-get-fsinfo when a volume has more than one disk (Windows only)
Build Information
Build Dependencies
- The OpenBSD VM was updated to 7.4
Build hardening
- QEMU build will include '-fzero-call-used-regs' to attempt to reduce exploitable ROP gadgets
- QEMU build will include '-ftrivial-auto-var-init=zero' to reduce the chance of uninitialized stack variables causing security issues
Docker Tweaks
Windows
- 32-bit Windows is no longer supported as a host OS; use a 64-bit Windows host instead.
Testing and CI
- The timeout for TCG tests was raised to 120s (for the benefit of TCI)