ChangeLog/6.2: Difference between revisions

From QEMU
(Created page with " == System emulation == === Incompatible changes === Consult the [https://qemu-project.gitlab.io/qemu/about/removed-features.html 'Removed features' ] page for details of su...")
 
 
(36 intermediate revisions by 13 users not shown)
Line 11: Line 11:


=== 68k ===
=== 68k ===
* Improved support for Apple's Nubus, including the ability to load declaration ROMs and slot IRQ support
* The macfb framebuffer device now supports the same video modes found on a real Quadra 800


=== Alpha ===
=== Alpha ===


=== Arm ===
=== Arm ===
* On macOS hosts with Apple Silicon CPUs we now support the 'hvf' accelerator for running AArch64 guests
* M-profile CPUs now emulate trapping on division by zero via CCR.DIV_0_TRP
* The pl011 UART model now supports sending 'break'
* The Fujitsu A64FX processor model is now supported in TCG ('-cpu a64fx')
* The M-profile MVE extension is now supported, and enabled in the Cortex-M55
* The deprecated machine names 'raspi2' and 'raspi3' have been removed; use 'raspi2b' and 'raspi3b' instead
* The 'virt' machine now supports an emulated ITS
* New machine type: kudo-bmc
* The xlnx-zcu102 and xlnx-versal-virt machines now support BBRAM and eFUSE devices
* The 'virt' machine now supports more than 123 CPUs in TCG emulation mode
* The pl031 real-time clock device now supports sending RTC_CHANGE QMP events


=== AVR ===
=== AVR ===
Line 31: Line 46:


=== PowerPC ===
=== PowerPC ===
* Improved POWER10 support for the 'powernv' machine
* Initial support for POWER10 DD2.0 CPU added
* Added support for FORM2 PAPR NUMA descriptions in the "pseries" machine type
** With a guest kernel that also has support, this allows for asymmetric and other complex NUMA tolopogies which previously couldn't be communicated to the guest
* Maintainer changed from David Gibson & Greg Kurz, to Cédric le Goater & Daniel Henrique Barboza


=== Renesas RX ===
=== Renesas RX ===
Line 37: Line 57:


