ChangeLog/6.1: Difference between revisions

From QEMU
 
(67 intermediate revisions by 16 users not shown)
Line 4: Line 4:
=== Incompatible changes ===
=== Incompatible changes ===


Consult the [https://qemu-project.gitlab.io/qemu/system/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
 
* The 'moxie' target has been removed without replacement. There were no known users of this CPU type anymore and no binaries available which could be used for testing.
* The 'lm32' target has been removed without replacement. The only public user of this architecture was the milkymist project, which has been completely inactive for years, and there was never an upstream Linux port.
* The 'unicore32' target has been removed without replacement. Support for this CPU was removed from the upstream Linux kernel a while ago already, and there is no available upstream toolchain to build binaries for it.
* The 'sheepdog' driver has been removed. The corresponding upstream server project is no longer maintained. Users are recommended to switch to an alternative distributed block device driver such as RBD.
* The "info cpustats" HMP command has been removed.  It already didn't produce output.
* When creating an image with a backing file, or changing the backing file of an existing image, <code>qemu-img</code> requires now that the backing file format is specified as well.


=== New deprecated options and features ===
=== New deprecated options and features ===


Consult the [https://www.qemu.org/docs/master/system/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.
 
* Using non-persistent backing file with pmem=on is now deprecated.
* '-display sdl,window_close=...' should be replaced with '-display sdl,window-close=...' (i.e. with a minus instead of an underscore between “window” and “close”).
* '-no-quit' is deprecated. '-display ...,window-close=off' should be used instead.
* The Aspeed swift-bmc machine is deprecated and should be replaced by the witherspoon-bmc or the romulus-bmc machines.


=== 68k ===
=== 68k ===
Line 16: Line 28:
=== Arm ===
=== Arm ===


* New Aspeed machines: rainier-bmc and quanta-q7l1-bmc
* New Aspeed machines: rainier-bmc, quanta-q7l1-bmc
* New npcm7xx machine: quanta-gbs-bmc
* New Cortex-M3 based machine: stm32vldiscovery
* Model for Aspeed's Hash and Crypto Engine
* Model for Aspeed's Hash and Crypto Engine
* The mps3-an524 board now supports the alternate memory map (via "-machine remap=QSPI")
* The mps3-an524 board now supports the alternate memory map (via "-machine remap=QSPI")
* SVE2 is now emulated, including bfloat16 support
* FEAT_I8MM is now emulated (integer matrix multiply accumulate)
* FEAT_TLBIOS is now emulated (TLB invalidate instructions in Outer Shareable domain)
* FEAT_TLBRANGE is now emulated (TLB range invalidate instructions)
* FEAT_BF16 and FEAT_AA32BF16 are now emulated (bfloat16 support for AArch64 and AArch32)
* FEAT_MTE3 (MTE asymmetric fault handling) is now emulated
* The qemu-aarch64 user-mode binary supports a new CPU property sve-default-vector-length that can be used to set the default SVE vector length, analogous to the kernel's /proc/sys/abi/sve_default_vector_length configuration knob


=== AVR ===
=== AVR ===
Line 37: Line 58:
* With recent enough guests now able to (sometimes) detect hot unplug failures on pseries machine type
* With recent enough guests now able to (sometimes) detect hot unplug failures on pseries machine type
* Greatly increased maximum cpu count for pseries; it's now basically arbitrarily high - you will hit KVM or emulation limits before a fixed cut off
* Greatly increased maximum cpu count for pseries; it's now basically arbitrarily high - you will hit KVM or emulation limits before a fixed cut off
* Implemented some POWER10 prefixed instructions in TCG
* Optional support for the H_RPT_INVALIDATE hypercall on pseries machine
* Experimental "Virtual Open Firmware" option for pseries (and Pegasos2) which implements most of the firmware behaviour inside qemu.
* Updated ppce500 firmware image, which should fix pci support
* Updated ppce500 firmware image, which should fix pci support
* Added 'pegasos2' machine type emulating the Genesi/bPlan Pegasos II board
* Added 'pegasos2' machine type emulating the Genesi/bPlan Pegasos II board
Line 51: Line 75:
* Internal cleanup of the CSR accesses
* Internal cleanup of the CSR accesses
* Updates to the OpenTitan platform
* Updates to the OpenTitan platform
* Add support for the OpenTitan timer
* Support for the virtio-vga
* Support for the virtio-vga
* Fix for the saturate subtract in vector extensions (https://bugs.launchpad.net/qemu/+bug/1923629)
* Fix for the saturate subtract in vector extensions (https://bugs.launchpad.net/qemu/+bug/1923629)
* Experimental support for the ePMP spec
* Experimental support for the ePMP spec
* Initial support for the experimental Bit Manip extension
* Update the PLIC and CLINT DT bindings
* Improve documentation for RISC-V machines
* Support direct kernel boot for microchip_pfsoc
* Fix WFI exception behaviour
* Improve CSR printing
* Fix a GDB CSR bug
* A range of other internal code cleanups and bug fixes
* A range of other internal code cleanups and bug fixes


Line 59: Line 91:


* The s390-ccw bios can now be compiled with Clang, too
* The s390-ccw bios can now be compiled with Clang, too
* tcg now supports the vector-enhancements facility, and the 'qemu' cpu model has been bumped to a stripped-down z14 GA2
** this should enable distributions built for the z14 to be run under tcg
* cpu models for gen16 have been added


=== SPARC ===
=== SPARC ===
=== TileGX ===


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


=== x86 ===
=== x86 ===
* New CPU model versions added with XSAVES enabled: <code>Skylake-Client-v4</code>, <code>Skylake-Server-v5</code>, <code>Cascadelake-Server-v5</code>, <code>Cooperlake-v2</code>, <code>Icelake-Client-v3</code>, <code>Icelake-Server-v5</code>, <code>Denverton-v3</code>, <code>Snowridge-v3</code>, <code>Dhyana-v2</code>
* <code>hv-passthrough</code> won't enable Hyper-V feature flags that are unknown to QEMU
* New <code>bus-lock-ratelimit</code> machine option for rate limiting bus locks by guests
* Intel-specific CPUID leaves are not going to be exposed to guests if the vendor ID of the virtual CPU is AMD
* The <code>fcs:fip</code> and <code>fds:fdp</code> fields of the <code>fstenv</code> and <code>fsave</code> structures are correctly set.
* Add ACPI based PCI hotplug support to Q35 machine. It is enabled and used by default since pc-q35-6.1 machine type.
* Many fixes for the emulation of AMD virtualization extensions.
* The NetBSD NVMM accelerator is now supported.
==== KVM ====
* Fix for migration of the PKU state on AMD machine.
==== x86_64 ====
* family/model/stepping of CPU models <code>qemu64</code> (all accelerators) and <code>max</code> (TCG only) were updated to values corresponding to a 64-bit AMD processor (fixes [https://gitlab.com/qemu-project/qemu/-/issues/191 #191])


=== Xtensa ===
=== Xtensa ===
Line 84: Line 132:
* Modified the I2C base to allow I2C muxes to be added
* Modified the I2C base to allow I2C muxes to be added
* Added support for the pca9546 and pca9548 I2C muxes.
* Added support for the pca9546 and pca9548 I2C muxes.
* Added support for PMBus and several PMBus devices.
* Move sensor devices into a new sensor directory.
* Remove the interfaces with the error-prone transfer direction and use the read/write functions instead.


==== Input devices ====
==== Input devices ====


==== IPMI ====
==== IPMI ====
* Fixed type of watchdog_expired so vmstate transfer works. Otherwise a vmstate transfer could end up with the wrong data for that field.


==== Multi-process QEMU ====
==== Multi-process QEMU ====
Line 115: Line 168:


==== virtio ====
==== virtio ====
* virtio-mem now works with vfio


==== Xen ====
==== Xen ====
Line 121: Line 176:


==== 9pfs ====
==== 9pfs ====
* Reduce latency of Twalk request (directory tree traversal)
* Fix potential information leak if mtime of export root directory changed (security impact in practice either none or low).


==== virtiofs ====
==== virtiofs ====
Line 132: Line 190:
=== Crypto subsystem ===
=== Crypto subsystem ===


==== experimental qmp interface ====
* The preferred crypto backend driver now gnutls, with libgcrypt as the second choice, and nettle as third choice, with ordering driven mostly by performance of the ciphers.
* Use of nettle is discouraged due to its poor performances and lack of FIPS support and may be removed in a future release.
* The built-in fallback crypto backend no longer supports DES or AES-XTS. Use of gnutls/gcrypt backends are required instead.
* The SASL configuration now recommends SCRAM-SHA-256 as the mechanism for simple password authentication
* Documentation is provided outlining how to use the secret passing features
 
=== Authorization subsystem ===
 
* Documentation is provided outlining how to use the authorization framework for access control


=== GUI ===
=== GUI ===
* VNC password authentication is no longer supported unless building with an external crypto driver backend library (choice of gnutls, gcrypt or nettle).


=== GDBStub ===
=== GDBStub ===


=== TCG Plugins ===
=== TCG Plugins ===
* some memory leaks plugged in example plugins
* syscall plugin now summarise totals by default (so as not to duplicate -strace)
* new execlog plugin
* new cache modelling plugin
* plugins are enabled by default on most TCG enabled builds
* fixed bug in physical address calculation


=== Host support ===
=== Host support ===


=== Memory backends ===
=== Memory backends ===
* New property "reserve" to map memory with the MAP_NORESERVE flag.
* It is not necessary anymore to set the memory with "-m" when memory is configured with "-M memory-backend=ID".


=== Migration ===
=== Migration ===
Line 155: Line 230:


=== Block device backends and tools ===
=== Block device backends and tools ===
* Fix a [https://gitlab.com/qemu-project/qemu/-/issues/218 regression] in qemu-nbd and qemu-storage-daemon handling file descriptors via socket activation.
* The NBD client connection code has been refactored to operate as a background task, which in turn allows even better responsiveness in the retry code in dealing with a transient failure connection to a server.
* <code>qemu-img map --output=json</code> now includes a <code>"present":''bool''</code> field to facilitate reconstructing which parts of a backing chain are actually present.
* <code>qemu-img convert --bitmaps</code> now includes a <code>--skip-broken-bitmaps</code> option to let it succeed even when the source has inconsistent bitmaps, without requiring the deletion of those bitmaps in the source.
* Creating a new image that uses an encrypted image as its backing file doesn't require providing the secret to <code>qemu-img create</code> any more
* The QMP command <code>blockdev-reopen</code> was added and allows changing the options of block nodes after their creation


=== Tracing ===
=== Tracing ===


=== Miscellaneous ===
=== Miscellaneous ===
* The qtest server can be created using "-object qtest,chardev=...,log=...".  This is alternative to the -qtest and -qtest-log options.
* The settings for the "-smp" option can be also passed to -M using a "smp." prefix, for example "-smp cpus=4" is now a synonym of "-M smp.cpus=4".


== User-mode emulation ==
== User-mode emulation ==
Line 170: Line 253:
* tricore now has check-tcg support and tests
* tricore now has check-tcg support and tests
* hexagon now has check-tcg support and tests
* hexagon now has check-tcg support and tests
* fixed bug in replay HMP commands to accept full length icount
* plugins enabled by default for most TCG enabled builds


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


== Build Information ==
== Build Information ==
* CentOS 7 is no longer a supported build platform


=== Python ===
=== Python ===
Line 180: Line 267:


=== Container Based Builds ===
=== Container Based Builds ===
* improvements to binfmt_misc containers
* most ci containers have been regenerated with lcitool
=== VM Based Builds ===
* NetBSD version bumped to 9.2
* OpenBSD version bumped to 6.9


=== Build Dependencies ===
=== Build Dependencies ===
* gnutls is now the preferred crypto backend
* minimum nettle is now 3.4
* minimum libgcrypt is now 1.8.0
* minimum gnutls is now 3.5.18
* minimum glib is now 2.56
* minimum gcc is now 7.5.0
* minimum clang is now 6.0
* minimum xcode clang is now 10.0
* minimum libssh is now 0.8.7


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


=== Testing and CI ===
=== Testing and CI ===
* playbooks for configuring shared gitlab workers are now in {{src|path=scripts/ci/setup}}
* travis and cirrus results now integrated into GitLab UI
* configure.sh now handles as/ld based tests outside of the container


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


* see [[Planning/6.1]]
* see [[Planning/6.1]]

Latest revision as of 16:02, 24 August 2021

System emulation

Incompatible changes

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

  • The 'moxie' target has been removed without replacement. There were no known users of this CPU type anymore and no binaries available which could be used for testing.
  • The 'lm32' target has been removed without replacement. The only public user of this architecture was the milkymist project, which has been completely inactive for years, and there was never an upstream Linux port.
  • The 'unicore32' target has been removed without replacement. Support for this CPU was removed from the upstream Linux kernel a while ago already, and there is no available upstream toolchain to build binaries for it.
  • The 'sheepdog' driver has been removed. The corresponding upstream server project is no longer maintained. Users are recommended to switch to an alternative distributed block device driver such as RBD.
  • The "info cpustats" HMP command has been removed. It already didn't produce output.
  • When creating an image with a backing file, or changing the backing file of an existing image, qemu-img requires now that the backing file format is specified as well.

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.

  • Using non-persistent backing file with pmem=on is now deprecated.
  • '-display sdl,window_close=...' should be replaced with '-display sdl,window-close=...' (i.e. with a minus instead of an underscore between “window” and “close”).
  • '-no-quit' is deprecated. '-display ...,window-close=off' should be used instead.
  • The Aspeed swift-bmc machine is deprecated and should be replaced by the witherspoon-bmc or the romulus-bmc machines.

68k

Alpha

Arm

  • New Aspeed machines: rainier-bmc, quanta-q7l1-bmc
  • New npcm7xx machine: quanta-gbs-bmc
  • New Cortex-M3 based machine: stm32vldiscovery
  • Model for Aspeed's Hash and Crypto Engine
  • The mps3-an524 board now supports the alternate memory map (via "-machine remap=QSPI")
  • SVE2 is now emulated, including bfloat16 support
  • FEAT_I8MM is now emulated (integer matrix multiply accumulate)
  • FEAT_TLBIOS is now emulated (TLB invalidate instructions in Outer Shareable domain)
  • FEAT_TLBRANGE is now emulated (TLB range invalidate instructions)
  • FEAT_BF16 and FEAT_AA32BF16 are now emulated (bfloat16 support for AArch64 and AArch32)
  • FEAT_MTE3 (MTE asymmetric fault handling) is now emulated
  • The qemu-aarch64 user-mode binary supports a new CPU property sve-default-vector-length that can be used to set the default SVE vector length, analogous to the kernel's /proc/sys/abi/sve_default_vector_length configuration knob

AVR

Hexagon

HPPA

Microblaze

MIPS

Nios2

OpenRISC

PowerPC

  • With recent enough guests now able to (sometimes) detect hot unplug failures on pseries machine type
  • Greatly increased maximum cpu count for pseries; it's now basically arbitrarily high - you will hit KVM or emulation limits before a fixed cut off
  • Implemented some POWER10 prefixed instructions in TCG
  • Optional support for the H_RPT_INVALIDATE hypercall on pseries machine
  • Experimental "Virtual Open Firmware" option for pseries (and Pegasos2) which implements most of the firmware behaviour inside qemu.
  • Updated ppce500 firmware image, which should fix pci support
  • Added 'pegasos2' machine type emulating the Genesi/bPlan Pegasos II board
  • 'mac99' machine now limited to 2GiB of RAM (previously it was allowed on the command line, although it probably wouldn't work properly)

Renesas RX

Renesas SH

RISC-V

  • Clenaup some left over v1.9 code
  • Documentation improvements
  • Support for the shakti_c machine
  • Internal cleanup of the CSR accesses
  • Updates to the OpenTitan platform
  • Add support for the OpenTitan timer
  • Support for the virtio-vga
  • Fix for the saturate subtract in vector extensions (https://bugs.launchpad.net/qemu/+bug/1923629)
  • Experimental support for the ePMP spec
  • Initial support for the experimental Bit Manip extension
  • Update the PLIC and CLINT DT bindings
  • Improve documentation for RISC-V machines
  • Support direct kernel boot for microchip_pfsoc
  • Fix WFI exception behaviour
  • Improve CSR printing
  • Fix a GDB CSR bug
  • A range of other internal code cleanups and bug fixes

s390x

  • The s390-ccw bios can now be compiled with Clang, too
  • tcg now supports the vector-enhancements facility, and the 'qemu' cpu model has been bumped to a stripped-down z14 GA2
    • this should enable distributions built for the z14 to be run under tcg
  • cpu models for gen16 have been added

SPARC

Tricore

x86

  • New CPU model versions added with XSAVES enabled: Skylake-Client-v4, Skylake-Server-v5, Cascadelake-Server-v5, Cooperlake-v2, Icelake-Client-v3, Icelake-Server-v5, Denverton-v3, Snowridge-v3, Dhyana-v2
  • hv-passthrough won't enable Hyper-V feature flags that are unknown to QEMU
  • New bus-lock-ratelimit machine option for rate limiting bus locks by guests
  • Intel-specific CPUID leaves are not going to be exposed to guests if the vendor ID of the virtual CPU is AMD
  • The fcs:fip and fds:fdp fields of the fstenv and fsave structures are correctly set.
  • Add ACPI based PCI hotplug support to Q35 machine. It is enabled and used by default since pc-q35-6.1 machine type.
  • Many fixes for the emulation of AMD virtualization extensions.
  • The NetBSD NVMM accelerator is now supported.

KVM

  • Fix for migration of the PKU state on AMD machine.

x86_64

  • family/model/stepping of CPU models qemu64 (all accelerators) and max (TCG only) were updated to values corresponding to a 64-bit AMD processor (fixes #191)

Xtensa

Device emulation and assignment

ACPI

Audio

Block devices

Graphics

I2C

  • Modified the I2C base to allow I2C muxes to be added
  • Added support for the pca9546 and pca9548 I2C muxes.
  • Added support for PMBus and several PMBus devices.
  • Move sensor devices into a new sensor directory.
  • Remove the interfaces with the error-prone transfer direction and use the read/write functions instead.

Input devices

IPMI

  • Fixed type of watchdog_expired so vmstate transfer works. Otherwise a vmstate transfer could end up with the wrong data for that field.

Multi-process QEMU

Network devices

NVDIMM

NVMe

Emulated NVMe Controller

PCI/PCIe

SCSI

SD card

SMBIOS

TPM

USB

VFIO

virtio

  • virtio-mem now works with vfio

Xen

fw_cfg

9pfs

  • Reduce latency of Twalk request (directory tree traversal)
  • Fix potential information leak if mtime of export root directory changed (security impact in practice either none or low).

virtiofs

Semihosting

Audio

Character devices

Crypto subsystem

  • The preferred crypto backend driver now gnutls, with libgcrypt as the second choice, and nettle as third choice, with ordering driven mostly by performance of the ciphers.
  • Use of nettle is discouraged due to its poor performances and lack of FIPS support and may be removed in a future release.
  • The built-in fallback crypto backend no longer supports DES or AES-XTS. Use of gnutls/gcrypt backends are required instead.
  • The SASL configuration now recommends SCRAM-SHA-256 as the mechanism for simple password authentication
  • Documentation is provided outlining how to use the secret passing features

Authorization subsystem

  • Documentation is provided outlining how to use the authorization framework for access control

GUI

  • VNC password authentication is no longer supported unless building with an external crypto driver backend library (choice of gnutls, gcrypt or nettle).

GDBStub

TCG Plugins

  • some memory leaks plugged in example plugins
  • syscall plugin now summarise totals by default (so as not to duplicate -strace)
  • new execlog plugin
  • new cache modelling plugin
  • plugins are enabled by default on most TCG enabled builds
  • fixed bug in physical address calculation

Host support

Memory backends

  • New property "reserve" to map memory with the MAP_NORESERVE flag.
  • It is not necessary anymore to set the memory with "-m" when memory is configured with "-M memory-backend=ID".

Migration

Monitor

QMP

HMP

Network

Block device backends and tools

  • Fix a regression in qemu-nbd and qemu-storage-daemon handling file descriptors via socket activation.
  • The NBD client connection code has been refactored to operate as a background task, which in turn allows even better responsiveness in the retry code in dealing with a transient failure connection to a server.
  • qemu-img map --output=json now includes a "present":bool field to facilitate reconstructing which parts of a backing chain are actually present.
  • qemu-img convert --bitmaps now includes a --skip-broken-bitmaps option to let it succeed even when the source has inconsistent bitmaps, without requiring the deletion of those bitmaps in the source.
  • Creating a new image that uses an encrypted image as its backing file doesn't require providing the secret to qemu-img create any more
  • The QMP command blockdev-reopen was added and allows changing the options of block nodes after their creation

Tracing

Miscellaneous

  • The qtest server can be created using "-object qtest,chardev=...,log=...". This is alternative to the -qtest and -qtest-log options.
  • The settings for the "-smp" option can be also passed to -M using a "smp." prefix, for example "-smp cpus=4" is now a synonym of "-M smp.cpus=4".

User-mode emulation

binfmt_misc

Hexagon

TCG

  • tricore now has check-tcg support and tests
  • hexagon now has check-tcg support and tests
  • fixed bug in replay HMP commands to accept full length icount
  • plugins enabled by default for most TCG enabled builds

Guest agent

Build Information

  • CentOS 7 is no longer a supported build platform

Python

GIT submodules

Container Based Builds

  • improvements to binfmt_misc containers
  • most ci containers have been regenerated with lcitool

VM Based Builds

  • NetBSD version bumped to 9.2
  • OpenBSD version bumped to 6.9

Build Dependencies

  • gnutls is now the preferred crypto backend
  • minimum nettle is now 3.4
  • minimum libgcrypt is now 1.8.0
  • minimum gnutls is now 3.5.18
  • minimum glib is now 2.56
  • minimum gcc is now 7.5.0
  • minimum clang is now 6.0
  • minimum xcode clang is now 10.0
  • minimum libssh is now 0.8.7

Windows

Testing and CI

  • playbooks for configuring shared gitlab workers are now in scripts/ci/setup
  • travis and cirrus results now integrated into GitLab UI
  • configure.sh now handles as/ld based tests outside of the container

Known issues