ChangeLog/6.1: Difference between revisions
(50 intermediate revisions by 16 users not shown) | |||
Line 4: | Line 4: | ||
=== Incompatible changes === | === Incompatible changes === | ||
Consult the [https://qemu-project.gitlab.io/qemu/ | 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 '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. | ||
Line 11: | Line 11: | ||
* 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 '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. | * 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:// | 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 22: | Line 28: | ||
=== Arm === | === Arm === | ||
* New Aspeed machines: rainier-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") | ||
Line 30: | Line 38: | ||
* FEAT_TLBRANGE is now emulated (TLB range invalidate instructions) | * FEAT_TLBRANGE is now emulated (TLB range invalidate instructions) | ||
* FEAT_BF16 and FEAT_AA32BF16 are now emulated (bfloat16 support for AArch64 and AArch32) | * 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 49: | Line 59: | ||
* 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 | * 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 63: | 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 | * Update the PLIC and CLINT DT bindings | ||
* Improve documentation for RISC-V machines | * Improve documentation for RISC-V machines | ||
Line 71: | Line 85: | ||
* Fix WFI exception behaviour | * Fix WFI exception behaviour | ||
* Improve CSR printing | * 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 77: | 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 === | ||
Line 86: | Line 103: | ||
* 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> | * 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 | * <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 ==== | ==== x86_64 ==== | ||
Line 107: | 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 138: | Line 168: | ||
==== virtio ==== | ==== virtio ==== | ||
* virtio-mem now works with vfio | |||
==== Xen ==== | ==== Xen ==== | ||
Line 144: | 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 154: | Line 189: | ||
=== Crypto subsystem === | === 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 === | === 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 === | ||
Line 161: | Line 207: | ||
=== TCG Plugins === | === TCG Plugins === | ||
* some memory leaks plugged in example plugins | * some memory leaks plugged in example plugins | ||
* syscall plugin | * 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 179: | Line 231: | ||
=== 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. | * 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 195: | Line 254: | ||
* 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 | * fixed bug in replay HMP commands to accept full length icount | ||
* plugins enabled by default for most TCG enabled builds | |||
== Guest agent == | == Guest agent == | ||
Line 208: | Line 268: | ||
=== Container Based Builds === | === Container Based Builds === | ||
* improvements to binfmt_misc containers | * 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 nettle is now 3.4 | ||
* minimum libgcrypt is now 1.8.0 | * minimum libgcrypt is now 1.8.0 | ||
Line 222: | Line 288: | ||
=== 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
andfds:fdp
fields of thefstenv
andfsave
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) andmax
(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
- see Planning/6.1