ChangeLog/8.0: Difference between revisions

From QEMU
(32-bit ARM hosts continue to be supported)
 
(36 intermediate revisions by 17 users not shown)
Line 1: Line 1:
== System emulation ==
== System emulation ==


=== Incompatible changes ===
=== Removed features and incompatible changes ===


Consult the [https://qemu-project.gitlab.io/qemu/about/removed-features.html 'Removed features'] page for details of suggested replacement functionality.
Consult the [https://qemu-project.gitlab.io/qemu/about/removed-features.html 'Removed features'] page for details of suggested replacement functionality.


==== Other removed features ====
*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".
* <tt>-chardev tty</tt> and <tt>-chardev parport</tt> have been removed; they should be replaced respectively by <tt>-chardev serial</tt> and <tt>-chardev parallel</tt>.
* <tt>-spice password=...</tt> is insecure and should be replaced by the <tt>password-secret</tt> option.
* <tt>-M kernel-irqchip=off</tt> 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 <tt>-M graphics=off</tt> (or <tt>-nographic</tt> which implies it).
* The <tt>virtiofsd</tt> 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 ===
=== New deprecated options and features ===


Consult the [https://qemu-project.gitlab.io/qemu/about/deprecated.html "Deprecated Features"] chapter of the QEMU System Emulation User's Guide for further details of the deprecations and their suggested replacements.
Consult the [https://qemu-project.gitlab.io/qemu/about/deprecated.html "Deprecated Features"] chapter of the QEMU System Emulation User's Guide for further details of the deprecations and their suggested replacements.
* The <tt>--enable-gprof</tt> configure option is deprecated. It is suggested to use a non-instrumenting profiler instead.
* The <tt>-no-hpet</tt> and <tt>-no-acpi</tt> options are deprecated. Use <tt>-M hpet=off</tt> and <tt>-M acpi=off</tt> instead.
* The HAXM project has been retired, and <tt>-accel hax</tt> 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 <tt>password</tt> option is insecure and has been deprecated.


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


=== Alpha ===
=== Alpha ===
Line 25: Line 40:
** Cortex-R52 CPU
** Cortex-R52 CPU
* The GICv3 can now be emulated under hvf acceleration
* 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


==== Machines ====
==== Machines ====


* The cubieboard machine is now able to boot directly from an SD card image.
* 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:
* New machine types:
** ``olimex-stm32-h405`` -- Olimex STM32 H405 board with STM32F405RGT6 microcontroller
** ``olimex-stm32-h405`` -- Olimex STM32 H405 board with STM32F405RGT6 microcontroller
Line 35: Line 53:


=== Hexagon ===
=== Hexagon ===
* updated the test compiler to version 16.0


=== HPPA ===
=== HPPA ===
Line 63: Line 82:
* Add Zawrs ISA extension support
* Add Zawrs ISA extension support
* Add support for the T-Head vendor extensions
* 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 ====
==== Machines ====
Line 69: Line 93:
* riscv_htif: Support console output via proxy syscall
* riscv_htif: Support console output via proxy syscall
* Update opentitan IRQs
* Update opentitan IRQs
* OpenSBI has been updated to version 1.2, see [https://github.com/riscv-software-src/opensbi/releases/tag/v1.2 release notes] for more details.
* Support for ACPI on RISC-V.


==== Fixes and Misc ====
==== Fixes and Misc ====
Line 87: Line 113:
* Fix ctzw behavior
* Fix ctzw behavior
* Fix SBI getchar handler for KVM
* 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


=== s390x ===
=== s390x ===
* 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


=== SPARC ===
=== SPARC ===
Line 100: Line 135:


=== x86 ===
=== x86 ===
* Add support for Xen guests under KVM with Linux v5.12+. See the [https://qemu-project.gitlab.io/qemu/system/i386/xen.html "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


=== Xtensa ===
=== Xtensa ===
Line 110: Line 161:


==== Block devices ====
==== Block devices ====
* New device "ide-cf" emulating a CompactFlash card.


==== Graphics ====
==== Graphics ====
Line 116: Line 168:


==== Input devices ====
==== 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


==== IPMI ====
==== IPMI ====
Line 122: Line 176:


==== Network devices ====
==== Network devices ====
* igb device emulation


==== NVDIMM ====
==== NVDIMM ====
Line 140: Line 195:


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


==== virtio ====
==== virtio ====
* 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.
==== vDPA ====
* Support live migration of vhost-vdpa net devices without CVQ, with no need of x-svq.


==== Xen ====
==== Xen ====
Line 172: Line 231:


=== GDBStub ===
=== GDBStub ===
* removed cpu/target dependencies to only compile once


=== TCG Plugins ===
=== TCG Plugins ===
* some deadlocks cases where fixed when using 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 ===
=== Host support ===
Line 185: Line 247:


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


==== HMP ====
==== HMP ====


=== Network ===
=== Network ===
* 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 ===
=== Block device backends and tools ===
Line 215: Line 280:


=== x86 ===
=== x86 ===
=== Xtensa ===
* Add support for FDPIC executables and shared libraries.


== TCG backends ==
== TCG backends ==
Line 221: Line 289:


== Guest agent ==
== Guest agent ==
* Add USB but type support for guest-get-fsinfo in Windows
* Add USB bus type support for guest-get-fsinfo in Windows
* Add initial OpenBSD and NetBSD support
* Add initial OpenBSD and NetBSD support
* Add logging to Windows event log
* Add logging to Windows event log
* Fix build with Glib version > 2.73.2 (Windows)
* 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 Information ==


=== Build Dependencies ===
=== Build Dependencies ===
* we have dropped perl as a build dependency
* 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.


=== Windows ===
=== Windows ===


=== Testing and CI ===
=== 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)
* 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 ==
== 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]]
* see [[Planning/8.0]]

Latest revision as of 14:51, 19 April 2023

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=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.

68k

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

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 are 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

  • updated the test compiler to version 16.0

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

s390x

  • 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

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.
  • 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

Xtensa

Device emulation and assignment

ACPI / SMBIOS

Audio

Block devices

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

Graphics

I2C

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

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

  • 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.

vDPA

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

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

  • 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

Migration

Monitor

QMP

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

HMP

Network

  • 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'

Tracing

Semihosting

Miscellaneous

User-mode emulation

build

binfmt_misc

Hexagon

LoongArch

Nios2

HPPA

x86

Xtensa

  • Add support for FDPIC executables and shared libraries.

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

  • 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.

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)
  • 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