Revision as of 14:51, 19 April 2023 by Huth (talk | contribs) (32-bit ARM hosts continue to be supported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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, 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=off and -M acpi=off instead.
  • The HAXM project has been retired, and -accel hax has therefore been deprecated.
  • System emulation on 32-bit x86 hosts has been deprecated. The QEMU project no longer considers 32-bit x86 host 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.


  • Fix FPSR quotient byte for fmod and frem instructions
  • Fix 'bkpt' instruction in softmmu mode to generate an illegal exception



  • 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 are now exposed to the gdbstub
  • Linux/arm64 EFI zboot format kernel images can now be booted with -kernel


  • 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



  • updated the test compiler to version 16.0


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







Renesas RX

Renesas SH


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.


  • 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.
  • Fix slli_uw decoding
  • Fix incorrect register name in disassembler for fmv,fabs,fneg instructions


  • Improved zPCI passthrough device handling
  • Fixed emulation of MVCP, MVCS, CHRL and CGHRL instructions
  • Support for asynchronous teardown of memory of secure KVM guests during reboot



  • 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


  • 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.
  • Fixed CPU hotplug when used with TCG accel (it was broken since 5.1.0) (dab30fbef3896)
  • Fixed broken SHPC hotplug on 'pc' based machines (since v5.2.0) (f40e6a4cc10)
  • Extend 'acpi-index' from only hotpluggable devices in ACPI PCI hotplug mode to non-hotpluggable devices as well
    • new acpi-index supported configurations:
      • devices attached to functions other than 0 (aka multifunction support) as long as slot they are plugged in is not hotpluggable
      • 'pc' machine
        • devices attached directly to hostbridge when hotplug on it disabled '-global PIIX4_PM.acpi-root-pci-hotplug = off'
        • devices attached to non-hotpluggable bridges when '-global PIIX4_PM.acpi-pci-hotplug-with-bridge-support = on | off'
      • 'q35' machine
        • devices attached directly to hostbridge (when '-global ICH9-LPC.acpi-pci-hotplug-with-bridge-support = on | off')
        • devices attached to non-hotpluggable bridges/root-ports (when '-global ICH9-LPC.acpi-pci-hotplug-with-bridge-support = on | off')
    • not supported yet PXB and hierarchies hanging from it


Device emulation and assignment



Block devices

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



Input devices

  • The ps2 keyboard emulation of Korean Hanguel / Hanja keys is fixed to avoid the incorrect key release event
  • Support for the F13 -> F24 keys is added


Multi-process QEMU

Network devices

  • igb device emulation





SD card





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


  • virtio-mem now fully supports combining preallocation with migration. Preallocation is used with fd-based memory, such as hugetlb or shmem. For example, when the migration destination doesn't have sufficient hugetlb pages available, QEMU will now fail with an error instead of crashing with SIGBUS during the incoming migration.


  • Support live migration of vhost-vdpa net devices without CVQ, with no need of x-svq.





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


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


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


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


  • removed cpu/target dependencies to only compile once

TCG Plugins

  • some deadlocks cases where fixed when using plugins
  • fixed some cases where memory callbacks were not properly cleared
  • add some missing API docs

Host support

Memory backends




  • The 'get-win32-socket' command was added to allow importing sockets from other processes (the socket can then be used with 'add_client').



  • qemu-nbd and other places where qemu can serve as an NBD server are now more efficient over TCP sockets, particularly when TLS is enabled.

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'




User-mode emulation









  • Add support for FDPIC executables and shared libraries.

TCG backends


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

  • Perl is not necessary anymore to build QEMU, though it remains necessary in order to build developer documentation.
  • 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.


Testing and CI

  • we have started deprecating 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)
  • more of the full-fat fedora boot tests have been converted to faster more directed test
  • there is now a basic analysis script for comparing json coverage reports

Known issues

  • In this release we don't recommend configuring with --enable-qom-cast-debug -- this will trigger an otherwise harmless assertion failure in code for the pxb-cxl device (which will also appear during 'make check' if you configured with this option).
  • see Planning/8.0