ChangeLog/9.1: Difference between revisions
No edit summary |
Kostyanf14 (talk | contribs) No edit summary |
||
(34 intermediate revisions by 11 users not shown) | |||
Line 33: | Line 33: | ||
** FEAT_Spec_FPACC | ** FEAT_Spec_FPACC | ||
** FEAT_WFxT | ** FEAT_WFxT | ||
** FEAT_Debugv8p8 | |||
* The 'max' CPU and any new CPU types will default to a 1GHz generic timer frequency rather than the old 62.5MHz (this is architecturally required from ARMv8.6 onwards) | * The 'max' CPU and any new CPU types will default to a 1GHz generic timer frequency rather than the old 62.5MHz (this is architecturally required from ARMv8.6 onwards) | ||
* The emulated GICv3 also now has NMI support | * The emulated GICv3 also now has NMI support | ||
* The emulated SMMUv3 now supports nested (two-stage) page tables | |||
* the linux-user gdbstub now understands MTE tags | |||
* Changes to existing board models: | * Changes to existing board models: | ||
Line 41: | Line 44: | ||
** xilinx_zynq: The cache controller is now present | ** xilinx_zynq: The cache controller is now present | ||
** xilinx_zynq: Now supports up to two CPU cores | ** xilinx_zynq: Now supports up to two CPU cores | ||
** xilinx_zynq: New machine property boot-mode to specify the boot mode | |||
** sbsa-ref: The default CPU type is now Neoverse-N2 | ** sbsa-ref: The default CPU type is now Neoverse-N2 | ||
** sbsa-ref: The default generic timer frequency is now 1GHz. (If guest time now seems to be passing too quickly, upgrade your guest TF-A firmware image: older versions had a bug where they did not honour the frequency reported to them by the CPU.) | |||
** virt: In the secure=off mode, you can now create a second non-secure UART by passing a second -serial argument on the command line. | |||
=== AVR === | === AVR === | ||
Line 51: | Line 57: | ||
=== LoongArch === | === LoongArch === | ||
* Support boot eif kernel directly | |||
* Add extioi virt extension to support 256 vcpu | |||
* Support KVM Guest Debug | |||
* Gdb support lsx/lasx registers display | |||
* Add TPM support by default | |||
=== Microblaze === | === Microblaze === | ||
Line 74: | Line 82: | ||
==== ISA and Extensions ==== | ==== ISA and Extensions ==== | ||
* Support RISC-V privilege 1.13 spec | |||
* Implement SBI debug console (DBCN) calls for KVM | * Implement SBI debug console (DBCN) calls for KVM | ||
* Set tval in breakpoints | * Set tval in breakpoints | ||
Line 80: | Line 89: | ||
* Add th.sxstatus CSR emulation | * Add th.sxstatus CSR emulation | ||
* Remove experimental prefix from "B" extension | * Remove experimental prefix from "B" extension | ||
* zvbb implies zvkb | |||
* Support the zimop, zcmop, zama16b and zabha extensions | |||
* Add decode support for Zawrs extension | |||
* Add smcntrpmf extension support | |||
==== Machines ==== | ==== Machines ==== | ||
* Support 64-bit addresses for initrd | * Support 64-bit addresses for initrd | ||
* Virt machine aplic/imsic device tree fixes | |||
* QEMU support for KVM Guest Debug on RISC-V | |||
* Add support for RISC-V ACPI tests | |||
* Update the KVM regs to Linux 6.10-rc5 | |||
* Re-insert and deprecate 'riscv,delegate' in virt machine device tree | |||
* roms/opensbi: Update to v1.5.1 | |||
==== Fixes and Misc ==== | ==== Fixes and Misc ==== | ||
Line 99: | Line 118: | ||
* Fix the hart bit setting of AIA | * Fix the hart bit setting of AIA | ||
* Decode all of the pmpcfg and pmpaddr CSRs | * Decode all of the pmpcfg and pmpaddr CSRs | ||
* Extend virtual irq csrs masks to be 64 bit wide | |||
* Validate the mode when setting vstvec CSR | |||
* Raise an exception when CSRRS/CSRRC writes a read-only CSR | |||
=== s390x === | === s390x === | ||
Line 116: | Line 138: | ||
=== x86 === | === x86 === | ||
* Several fixes to the emulation of the HPET device. | |||
* New CPU models Icelake-Server-v7, SapphireRapids-v3 and SierraForest. | * New CPU models Icelake-Server-v7, SapphireRapids-v3 and SierraForest. | ||
* New CPU features "lam" and "rfds". | * New CPU features "lam" and "rfds". | ||
* The argument to the new command line option "-smp modules" is now encoded in CPUID. | * The argument to the new command line option "-smp modules" is now encoded in CPUID. | ||
* Support for SEV-SNP using the "-object sev-snp-guest" command line option. | * Support for SEV-SNP using the "-object sev-snp-guest" command line option. | ||
* Fixed a bug in TCG plugin handling of fxsave and related instructions | |||
==== TCG ==== | ==== TCG ==== | ||
* Several fixes to the emulation of IRET. | |||
* Fixes to the handling of EFLAGS.TF and EFLAGS.RF for various instructions (VMRUN, HLT, PAUSE) | |||
* ICEBP is implemented | |||
* The GD bit of DR7 is implemented | |||
=== Xtensa === | === Xtensa === | ||
Line 172: | Line 199: | ||
==== virtio ==== | ==== virtio ==== | ||
* Support for VIRTIO_F_NOTIFICATION_DATA. | |||
** Requires ioeventfd disabled, e.g. | |||
-device virtio-scsi-pci,...,ioeventfd=off,notification_data=on | |||
==== vDPA ==== | ==== vDPA ==== | ||
Line 184: | Line 214: | ||
==== Semihosting ==== | ==== Semihosting ==== | ||
* Semihosting is only included in the build when TCG is enabled | |||
=== Audio === | === Audio === | ||
Line 198: | Line 229: | ||
=== GDBStub === | === GDBStub === | ||
* architectures can now extend the stub's command tables | |||
=== TCG Plugins === | === TCG Plugins === | ||
* added STORE_U64 and conditional callback ops | * added STORE_U64 and conditional callback ops | ||
* updated examples to use new ops | * updated examples to use new ops | ||
* plugins can now request to control guest time | |||
* new IPS plugin example | |||
* cleaned up bits of the lockstep plugin | |||
* new stoptrigger plugin that will exit with a status at given conditions | |||
* test plugins can now be found in tests/tcg/plugins (mirroring contrib/plugins) | |||
* the documentation of plugins is now in the [https://www.qemu.org/docs/master/about/emulation.html#tcg-plugins emulation section] | |||
* fixed a race condition in scoreboard resizing | |||
=== Host support === | === Host support === | ||
Line 214: | Line 253: | ||
** multifd-compression qpl :: Uses Intel's Query Processing Library (QPL) to enable compression offload to the In-Memory Analytics Accelerator(IAA); | ** multifd-compression qpl :: Uses Intel's Query Processing Library (QPL) to enable compression offload to the In-Memory Analytics Accelerator(IAA); | ||
** multifd-compression uadk :: Enables the usage of User Space Accelerator Development Kit (UADK) accelerator framework; | ** multifd-compression uadk :: Enables the usage of User Space Accelerator Development Kit (UADK) accelerator framework; | ||
* New 'direct-io' migration parameter to support O_DIRECT in multifd migrations when targeting a file. | |||
* New migration state 'postcopy-recover-setup' that marks the start of a postcopy recovery attempt. This can be used to disambiguate whether the 'postcopy-failed' state refers to the original postcopy or its recovery. | |||
=== Monitor === | === Monitor === | ||
Line 225: | Line 268: | ||
=== Block device backends and tools === | === Block device backends and tools === | ||
* The QEMU 8.2 release introduced a regression in the ability to use TLS to encrypt the NBD connection used for storage migration, particularly visible when iothreads are in use. This regression has been fixed and the testsuite enhanced to ensure it does not regress again. | * The QEMU 8.2 release introduced a regression in the ability to use TLS to encrypt the NBD connection used for storage migration, particularly visible when iothreads are in use. This regression has been fixed and the testsuite enhanced to ensure it does not regress again. | ||
* CVE-2024-7409 has been patched, which was a long-standing vulnerability in using qemu as a transient NBD server, where a malicious client could crash qemu at the time of <code>nbd-server-stop</code> even if the client did not know the TLS secrets to complete a connection to the server. | |||
=== Tracing === | === Tracing === | ||
Line 241: | Line 285: | ||
=== arm/arm64/aarch64 === | === arm/arm64/aarch64 === | ||
* bsd-user now supports both 32-bit and 64-bit arm emulation. | |||
=== LoongArch === | === LoongArch === | ||
Line 251: | Line 296: | ||
== TCG == | == TCG == | ||
=== LoongArch === | |||
* Use LASX instructions to support code generation of 256-bit vectors. | |||
=== Record/Replay=== | === Record/Replay=== | ||
* Handle muxed input on relay cleanly | |||
* fix some regressions in replay/reverse debugging | |||
=== RISC-V === | === RISC-V === | ||
== Guest agent == | == Guest agent == | ||
* Add guest-network-get-route command (Linux only) | |||
* Document allow-rpcs in the config file section | |||
* Allow configuration file path via the cli | |||
* Centralize logic for disabling/enabling commands | |||
** Some error messages changed | |||
** Allow to use allow-rpcs and block-rpcs option in parallel | |||
* Add guest-ssh-* commands for Windows | |||
== Build Information == | == Build Information == | ||
Line 262: | Line 322: | ||
=== Build Dependencies === | === Build Dependencies === | ||
* When using Python 3.10 or older, building QEMU requires the tomli package to be installed on the host. (The dependency was introduced in QEMU 8.2 but until now QEMU included a vendored copy of the library). | * When using Python 3.10 or older, building QEMU requires the tomli package to be installed on the host. (The dependency was introduced in QEMU 8.2 but until now QEMU included a vendored copy of the library). | ||
* Building QEMU now requires Meson 1.1 or newer. QEMU however includes a copy of Meson, which is used if a suitable version is not available on the host. | |||
=== Configuration === | === Configuration === | ||
Line 267: | Line 328: | ||
=== Host support === | === Host support === | ||
* When built for the x86 architecture (either 32-bit or 64-bit) QEMU now requires x86-64-v2 processors | * When built for the x86 architecture (either 32-bit or 64-bit) QEMU now can specify the desired architecture baseline. For example, configuring with --x86-version=2 will build a version of QEMU that requires x86-64-v2 processors (Intel Nehalem, or Sandy Bridge for the Pentium and Celeron lines, Intel Atom Silvermont, and AMD Bulldozer processors). | ||
* libfdt is not anymore a hard requirement when building the i386-softmmu, mips64el-softmmu, ppc-softmmu and x86_64-softmmu targets. Instead, if libfdt is not available, boards that require it will not be included in the emulator. | |||
* The --enable-avx512f option to configure has been removed, since there is no code in QEMU that uses AVX512F instructions. | |||
=== Docker Tweaks === | === Docker Tweaks === | ||
Line 276: | Line 339: | ||
=== Testing and CI === | === Testing and CI === | ||
* The ansible configure scripts for CI machines are now driven by lcitool metadata | * The ansible configure scripts for CI machines are now driven by lcitool metadata | ||
* BSD images were updated for the python uprev | |||
* Testing now dumps a packages.txt in the artefacts to help catch package changes | |||
* checkpatch will prompt MAINTAINER actions when touching imported headers | |||
== Known issues == | == Known issues == | ||
* See https://gitlab.com/qemu-project/qemu/-/milestones/13 | * See https://gitlab.com/qemu-project/qemu/-/milestones/13 | ||
* The x86 decoder was mostly rewritten and is still a bit slower than in QEMU 9.0 and earlier. Some optimizations are planned for future versions of QEMU. |
Latest revision as of 07:55, 3 September 2024
Release schedule: Planning/9.1.
System emulation
Removed features and incompatible changes
Consult the 'Removed features' page for details of suggested replacement functionality.
- The Nios II target has been removed.
- The "scsi" property of virtio-blk devices has been removed. SCSI command passthrough had never been present on virtio-blk 1.0 devices, and is now removed from legacy devices as well. Use virtio-scsi instead.
- The pvrdma device and rdmacm-mux helper has been removed.
- The "block migration" options to the migrate commands ("blk" and "inc" for QMP, "-b"/"-i" for the human monitor) have been removed; guest management software such as libvirt is able to perform block migration more efficiently using block jobs and NBD devices.
- The "compress" migration capability has been removed; multifd migration is able to do compression and can be used instead.
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 the migration URI "fd" together with files has been deprecated. Use it only for sockets, and use "file:" to save a snapshot to a file.
- The "ref405ep" machine and PPC405 CPUs have been deprecated. Firmware images are not available and Linux is dropping support this year as well.
- The PCOMMIT instruction is not decoded by TCG anymore and the corresponding "-cpu pcommit=..." flag is deprecated.
68k
Alpha
Arm
- New CPU architectural features emulated:
- FEAT_NMI
- FEAT_CSV2_3
- FEAT_ETS2
- FEAT_Spec_FPACC
- FEAT_WFxT
- FEAT_Debugv8p8
- The 'max' CPU and any new CPU types will default to a 1GHz generic timer frequency rather than the old 62.5MHz (this is architecturally required from ARMv8.6 onwards)
- The emulated GICv3 also now has NMI support
- The emulated SMMUv3 now supports nested (two-stage) page tables
- the linux-user gdbstub now understands MTE tags
- Changes to existing board models:
- Add DM163 display to B-L475E-IOT01A board
- xilinx_zynq: The cache controller is now present
- xilinx_zynq: Now supports up to two CPU cores
- xilinx_zynq: New machine property boot-mode to specify the boot mode
- sbsa-ref: The default CPU type is now Neoverse-N2
- sbsa-ref: The default generic timer frequency is now 1GHz. (If guest time now seems to be passing too quickly, upgrade your guest TF-A firmware image: older versions had a bug where they did not honour the frequency reported to them by the CPU.)
- virt: In the secure=off mode, you can now create a second non-secure UART by passing a second -serial argument on the command line.
AVR
Hexagon
HPPA
LoongArch
- Support boot eif kernel directly
- Add extioi virt extension to support 256 vcpu
- Support KVM Guest Debug
- Gdb support lsx/lasx registers display
- Add TPM support by default
Microblaze
MIPS
Nios2
OpenRISC
PowerPC
Renesas RX
Renesas SH
ISA and Extensions
RISC-V
ISA and Extensions
- Support RISC-V privilege 1.13 spec
- Implement SBI debug console (DBCN) calls for KVM
- Set tval in breakpoints
- Add support for Zve32x extension
- Add support for Zve64x extension
- Add th.sxstatus CSR emulation
- Remove experimental prefix from "B" extension
- zvbb implies zvkb
- Support the zimop, zcmop, zama16b and zabha extensions
- Add decode support for Zawrs extension
- Add smcntrpmf extension support
Machines
- Support 64-bit addresses for initrd
- Virt machine aplic/imsic device tree fixes
- QEMU support for KVM Guest Debug on RISC-V
- Add support for RISC-V ACPI tests
- Update the KVM regs to Linux 6.10-rc5
- Re-insert and deprecate 'riscv,delegate' in virt machine device tree
- roms/opensbi: Update to v1.5.1
Fixes and Misc
- Fix exposure of Zkr
- Raise exceptions on wrs.nto
- Tolerate KVM disable ext errors
- Relax vector register check in RISCV gdbstub
- Fix the element agnostic Vector function problem
- Fix Zvkb extension config
- Fix Zvfhmin checking for vfwcvt.f.f.v and vfncvt.f.f.w instructions
- Check single width operator for vector fp widen instructions
- Check single width operator for vfncvt.rod.f.f.w
- Prioritize pmp errors in raise_mmu_exception()
- Do not set mtval2 for non guest-page faults
- Fixup CBO extension register calculation
- Fix the hart bit setting of AIA
- Decode all of the pmpcfg and pmpaddr CSRs
- Extend virtual irq csrs masks to be 64 bit wide
- Validate the mode when setting vstvec CSR
- Raise an exception when CSRRS/CSRRC writes a read-only CSR
s390x
SPARC
New architectural features emulated:
- FMAF
- IMA
- VIS3
- VIS4
No new cpu types with these features are added, yet, but one may enable them manually with -cpu <type>,+<feature>
.
Tricore
x86
- Several fixes to the emulation of the HPET device.
- New CPU models Icelake-Server-v7, SapphireRapids-v3 and SierraForest.
- New CPU features "lam" and "rfds".
- The argument to the new command line option "-smp modules" is now encoded in CPUID.
- Support for SEV-SNP using the "-object sev-snp-guest" command line option.
- Fixed a bug in TCG plugin handling of fxsave and related instructions
TCG
- Several fixes to the emulation of IRET.
- Fixes to the handling of EFLAGS.TF and EFLAGS.RF for various instructions (VMRUN, HLT, PAUSE)
- ICEBP is implemented
- The GD bit of DR7 is implemented
Xtensa
Device emulation and assignment
ACPI / SMBIOS
Audio
Block devices
Graphics
Hyper-V
I2C
Input devices
IPMI
Multi-process QEMU
Network devices
NVDIMM
NVMe
PCI/PCIe
SCSI
SD card
SMBIOS
TPM
UFS
- Supports emulation of MCQ behaviour based on UFSHCI v4.0.
- MCQ Parameter Usage:
-device ufs,mcq=true,mcq-maxq=8
USB
VFIO
virtio
- Support for VIRTIO_F_NOTIFICATION_DATA.
- Requires ioeventfd disabled, e.g.
-device virtio-scsi-pci,...,ioeventfd=off,notification_data=on
vDPA
Xen
fw_cfg
9pfs
virtiofs
Semihosting
- Semihosting is only included in the build when TCG is enabled
Audio
Character devices
Crypto subsystem
Authorization subsystem
GUI
- Allow UNIX socket option for VNC websocket
GDBStub
- architectures can now extend the stub's command tables
TCG Plugins
- added STORE_U64 and conditional callback ops
- updated examples to use new ops
- plugins can now request to control guest time
- new IPS plugin example
- cleaned up bits of the lockstep plugin
- new stoptrigger plugin that will exit with a status at given conditions
- test plugins can now be found in tests/tcg/plugins (mirroring contrib/plugins)
- the documentation of plugins is now in the emulation section
- fixed a race condition in scoreboard resizing
Host support
Memory backends
Migration
- New 'exit-on-error' option to migrate-incoming, if set to false causes QEMU to not exit on incoming migration failure, giving the management layer an opportunity to fetch the error through QMP.
- Compression offload support with two new compression modes:
- multifd-compression qpl :: Uses Intel's Query Processing Library (QPL) to enable compression offload to the In-Memory Analytics Accelerator(IAA);
- multifd-compression uadk :: Enables the usage of User Space Accelerator Development Kit (UADK) accelerator framework;
- New 'direct-io' migration parameter to support O_DIRECT in multifd migrations when targeting a file.
- New migration state 'postcopy-recover-setup' that marks the start of a postcopy recovery attempt. This can be used to disambiguate whether the 'postcopy-failed' state refers to the original postcopy or its recovery.
Monitor
QMP
HMP
Network
Block device backends and tools
- The QEMU 8.2 release introduced a regression in the ability to use TLS to encrypt the NBD connection used for storage migration, particularly visible when iothreads are in use. This regression has been fixed and the testsuite enhanced to ensure it does not regress again.
- CVE-2024-7409 has been patched, which was a long-standing vulnerability in using qemu as a transient NBD server, where a malicious client could crash qemu at the time of
nbd-server-stop
even if the client did not know the TLS secrets to complete a connection to the server.
Tracing
Semihosting
Miscellaneous
User-mode emulation
runtime
binfmt_misc
alpha
arm/arm64/aarch64
- bsd-user now supports both 32-bit and 64-bit arm emulation.
LoongArch
HPPA
s390
x86
TCG
LoongArch
- Use LASX instructions to support code generation of 256-bit vectors.
Record/Replay
- Handle muxed input on relay cleanly
- fix some regressions in replay/reverse debugging
RISC-V
Guest agent
- Add guest-network-get-route command (Linux only)
- Document allow-rpcs in the config file section
- Allow configuration file path via the cli
- Centralize logic for disabling/enabling commands
- Some error messages changed
- Allow to use allow-rpcs and block-rpcs option in parallel
- Add guest-ssh-* commands for Windows
Build Information
Build Dependencies
- When using Python 3.10 or older, building QEMU requires the tomli package to be installed on the host. (The dependency was introduced in QEMU 8.2 but until now QEMU included a vendored copy of the library).
- Building QEMU now requires Meson 1.1 or newer. QEMU however includes a copy of Meson, which is used if a suitable version is not available on the host.
Configuration
- When building with the "--without-default-devices" option, boards have to be enabled specifically in the configs/devices/*/*.mak files. In previous versions, most targets (all except ARM) listed enabled all boards even for --without-default-devices builds, and they had to be disabled instead.
Host support
- When built for the x86 architecture (either 32-bit or 64-bit) QEMU now can specify the desired architecture baseline. For example, configuring with --x86-version=2 will build a version of QEMU that requires x86-64-v2 processors (Intel Nehalem, or Sandy Bridge for the Pentium and Celeron lines, Intel Atom Silvermont, and AMD Bulldozer processors).
- libfdt is not anymore a hard requirement when building the i386-softmmu, mips64el-softmmu, ppc-softmmu and x86_64-softmmu targets. Instead, if libfdt is not available, boards that require it will not be included in the emulator.
- The --enable-avx512f option to configure has been removed, since there is no code in QEMU that uses AVX512F instructions.
Docker Tweaks
- Bumped docker images to Fedora 40 and Alpine 319
Windows
Testing and CI
- The ansible configure scripts for CI machines are now driven by lcitool metadata
- BSD images were updated for the python uprev
- Testing now dumps a packages.txt in the artefacts to help catch package changes
- checkpatch will prompt MAINTAINER actions when touching imported headers
Known issues
- See https://gitlab.com/qemu-project/qemu/-/milestones/13
- The x86 decoder was mostly rewritten and is still a bit slower than in QEMU 9.0 and earlier. Some optimizations are planned for future versions of QEMU.