Jump to navigation Jump to search
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=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 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.
- 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:
- 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
- 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
- Implemented fid instruction (Floating-Point Identify)
- Create illegal instruction when executing 64-bit load/save on 32-bit emulation
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.
Device emulation and assignment
ACPI / SMBIOS
- New device "ide-cf" emulating a CompactFlash card.
- 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
- igb device emulation
- Experimental migration support has been updated to the v2 VFIO migration protocol, v1 has been removed.
- 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
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.
The deprecated 'password' option for SPICE is removed. Applications should use 'password-secret' instead, together with '-object secret'.
- some deadlocks cases where fixed when using plugins
- The 'get-win32-socket' command was added to allow importing sockets from other processes (the socket can then be used with 'add_client').
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'
- Add support for FDPIC executables and shared libraries.
- 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)
- 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.
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)
- see Planning/8.0