ChangeLog/9.2: Difference between revisions
(→Arm) |
|||
(54 intermediate revisions by 16 users not shown) | |||
Line 4: | Line 4: | ||
=== Removed features and incompatible changes === | === Removed features and incompatible changes === | ||
* The -rotate and -portrait options were only useful with PXA2xx machines, which have all now been removed. These command line options have therefore also been removed. | |||
* The "proxy" backend for 9pfs, and the "virtfs-proxy-helper" program, have been removed. Use the "local" backend driver or virtio-fs instead. | |||
* The "loaded" property from 'secret' and 'tlscreds' object types has been removed. It had no functional purpose and any use should be removed with no replacement. | |||
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. | ||
=== New deprecated options and features === | === New deprecated options and features === | ||
* query-migrationthreads command (deprecated with no replacement). | |||
* gluster backend for block devices | |||
* "reconnect" option for character and network devices (replaced by "reconnect-ms") | |||
* "zero-blocks" migration capability (only used by block migration, which was removed in 9.1) | |||
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. | ||
Line 19: | Line 28: | ||
* New CPU architectural features emulated: | * New CPU architectural features emulated: | ||
** FEAT_EBF16 | ** FEAT_EBF16 | ||
** FEAT_CMOW | |||
* Changes to existing board models: | * Changes to existing board models: | ||
Line 24: | Line 34: | ||
** the virt board now has an SMMU capable of two-stage translation | ** the virt board now has an SMMU capable of two-stage translation | ||
** xilinx-zynq-a9 now enables the Security Extensions on the CPU | ** xilinx-zynq-a9 now enables the Security Extensions on the CPU | ||
* KVM-based VMs can now support MTE (if the host CPU has MTE support) | |||
* gdbstub | * gdbstub | ||
Line 31: | Line 43: | ||
* Some older machine types which were deprecated in the 9.0 release have now been removed: akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex, z2 | * Some older machine types which were deprecated in the 9.0 release have now been removed: akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex, z2 | ||
* when QEMU is built with the experimental Rust feature, an alternative PL011 implementation in Rust is selected by default. It is not migrateable and not recommended for actual use. | |||
=== AVR === | === AVR === | ||
=== CRIS === | |||
The CRIS target has been removed without replacement (The CRIS architecture was pulled from Linux in 4.17 and the compiler was no longer packaged in any distro making it hard to test this target). | |||
=== Hexagon === | === Hexagon === | ||
Line 38: | Line 56: | ||
=== HPPA === | === HPPA === | ||
* SeaBIOS-hppa v17 firmware with various fixes and enhancements | |||
* Fix saving and restoring PSW V-Bit (division step) accross interrupts | * Fix saving and restoring PSW V-Bit (division step) accross interrupts | ||
* Fix linux-user emulation issues on 64-bit CPU | * Fix linux-user emulation issues on 64-bit CPU | ||
Line 44: | Line 63: | ||
=== Microblaze === | === Microblaze === | ||
* debian-microblaze-cross has been patched to fix atomic generation | |||
=== MIPS === | === MIPS === | ||
* Fix for booting the jazz machine with the -nic ...,model=dp83932 option | |||
=== Nios2 === | === Nios2 === | ||
Line 55: | Line 78: | ||
=== Renesas RX === | === Renesas RX === | ||
=== Renesas SH === | === Renesas SH (sh4) === | ||
* The unmaintained "shix" machine has been removed | |||
=== RISC-V === | === RISC-V === | ||
==== ISA and Extensions ==== | ==== ISA and Extensions ==== | ||
* Add a property to set vl to ceil(AVL/2) | |||
* Add 'fcsr' register to QEMU log as a part of F extension | |||
* Add preliminary textra trigger CSR functions | |||
* Add Svvptc extension support | |||
* Fix masking of rv32 physical address | |||
* Support for control flow integrity extensions | |||
* Support for the IOMMU with the virt machine | |||
* Improve the performance of vector unit-stride/whole register ld/st instructions | |||
==== Machines ==== | ==== Machines ==== | ||
* Enable Bit Manip for OpenTitan Ibex CPU | |||
* Fix the group bit setting of AIA with KVM | |||
* Expose RV32 cpu to RV64 QEMU | |||
* Avoid dropping charecters with HTIF | |||
* Apply FIFO backpressure to guests using SiFive UART | |||
==== Fixes and Misc ==== | ==== Fixes and Misc ==== | ||
* Consider MISA bit choice in implied rule | |||
* Fix the za64rs priv spec requirements | |||
* Stop timer with infinite timecmp | |||
* Fix riscv64 build on musl libc | |||
* RISC-V bsd-user support | |||
* Fix linking problem with semihosting disabled | |||
* Fix IMSIC interrupt state updates | |||
* Fix an access to VXSAT | |||
* Don't clear PLIC pending bits on IRQ lowering | |||
* Make PLIC zeroth priority register read-only | |||
* Set vtype.vill on CPU reset | |||
* Check and update APLIC pending when write sourcecfg | |||
* set 'aia_mode' to default in error path | |||
* clarify how 'riscv-aia' default works | |||
* Update kvm exts to Linux v6.11 | |||
=== s390x === | === s390x === | ||
* The s390-ccw guest firmware now supports booting from other devices in case the previous ones fail | |||
=== SPARC === | === SPARC === | ||
Line 74: | Line 127: | ||
=== Tricore === | === Tricore === | ||
=== x86 === | === x86 === | ||
* New machine type "nitro-enclave" can emulate an [https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html AWS Nitro Enclave] environment and can boot from an EIF (Enclave Image Format) file. | |||
==== | ==== KVM ==== | ||
* Support for enabling AVX10 and specifying the desired version of AVX10, via the avx10, avx10-128, avx10-256, avx10-512 and avx10-version properties. | |||
=== Xtensa === | === Xtensa === | ||
Line 90: | Line 145: | ||
==== Graphics ==== | ==== Graphics ==== | ||
* virtio-gpu now support venus encapsulation for vulkan (need recent virglrenderer on host and mesa on guest) | |||
==== Hyper-V ==== | ==== Hyper-V ==== | ||
Line 133: | Line 190: | ||
==== 9pfs ==== | ==== 9pfs ==== | ||
* [https://qemu-project.gitlab.io/qemu/about/removed-features.html#fsdev-proxy-and-virtfs-proxy-since-9-2 "proxy" filesystem backend driver has been removed] (commit [https://github.com/qemu/qemu/commit/ed76671888676792493320db53ed773a108cbd45 ed7667188867]), use "local" filesystem backend driver instead. | |||
* Fix potential crash on 'Treaddir' request (commit [https://github.com/qemu/qemu/commit/042b4ebfd2298ae01553844124f27d651cdb1071 042b4ebfd229]). | |||
* Fix open-unlink-fstat idiom on Linux guests (commit [https://github.com/qemu/qemu/commit/c81e7219e0736f80bfd3553676a19e2992cff41d c81e7219e073]). | |||
==== virtiofs ==== | ==== virtiofs ==== | ||
Line 141: | Line 201: | ||
=== Character devices === | === Character devices === | ||
* socket: introduce 'reconnect-ms' and deprecate 'reconnect' | |||
* pty: add "path" option, create a symbolic to the given path that points to the allocated PTY | |||
=== Crypto subsystem === | === Crypto subsystem === | ||
Line 149: | Line 211: | ||
* Error reporting has been improved for unsupported cipher modes | * Error reporting has been improved for unsupported cipher modes | ||
* Memory leak fixed when dealing with unsupported cipher modes | * Memory leak fixed when dealing with unsupported cipher modes | ||
* The PBKDF2 feature in LUKS encryption now supports the SM3 hash | |||
=== Authorization subsystem === | === Authorization subsystem === | ||
=== GUI === | === GUI === | ||
* allocate shareable display memory on Unix | |||
* -display dbus now provides a Unix.Map interface, to share the display memory with the client | |||
* fix -display dbus discarding cursor updates | |||
* Fix handling of SASL authentication for VNC servers running on UNIX sockets | |||
* Terminate the VNC connection immediately if no SASL authentication mechanisms are available | |||
=== GDBStub === | === GDBStub === | ||
* fixed a bug that broke aarch64_be-linux-user | |||
=== TCG Plugins === | === TCG Plugins === | ||
Line 166: | Line 235: | ||
* New memory API for reading vaddr | * New memory API for reading vaddr | ||
* Added basic block vector plugin | * Added basic block vector plugin | ||
* fixed a race condition which can hit uninstalling plugins | |||
* the exported plugins symbol table is now autogenerated | |||
=== Host support === | === Host support === | ||
Line 175: | Line 246: | ||
* Added QATZIP support for multifd compressors. | * Added QATZIP support for multifd compressors. | ||
* Fixed one multifd race condition crash (against received bitmap). | * Fixed one multifd race condition crash (against received bitmap). | ||
* Non-deterministic EADDRINUSE problems initiating migration connections on OpenBSD have been fixed | |||
* Auto converge allows more frequent dirty sync on large hosts (by default each 5 seconds) | |||
=== Monitor === | === Monitor === | ||
Line 185: | Line 258: | ||
=== Block device backends and tools === | === Block device backends and tools === | ||
* '''qemu-nbd''' no longer emits diagnostics about clients that are merely doing a port probe to test if the NBD server is live. | |||
=== Tracing === | === Tracing === | ||
Line 193: | Line 267: | ||
== User-mode emulation == | == User-mode emulation == | ||
=== signals === | |||
The mapping between guest and host real-time signals may be configured with the -t command-line option or QEMU_RTSIG_MAP environment variable. Whatever the mapping, 4 host real-time signals are reserved: two by glibc and two by qemu. By default the first 4 host real-time signals are reserved, 28 guest real-time signals are mapped to the last 28 host real-time signals, and the final 4 guest real-time signals are EINVAL. | |||
=== runtime === | === runtime === | ||
Line 201: | Line 279: | ||
=== arm/arm64/aarch64 === | === arm/arm64/aarch64 === | ||
* aarch64_be-linux-user now has a test case | |||
=== LoongArch === | === LoongArch === | ||
Line 207: | Line 286: | ||
=== s390 === | === s390 === | ||
=== x86 === | === x86 === | ||
Line 217: | Line 295: | ||
=== RISC-V === | === RISC-V === | ||
* Supoort the RVV-1.0 extension to support vector operations on the host. | |||
== Guest agent == | == Guest agent == | ||
* Fix a SIGSEGV in ga_run_command() helper (Linux) | |||
== Build Information == | == Build Information == | ||
=== | === Process === | ||
* Added clarifying language about "commonly known identity" for code submissions to the documentation | |||
=== Rust usage === | |||
Support for device models written in the [https://www.rust-lang.org/ Rust programming language] has been added. It is considered experimental and not stable, and it is '''not recommended''' to be used for anything other than development. It is disabled by default and can be enabled by passing the flag <code>--enable-rust</code> to the <code>configure</code> script. | |||
Future version of QEMU will require a Rust compiler and the <tt>bindgen</tt> tool to be installed. Right now the requirement is to have <tt>rustc</tt> of at least version '''1.63.0''' and <tt>bindgen</tt> of at least version '''0.60.0'''. Compiling QEMU in distros with older version will require installing newer versions of the compiler (via <tt>rustup</tt>) and <tt>bindgen</tt> tool (via <tt>cargo install</tt>). | |||
As an exception to QEMU's supported platform policy, it is not supported to build QEMU with Rust on Debian bullseye. However, future adjustments to the minimum supported version of Rust and bindgen will be made according to the supported platform policy. | |||
Note that bindgen 0.71.0 does not work ([https://github.com/rust-lang/rust-bindgen/issues/3039 issue on GitHub]). | |||
=== | === Dependencies === | ||
* Building QEMU now requires Meson version 1.5.0 or newer, in order to have recent-enough support for Rust. QEMU includes a copy of Meson that will be used if the host has an older version installed. | |||
* The new nitro-enclave machine type for x86 requires a new dependency, libcbor, in addition to gnutls. | |||
* The python 'pycotap' module is required, to support the new functional testing framework that is gradually replacing use of avocado. This module is shipped in the qemu tarball to be used on systems which don't have this module installed. | |||
=== | === Testing and CI === | ||
* Updated i686 and mipsel images to bookworm | * Updated i686 and mipsel images to bookworm | ||
* The gitlab-runner ansible script was updated | |||
* very basic testing was added for aarch64_be-linux-user | |||
* big re-factor of console logging for functional tests to handle detecting login prompts with extra newlines | |||
** we have dropped some of the more hacky sleep() statements in the functional tests as result | |||
=== Host support === | |||
* TCG Plugin support is now disabled by default on 32-bit hosts and with TCI | |||
* 32-bit little endian MIPS hosts are now deprecated. 64-bit little endian MIPS remains supported. | |||
=== Windows === | === Windows === | ||
== Known issues == | == Known issues == | ||
* See https://gitlab.com/qemu-project/qemu/-/milestones/14 | * See https://gitlab.com/qemu-project/qemu/-/milestones/14 |
Latest revision as of 12:26, 9 December 2024
Release schedule: Planning/9.2.
System emulation
Removed features and incompatible changes
- The -rotate and -portrait options were only useful with PXA2xx machines, which have all now been removed. These command line options have therefore also been removed.
- The "proxy" backend for 9pfs, and the "virtfs-proxy-helper" program, have been removed. Use the "local" backend driver or virtio-fs instead.
- The "loaded" property from 'secret' and 'tlscreds' object types has been removed. It had no functional purpose and any use should be removed with no replacement.
Consult the 'Removed features' page for details of suggested replacement functionality.
New deprecated options and features
- query-migrationthreads command (deprecated with no replacement).
- gluster backend for block devices
- "reconnect" option for character and network devices (replaced by "reconnect-ms")
- "zero-blocks" migration capability (only used by block migration, which was removed in 9.1)
Consult the "Deprecated Features" chapter of the QEMU System Emulation User's Guide for further details of the deprecations and their suggested replacements.
68k
Alpha
Arm
- New CPU architectural features emulated:
- FEAT_EBF16
- FEAT_CMOW
- Changes to existing board models:
- sbsa-ref now has an SMMU capable of two-stage translation
- the virt board now has an SMMU capable of two-stage translation
- xilinx-zynq-a9 now enables the Security Extensions on the CPU
- KVM-based VMs can now support MTE (if the host CPU has MTE support)
- gdbstub
- Now support MTE in system mode (under TCG emulation)
- The hvf accelerator now supports creating VMs with larger than 36 bit address space (and thus 64GB or more of RAM), when the host is macos 15 or newer and the host CPU supports it
- Some older machine types which were deprecated in the 9.0 release have now been removed: akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex, z2
- when QEMU is built with the experimental Rust feature, an alternative PL011 implementation in Rust is selected by default. It is not migrateable and not recommended for actual use.
AVR
CRIS
The CRIS target has been removed without replacement (The CRIS architecture was pulled from Linux in 4.17 and the compiler was no longer packaged in any distro making it hard to test this target).
Hexagon
HPPA
- SeaBIOS-hppa v17 firmware with various fixes and enhancements
- Fix saving and restoring PSW V-Bit (division step) accross interrupts
- Fix linux-user emulation issues on 64-bit CPU
LoongArch
Microblaze
- debian-microblaze-cross has been patched to fix atomic generation
MIPS
- Fix for booting the jazz machine with the -nic ...,model=dp83932 option
Nios2
OpenRISC
PowerPC
Renesas RX
Renesas SH (sh4)
- The unmaintained "shix" machine has been removed
RISC-V
ISA and Extensions
- Add a property to set vl to ceil(AVL/2)
- Add 'fcsr' register to QEMU log as a part of F extension
- Add preliminary textra trigger CSR functions
- Add Svvptc extension support
- Fix masking of rv32 physical address
- Support for control flow integrity extensions
- Support for the IOMMU with the virt machine
- Improve the performance of vector unit-stride/whole register ld/st instructions
Machines
- Enable Bit Manip for OpenTitan Ibex CPU
- Fix the group bit setting of AIA with KVM
- Expose RV32 cpu to RV64 QEMU
- Avoid dropping charecters with HTIF
- Apply FIFO backpressure to guests using SiFive UART
Fixes and Misc
- Consider MISA bit choice in implied rule
- Fix the za64rs priv spec requirements
- Stop timer with infinite timecmp
- Fix riscv64 build on musl libc
- RISC-V bsd-user support
- Fix linking problem with semihosting disabled
- Fix IMSIC interrupt state updates
- Fix an access to VXSAT
- Don't clear PLIC pending bits on IRQ lowering
- Make PLIC zeroth priority register read-only
- Set vtype.vill on CPU reset
- Check and update APLIC pending when write sourcecfg
- set 'aia_mode' to default in error path
- clarify how 'riscv-aia' default works
- Update kvm exts to Linux v6.11
s390x
- The s390-ccw guest firmware now supports booting from other devices in case the previous ones fail
SPARC
- Implement a single entry floating-point exception queue for sparc v7/v8. This fixes a hang on Solaris 7, which assumes the queue exists and is non-empty on entry to the exception handler.
Tricore
x86
- New machine type "nitro-enclave" can emulate an AWS Nitro Enclave environment and can boot from an EIF (Enclave Image Format) file.
KVM
- Support for enabling AVX10 and specifying the desired version of AVX10, via the avx10, avx10-128, avx10-256, avx10-512 and avx10-version properties.
Xtensa
Device emulation and assignment
ACPI / SMBIOS
Audio
Block devices
Graphics
- virtio-gpu now support venus encapsulation for vulkan (need recent virglrenderer on host and mesa on guest)
Hyper-V
I2C
Input devices
IPMI
Multi-process QEMU
Network devices
NVDIMM
NVMe
PCI/PCIe
SCSI
SD card
SMBIOS
TPM
UFS
USB
VFIO
virtio
- virtio-mem now supports suspend/resume on x86-64.
vDPA
Xen
fw_cfg
9pfs
- "proxy" filesystem backend driver has been removed (commit ed7667188867), use "local" filesystem backend driver instead.
- Fix potential crash on 'Treaddir' request (commit 042b4ebfd229).
- Fix open-unlink-fstat idiom on Linux guests (commit c81e7219e073).
virtiofs
Semihosting
Audio
Character devices
- socket: introduce 'reconnect-ms' and deprecate 'reconnect'
- pty: add "path" option, create a symbolic to the given path that points to the allocated PTY
Crypto subsystem
- The glib crypto backend now supports the SHA-384 hash
- A Linux bug that would cause the PBKDF code that estimates iterations to sometimes hang has been worked around by running in a new throwaway thread
- IOtests expected output has been fixed for recent gnutls changes
- Error reporting has been improved for unsupported cipher modes
- Memory leak fixed when dealing with unsupported cipher modes
- The PBKDF2 feature in LUKS encryption now supports the SM3 hash
Authorization subsystem
GUI
- allocate shareable display memory on Unix
- -display dbus now provides a Unix.Map interface, to share the display memory with the client
- fix -display dbus discarding cursor updates
- Fix handling of SASL authentication for VNC servers running on UNIX sockets
- Terminate the VNC connection immediately if no SASL authentication mechanisms are available
GDBStub
- fixed a bug that broke aarch64_be-linux-user
TCG Plugins
- Deprecated for TCI backend
- Deprecated for 32 bit hosts
- Extended the memory API to provide the value used
- Fixed a timer deadlock if time doesn't change
- Fixed a bug in IPS plugin to avoid not changing time
- Added cflow plugin
- New memory API for reading vaddr
- Added basic block vector plugin
- fixed a race condition which can hit uninstalling plugins
- the exported plugins symbol table is now autogenerated
Host support
Memory backends
Migration
- Added QATZIP support for multifd compressors.
- Fixed one multifd race condition crash (against received bitmap).
- Non-deterministic EADDRINUSE problems initiating migration connections on OpenBSD have been fixed
- Auto converge allows more frequent dirty sync on large hosts (by default each 5 seconds)
Monitor
QMP
HMP
Network
Block device backends and tools
- qemu-nbd no longer emits diagnostics about clients that are merely doing a port probe to test if the NBD server is live.
Tracing
Semihosting
Miscellaneous
User-mode emulation
signals
The mapping between guest and host real-time signals may be configured with the -t command-line option or QEMU_RTSIG_MAP environment variable. Whatever the mapping, 4 host real-time signals are reserved: two by glibc and two by qemu. By default the first 4 host real-time signals are reserved, 28 guest real-time signals are mapped to the last 28 host real-time signals, and the final 4 guest real-time signals are EINVAL.
runtime
binfmt_misc
alpha
arm/arm64/aarch64
- aarch64_be-linux-user now has a test case
LoongArch
HPPA
s390
x86
TCG
LoongArch
Record/Replay
RISC-V
- Supoort the RVV-1.0 extension to support vector operations on the host.
Guest agent
- Fix a SIGSEGV in ga_run_command() helper (Linux)
Build Information
Process
- Added clarifying language about "commonly known identity" for code submissions to the documentation
Rust usage
Support for device models written in the Rust programming language has been added. It is considered experimental and not stable, and it is not recommended to be used for anything other than development. It is disabled by default and can be enabled by passing the flag --enable-rust
to the configure
script.
Future version of QEMU will require a Rust compiler and the bindgen tool to be installed. Right now the requirement is to have rustc of at least version 1.63.0 and bindgen of at least version 0.60.0. Compiling QEMU in distros with older version will require installing newer versions of the compiler (via rustup) and bindgen tool (via cargo install).
As an exception to QEMU's supported platform policy, it is not supported to build QEMU with Rust on Debian bullseye. However, future adjustments to the minimum supported version of Rust and bindgen will be made according to the supported platform policy.
Note that bindgen 0.71.0 does not work (issue on GitHub).
Dependencies
- Building QEMU now requires Meson version 1.5.0 or newer, in order to have recent-enough support for Rust. QEMU includes a copy of Meson that will be used if the host has an older version installed.
- The new nitro-enclave machine type for x86 requires a new dependency, libcbor, in addition to gnutls.
- The python 'pycotap' module is required, to support the new functional testing framework that is gradually replacing use of avocado. This module is shipped in the qemu tarball to be used on systems which don't have this module installed.
Testing and CI
- Updated i686 and mipsel images to bookworm
- The gitlab-runner ansible script was updated
- very basic testing was added for aarch64_be-linux-user
- big re-factor of console logging for functional tests to handle detecting login prompts with extra newlines
- we have dropped some of the more hacky sleep() statements in the functional tests as result
Host support
- TCG Plugin support is now disabled by default on 32-bit hosts and with TCI
- 32-bit little endian MIPS hosts are now deprecated. 64-bit little endian MIPS remains supported.