=== RISC-V ===
=== RISC-V ===
* Add Zb[abcs] instruction support
* Remove RVB support
* Fixup virt flash node
* Don't override users supplied ISA version
* Fixup some CSR accesses
* Fix an overflow in the SiFive CLINT (https://gitlab.com/qemu-project/qemu/-/issues/493)
* ePMP CSR address updates
* SiFive PWM support
* Support for RISC-V ACLINT
* Support vhost-user and numa mem options on all boards
* mstatus.SD bug fix for hypervisor extensions
* OpenTitan fix for USB dev address
* OpenTitan update to latest bitstream build
* Remove the Ibex PLIC
* Bug fix of setting mstatus_hs.[SD|FS] bits
* Fixes for sifive PDMA
* Mark shakti_c as not user creatable
* Add support for the experimental J extension
* Update the fmin/fmax handling
* Fixup VS interrupt forwarding


=== s390x ===
=== s390x ===
* Improved storage key emulation (e.g. fixed address handling, lazy storage key enablement for TCG, ...)
* New gen16 CPU features are now enabled automatically in the latest machine type


=== SPARC ===
=== SPARC ===
* Fix for booting sun4m machines with more than 1 CPU


=== Tricore ===
=== Tricore ===


=== x86 ===
=== x86 ===
* New Snowridge-v4 CPU model, with split-lock-detect feature disabled


==== KVM ====
==== KVM ====
* Support for SGX in the virtual machine, using the /dev/sgx_vepc device on the host and the "memory-backend-epc" backend in QEMU.
* New "hv-apicv" CPU property (aliased to "hv-avic") sets the HV_DEPRECATING_AEOI_RECOMMENDED bit in CPUID[0x40000004].EAX.


==== x86_64 ====
==== x86_64 ====
==== AMD SEV ====
* Measured launch with direct kernel boot is now possible by setting the 'kernel-hashes=on' property to the 'sev-guest' object. This requires a correspondingly new enough firmware to handle the hashes.


=== Xtensa ===
=== Xtensa ===
Line 94: Line 146:


==== virtio ====
==== virtio ====
* virtio-mem
** QEMU now fully supports guest memory dumps with virtio-mem.
** QEMU now cleanly supports precopy migration, postcopy migration and background snapshots with virtio-mem.


==== Xen ====
==== Xen ====
Line 100: Line 156:


==== 9pfs ====
==== 9pfs ====
* Fixed an occasional [https://lists.gnu.org/archive/html/qemu-devel/2021-09/msg00320.html crash when handling 'Twalk'] requests; thus bug was introduced in QEMU 6.1.0.
* Fixed sub-optimal I/O performance on guest due to incorrect IOUNIT which happened with certain applications like 'cat' which retrieve stat's st_blksize at runtime to determine their read/write buffer size.


==== virtiofs ====
==== virtiofs ====
Line 108: Line 166:


=== Character devices ===
=== Character devices ===
* ESCC reset fixes


=== Crypto subsystem ===
=== Crypto subsystem ===
Line 116: Line 175:


=== GDBStub ===
=== GDBStub ===
* we now support Txxthread:yyyy; replies instead of a plain Sxx for signals arriving at a thread
* a bug with watchpoints and icount has been fixed


=== TCG Plugins ===
=== TCG Plugins ===
Line 128: Line 190:


==== QMP ====
==== QMP ====
* New event DEVICE_UNPLUG_GUEST_ERROR, which allows guest-reported failures of hot unplugs to be reported to the user or management layer
** Since this relies on the guest, an event can't be guaranteed and only some hotplug mechanisms can generate it at all
** This will eventually replace MEM_UNPLUG_ERROR which reported the same thing, but only for memory unplug


==== HMP ====
==== HMP ====
Line 134: Line 199:


=== Block device backends and tools ===
=== Block device backends and tools ===
* ''qemu-nbd'' now defaults to writeback caching, rather than writethrough, to match the defaults of ''qemu-img''. While this has better performance, it may affect correctness if you were previously relying on writethrough semantics without explicit use of the '--cache=' option.
* ''qemu-nbd'' now has a ''--selinux-label'' option for setting the SELinux label of a Unix socket.


=== Tracing ===
=== Tracing ===
Line 146: Line 213:


== TCG ==
== TCG ==
* plugins now have a bool arg parsing helper and cleaned up argument syntax
* the cache plugin is now multi-core aware


== Guest agent ==
== Guest agent ==


== Build Information ==
== Build Information ==
* the --enable-git-update and --disable-git-update options to configure were removed
* the --disable-blobs option to configure is deprecated and should be replaced with --disable-install-blobs
* the --enable-trace-backend to configure is deprecated and should be replaced with --enable-trace-backends
* the --enable-jemalloc to configure is deprecated and should be replaced with --enable-malloc=jemalloc
* the --enable-tcmalloc to configure is deprecated and should be replaced with --enable-malloc=tcmalloc
* versions 5.2 to 6.1 of QEMU didn't fully obey the configure options --extra-cflags and --extra-ldflags, so you could have some latent bugs if you were using them (and hoping that they would work).  In particular, note that passing <tt>--extra-cflags='-Wall'</tt> will override QEMU's choice of which warnings need to be disabled, and might cause the build to fail if using <tt>-Werror</tt>.


=== Python ===
=== Python ===
Line 164: Line 240:


=== Testing and CI ===
=== Testing and CI ===
* The '''tests/acceptance''' folder was never used to store acceptance tests in terms of software engineering. This naming could confuse developers adding tests using the Avocado Framework to this folder. The folder name change to '''tests/avocado''' also changed the '''make''' target from '''check-acceptance''' to '''check-avocado'''. In this case, the use of the '''check-acceptance''' target is deprecated.


== Known issues ==
== Known issues ==


* see [[Planning/6.2]]
* see [[Planning/6.2]]

Latest revision as of 18:28, 9 December 2021

System emulation

Incompatible changes

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

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.

68k

  • Improved support for Apple's Nubus, including the ability to load declaration ROMs and slot IRQ support
  • The macfb framebuffer device now supports the same video modes found on a real Quadra 800

Alpha

Arm

  • On macOS hosts with Apple Silicon CPUs we now support the 'hvf' accelerator for running AArch64 guests
  • M-profile CPUs now emulate trapping on division by zero via CCR.DIV_0_TRP
  • The pl011 UART model now supports sending 'break'
  • The Fujitsu A64FX processor model is now supported in TCG ('-cpu a64fx')
  • The M-profile MVE extension is now supported, and enabled in the Cortex-M55
  • The deprecated machine names 'raspi2' and 'raspi3' have been removed; use 'raspi2b' and 'raspi3b' instead
  • The 'virt' machine now supports an emulated ITS
  • New machine type: kudo-bmc
  • The xlnx-zcu102 and xlnx-versal-virt machines now support BBRAM and eFUSE devices
  • The 'virt' machine now supports more than 123 CPUs in TCG emulation mode
  • The pl031 real-time clock device now supports sending RTC_CHANGE QMP events

AVR

Hexagon

HPPA

Microblaze

MIPS

Nios2

OpenRISC

PowerPC

  • Improved POWER10 support for the 'powernv' machine
  • Initial support for POWER10 DD2.0 CPU added
  • Added support for FORM2 PAPR NUMA descriptions in the "pseries" machine type
    • With a guest kernel that also has support, this allows for asymmetric and other complex NUMA tolopogies which previously couldn't be communicated to the guest
  • Maintainer changed from David Gibson & Greg Kurz, to Cédric le Goater & Daniel Henrique Barboza

Renesas RX

Renesas SH

RISC-V

  • Add Zb[abcs] instruction support
  • Remove RVB support
  • Fixup virt flash node
  • Don't override users supplied ISA version
  • Fixup some CSR accesses
  • Fix an overflow in the SiFive CLINT (https://gitlab.com/qemu-project/qemu/-/issues/493)
  • ePMP CSR address updates
  • SiFive PWM support
  • Support for RISC-V ACLINT
  • Support vhost-user and numa mem options on all boards
  • mstatus.SD bug fix for hypervisor extensions
  • OpenTitan fix for USB dev address
  • OpenTitan update to latest bitstream build
  • Remove the Ibex PLIC
  • Bug fix of setting mstatus_hs.[SD|FS] bits
  • Fixes for sifive PDMA
  • Mark shakti_c as not user creatable
  • Add support for the experimental J extension
  • Update the fmin/fmax handling
  • Fixup VS interrupt forwarding

s390x

  • Improved storage key emulation (e.g. fixed address handling, lazy storage key enablement for TCG, ...)
  • New gen16 CPU features are now enabled automatically in the latest machine type

SPARC

  • Fix for booting sun4m machines with more than 1 CPU

Tricore

x86

  • New Snowridge-v4 CPU model, with split-lock-detect feature disabled

KVM

  • Support for SGX in the virtual machine, using the /dev/sgx_vepc device on the host and the "memory-backend-epc" backend in QEMU.
  • New "hv-apicv" CPU property (aliased to "hv-avic") sets the HV_DEPRECATING_AEOI_RECOMMENDED bit in CPUID[0x40000004].EAX.

x86_64

AMD SEV

  • Measured launch with direct kernel boot is now possible by setting the 'kernel-hashes=on' property to the 'sev-guest' object. This requires a correspondingly new enough firmware to handle the hashes.

Xtensa

Device emulation and assignment

ACPI

Audio

Block devices

Graphics

I2C

Input devices

IPMI

Multi-process QEMU

Network devices

NVDIMM

NVMe

Emulated NVMe Controller

PCI/PCIe

SCSI

SD card

SMBIOS

TPM

USB

VFIO

virtio

  • virtio-mem
    • QEMU now fully supports guest memory dumps with virtio-mem.
    • QEMU now cleanly supports precopy migration, postcopy migration and background snapshots with virtio-mem.

Xen

fw_cfg

9pfs

  • Fixed an occasional crash when handling 'Twalk' requests; thus bug was introduced in QEMU 6.1.0.
  • Fixed sub-optimal I/O performance on guest due to incorrect IOUNIT which happened with certain applications like 'cat' which retrieve stat's st_blksize at runtime to determine their read/write buffer size.

virtiofs

Semihosting

Audio

Character devices

  • ESCC reset fixes

Crypto subsystem

Authorization subsystem

GUI

GDBStub

  • we now support Txxthread:yyyy; replies instead of a plain Sxx for signals arriving at a thread
  • a bug with watchpoints and icount has been fixed

TCG Plugins

Host support

Memory backends

Migration

Monitor

QMP

  • New event DEVICE_UNPLUG_GUEST_ERROR, which allows guest-reported failures of hot unplugs to be reported to the user or management layer
    • Since this relies on the guest, an event can't be guaranteed and only some hotplug mechanisms can generate it at all
    • This will eventually replace MEM_UNPLUG_ERROR which reported the same thing, but only for memory unplug

HMP

Network

Block device backends and tools

  • qemu-nbd now defaults to writeback caching, rather than writethrough, to match the defaults of qemu-img. While this has better performance, it may affect correctness if you were previously relying on writethrough semantics without explicit use of the '--cache=' option.
  • qemu-nbd now has a --selinux-label option for setting the SELinux label of a Unix socket.

Tracing

Miscellaneous

User-mode emulation

binfmt_misc

Hexagon

TCG

  • plugins now have a bool arg parsing helper and cleaned up argument syntax
  • the cache plugin is now multi-core aware

Guest agent

Build Information

  • the --enable-git-update and --disable-git-update options to configure were removed
  • the --disable-blobs option to configure is deprecated and should be replaced with --disable-install-blobs
  • the --enable-trace-backend to configure is deprecated and should be replaced with --enable-trace-backends
  • the --enable-jemalloc to configure is deprecated and should be replaced with --enable-malloc=jemalloc
  • the --enable-tcmalloc to configure is deprecated and should be replaced with --enable-malloc=tcmalloc
  • versions 5.2 to 6.1 of QEMU didn't fully obey the configure options --extra-cflags and --extra-ldflags, so you could have some latent bugs if you were using them (and hoping that they would work). In particular, note that passing --extra-cflags='-Wall' will override QEMU's choice of which warnings need to be disabled, and might cause the build to fail if using -Werror.

Python

GIT submodules

Container Based Builds

VM Based Builds

Build Dependencies

Windows

Testing and CI

  • The tests/acceptance folder was never used to store acceptance tests in terms of software engineering. This naming could confuse developers adding tests using the Avocado Framework to this folder. The folder name change to tests/avocado also changed the make target from check-acceptance to check-avocado. In this case, the use of the check-acceptance target is deprecated.

Known issues