ChangeLog/7.0: Difference between revisions
HelgeDeller (talk | contribs) m (→HPPA) |
(Note about libslirp) |
||
(31 intermediate revisions by 16 users not shown) | |||
Line 9: | Line 9: | ||
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. | ||
Additional note: The QEMU project currently considers to drop the slirp submodule in future releases, i.e. the QEMU tarball won't embed the code for user mode networking in the future anymore, so that an external libslirp installation is required. Most OS distribution already ship a libslirp package nowadays (except for OpenBSD which is already known and hopefully will be fixed soon), but if you are still using another OS distribution that does not provide a libslirp package yet, please send a note to the [[Contribute/MailingLists|qemu-devel mailing list]] and ask your OS vendor to include such a package in the next release. | |||
=== 68k === | === 68k === | ||
Line 21: | Line 23: | ||
* The virt board now supports virtio-mem-pci | * The virt board now supports virtio-mem-pci | ||
* The virt board now supports specifying the guest CPU topology | * The virt board now supports specifying the guest CPU topology | ||
* On the virt board, we now enable PAuth when using KVM and the host CPU supports it | * On the virt board, we now enable PAuth when using KVM or hvf and the host CPU supports it | ||
* xlnx-versal-virt now emulates the PMC SLCR | * xlnx-versal-virt now emulates the PMC SLCR | ||
* xlnx-versal-virt now emulates the OSPI flash memory controller | * xlnx-versal-virt now emulates the OSPI flash memory controller | ||
* xlnx-zynqmp now models the CRF and APU control | |||
* The Arm GICv3 ITS now emulates the previously missing MOVI and MOVALL commands | * The Arm GICv3 ITS now emulates the previously missing MOVI and MOVALL commands | ||
* New board model: mori-bmc | |||
* We now support emulating FEAT_LVA | |||
* We now support emulating FEAT_LPA | |||
* We now support emulating FEAT_LPA2. (Note that this is disabled by default for the 'virt' board's versioned machine types prior to 7.0 (ie 'virt-6.2', 'virt-6.1', etc) because Linux kernels prior to v5.12 have a bug which means they will not boot on a CPU which has LPA2.) | |||
=== AVR === | === AVR === | ||
Line 47: | Line 54: | ||
=== OpenRISC === | === OpenRISC === | ||
==== Machines ==== | |||
* Support up to 4 cores up from 2 on the OpenRISC sim machine | |||
* Support loading an external initrd image on the OpenRISC sim machine | |||
* OpenRISC sim machine now automatically generates a device tree and passes it to the kernel | |||
=== PowerPC === | === PowerPC === | ||
* Updates of PowerNV and pSeries documentation | |||
==== Machines ==== | |||
* Deprecation of taihu machine | |||
* Large rework of PPC405 machine | |||
* General cleanup for Mac machines | |||
* PowerNV PHB3/4 cleanups | |||
* PowerNV XIVE improvements | |||
* Extension of the powernv10 machine with XIVE2 ans PHB5 models | |||
* New SLOF for PPC970 and POWER5+ | |||
* ppc: nested KVM HV for spapr virtual hypervisor | |||
* spapr: nvdimm: Introduce spapr-nvdimm device | |||
==== Extensions/removal==== | |||
* Removal of 401/403 CPUs | |||
* Removal of 601/602 CPUs | |||
* Removal of SoftTLBs support for PPC74x CPUs | |||
* Initial support for PMU | |||
* PMU EBB support | |||
* Rework of powerpc exception handling | |||
* Support for new ISA31 instructions | |||
* Large cleanup of FPU implementation | |||
==== Fixes ==== | |||
* Fixes for ivshmem | |||
* Fixes for POWER5+ pseries | |||
* Fixes for FPU exceptions | |||
* Fixes for exception models in MPCx and 60x CPUs | |||
* Fix for e6500 CPU | |||
* Fixes for the 7448 CPU | |||
* Exception and TLB fixes for the 405 CPU | |||
* 603 CPUs fixes | |||
* Book-E exception fixes | |||
* Clang fixes | |||
* VOF installation | |||
* Radix MMU fixes | |||
=== Renesas RX === | === Renesas RX === | ||
Line 63: | Line 115: | ||
* Mark Hypervisor extension as non experimental | * Mark Hypervisor extension as non experimental | ||
* Enable Hypervisor extension by default | * Enable Hypervisor extension by default | ||
* Support for svnapot, svinval and svpbmt extensions | |||
* Experimental support for 128-bit CPUs | * Experimental support for 128-bit CPUs | ||
* Initial support for XVentanaCondOps custom extension | |||
* stval and mtval support for illegal instructions | * stval and mtval support for illegal instructions | ||
* Support for the UXL field in xstatus | * Support for the UXL field in xstatus | ||
* Add support for zfinx, zdinx and zhinx{min} extensions | |||
==== Machines ==== | ==== Machines ==== | ||
Line 72: | Line 127: | ||
* SiFive PDMA 64-bit support | * SiFive PDMA 64-bit support | ||
* Support 32 cores on the virt machine | * Support 32 cores on the virt machine | ||
* Add AIA support for virt machine | |||
==== Fixes ==== | ==== Fixes ==== | ||
Line 79: | Line 135: | ||
* Correction of OpenTitan PLIC stride length | * Correction of OpenTitan PLIC stride length | ||
* Removal of OpenSBI ELFs | * Removal of OpenSBI ELFs | ||
* Fix trap cause for RV32 HS-mode CSR access from RV64 HS-mode | |||
* Fixup OpenTitan SPI address | |||
=== s390x === | === s390x === | ||
* Support Linux kernel command line length of more than 896 bytes (if the guest kernel supports it, too) | |||
* Emulate the instructions from the "Miscellaneous-Instruction-Extensions Facility 3" (a z15 extension) | |||
* Fixes for various emulated instructions (SLDA, SRDA, SLAG, BRASL, BRCL) | |||
=== SPARC === | === SPARC === | ||
Line 87: | Line 149: | ||
=== x86 === | === x86 === | ||
* Support for Intel AMX. | |||
==== KVM ==== | ==== KVM ==== | ||
Line 98: | Line 160: | ||
=== Device emulation and assignment === | === Device emulation and assignment === | ||
==== ACPI ==== | ==== ACPI / SMBIOS ==== | ||
* advertise i8042 in FADT if it is present (5334bf5703) | |||
* new ''acpi-erst'' device, for logging guest evens using standard ACPI ERST interface (0ef0506e559) | |||
* added support for new ''processor-id'' SMBIOS option (cb5fb04fe6) | |||
* fixed SMBIOS memory handles overlap for large VMs (8Tb and more) (a379d4550c4) | |||
* added 'SMBIOS 3.0' support in SeaBIOS, in QEMU it's opt-in feature, use ''-machine smbios-ep=3-0'' option to enable it | |||
* fixed regression in ACPI table headers where OEM ID and OEM Table ID weren't padded correctly (748c030f360) | |||
* fixed QEMU crash when started with user provided SLIC table (8cdb99af45) | |||
* arm/virt: add VIOT table to describe virtio-iommu (cf1a5cc935c) | |||
* x86: 'pc' machine type: fixed acpi-index not being migrated which might result in NIC name change if migration happens when guest is asking QEMU for it. Migration should work properly since 7.0 and newer machine types, for older machine types migration of acpi-index is broken and can't be fixed for compatibility reasons. | |||
==== Audio ==== | ==== Audio ==== | ||
Line 123: | Line 194: | ||
==== PCI/PCIe ==== | ==== PCI/PCIe ==== | ||
* Q35: fix PCIe device becoming disabled after migration when ACPI based PCI hotplug is used (6b0969f1ec) | |||
* initial bits of SR/IOV support (250346169) | |||
* arm/virt: fixed PXB interrupt routing (e609301b45) | |||
* arm/virt: support for virtio-mem-pci (b1b87327a9) | |||
==== SCSI ==== | ==== SCSI ==== | ||
Line 144: | Line 219: | ||
==== 9pfs ==== | ==== 9pfs ==== | ||
* [https://gitlab.com/qemu-project/qemu/-/commit/e64e27d5cb103b7764f1a05b6eda7e7fedd517c5 Fixed 9p server crash] ([https://gitlab.com/qemu-project/qemu/-/issues/841 issue #841]) that happened on some host systems due to incorrect (system dependant) handling of struct dirent size. | |||
* [https://gitlab.com/qemu-project/qemu/-/commit/f45cc81911adc7726e8a2801986b6998b91b816e Added support for macOS hosts]. | |||
==== virtiofs ==== | ==== virtiofs ==== | ||
* Fix for CVE-2022-0358 - behaviour with supplementary groups and SGID directories | * Fix for CVE-2022-0358 - behaviour with supplementary groups and SGID directories | ||
* Improved security label support | |||
* The virtiofsd in qemu is now starting to be deprecated; please start using and contributing to [https://gitlab.com/virtio-fs/virtiofsd Rust virtiofsd] | |||
==== Semihosting ==== | ==== Semihosting ==== | ||
* We now generate sane numbers for SYS_HEAPINFO under system emulation | |||
=== Audio === | === Audio === | ||
Line 159: | Line 240: | ||
=== GUI === | === GUI === | ||
* a new [https://www.qemu.org/docs/master/interop/dbus-display.html "-display dbus"] option to export the display for external processes. A [https://gitlab.com/marcandre.lureau/qemu-display/ gtk4-rs based widget] is in the works (for future Boxes, virt-viewer etc). Potential other users include remote desktop protocols. | |||
=== GDBStub === | === GDBStub === | ||
=== TCG Plugins === | === TCG Plugins === | ||
* new coverage plugin in contrib which support drcov format traces | |||
=== Host support === | === Host support === | ||
Line 179: | Line 262: | ||
=== Block device backends and tools === | === Block device backends and tools === | ||
* Fleecing backup has been made more flexible: Fleecing backup means exposing a temporary snapshot of an actively used image, and having the “copy-before-write” (CBW) filter (or historically the “backup” block job) copy data there from areas written by the guest to the active image, before they are overwritten, so that the snapshot keeps representing the point-in-time state of the disk when the snapshot was created. This snapshot can then be read (either by qemu itself using the “backup” or “mirror” block jobs, or by outside users e.g. via an NBD export) to create a backup. As of qemu 7.0, instead of reading the snapshot image directly, it can also be accessed through the new “snapshot-access” block driver, by installing such a node on top of the CBW filter. Doing so has some advantages over accessing the snapshot image directly; for example, the image can then be in any format (not just COW formats like qcow2), because the CBW filter keeps track of its allocation bitmap. Once an area has been backed up, users can send a discard request to mark it as done, so that the CBW filter will not potentially copy it to the snapshot image on a subsequent guest write. Furthermore, the CBW filter now has a “bitmap” parameter that allows limiting its scope as specified by the bitmap at the time the CBW filter node is created. | |||
* A bug in caching block status has been fixed that was causing over-eager treatment of a format layer as all data rather than detecting holes, if an earlier block status query had merely been checking for which portions of the backing chain were allocated. While the bug did not affect guest-visible data, it caused some performance regressions, particularly noticeable and easy to trigger when using 'qemu-nbd --allocation-depth'. | * A bug in caching block status has been fixed that was causing over-eager treatment of a format layer as all data rather than detecting holes, if an earlier block status query had merely been checking for which portions of the backing chain were allocated. While the bug did not affect guest-visible data, it caused some performance regressions, particularly noticeable and easy to trigger when using 'qemu-nbd --allocation-depth'. | ||
* The ''qemu-nbd'' program has gained a new ''--tls-hostname'' parameter to allow TLS validation against a different hostname, such as when setting up TLS through a TCP tunnel, and now supports TLS over Unix sockets. | |||
* The SSH driver supports sha256 fingerprints with pre-blockdev command line configuration syntax. | |||
* The SSH driver will print the actual fingerprint and its type when failing to validate a host key. | |||
=== Tracing === | === Tracing === | ||
=== Miscellaneous === | === Miscellaneous === | ||
* The -sandbox 'spawn' filter, will now correctly block use of the clone syscall for spawnnig processes, while allowing thread creation | |||
* The -sandbox 'spawn' filter, will now entirely block use of the clone3 syscall entirely since there is no way to access its flags parameter from seccomp to distinguish thread vs process creation | |||
* The -sandbox 'spawn' filter, will now block setns, unshare and execveat syscalls since they are not desired. | |||
== User-mode emulation == | == User-mode emulation == | ||
Line 194: | Line 285: | ||
== TCG == | == TCG == | ||
User-mode emulation (linux-user, bsd-user) will enforce guest alignment constraints and raise SIGBUS to the guest program as appropriate. | |||
=== ARM === | |||
Support for for ARMv4 and ARMv5 hosts has been dropped. These older Arm versions do not have support for misaligned memory access; such support was added to ARMv6. Since ARMv5 is quite old, it is presumed that such systems do not have sufficient RAM to even run QEMU, and so practically speaking no systems are impacted. | |||
== Guest agent == | == Guest agent == | ||
Line 208: | Line 305: | ||
* a large number of containers are now updated by lcitool | * a large number of containers are now updated by lcitool | ||
* TESTS and IMAGES environment variables can be used filter again when building against all docker targets | |||
=== VM Based Builds === | === VM Based Builds === | ||
=== Build Dependencies === | === Build Dependencies === | ||
* xfs libraries are not needed anymore for build, since the only ioctl used by qemu which was defined there got local implementation. With this, --enable-xfsctl configure option is also gone. | |||
=== Windows === | === Windows === |
Latest revision as of 07:16, 11 April 2022
System emulation
Incompatible changes
Consult the 'Removed features' page for details of suggested replacement functionality
New deprecated options and features
Consult the "Deprecated Features" chapter of the QEMU System Emulation User's Guide for further details of the deprecations and their suggested replacements.
Additional note: The QEMU project currently considers to drop the slirp submodule in future releases, i.e. the QEMU tarball won't embed the code for user mode networking in the future anymore, so that an external libslirp installation is required. Most OS distribution already ship a libslirp package nowadays (except for OpenBSD which is already known and hopefully will be fixed soon), but if you are still using another OS distribution that does not provide a libslirp package yet, please send a note to the qemu-devel mailing list and ask your OS vendor to include such a package in the next release.
68k
Alpha
Arm
- The virt board has gained a new control knob to disable passing a RNG seed in the DTB (dtb-kaslr-seed)
- The AST2600 SoC now supports a dummy version of the i3c device
- The virt board can now run guests with KVM on hosts with restricted IPA ranges
- The virt board now supports virtio-mem-pci
- The virt board now supports specifying the guest CPU topology
- On the virt board, we now enable PAuth when using KVM or hvf and the host CPU supports it
- xlnx-versal-virt now emulates the PMC SLCR
- xlnx-versal-virt now emulates the OSPI flash memory controller
- xlnx-zynqmp now models the CRF and APU control
- The Arm GICv3 ITS now emulates the previously missing MOVI and MOVALL commands
- New board model: mori-bmc
- We now support emulating FEAT_LVA
- We now support emulating FEAT_LPA
- We now support emulating FEAT_LPA2. (Note that this is disabled by default for the 'virt' board's versioned machine types prior to 7.0 (ie 'virt-6.2', 'virt-6.1', etc) because Linux kernels prior to v5.12 have a bug which means they will not boot on a CPU which has LPA2.)
AVR
Hexagon
HPPA
- Support up to 16 virtual CPUs
- Improved artist graphics driver for HP-UX VDE, HP-UX CDE and Linux framebuffer
- Mouse cursor focus and positioning now works much better under HP-UX X11
- Emulated TOC button can be triggered with "nmi" in the qemu monitor
- Added support for Qemu SCSI boot order option
- Possibility to change system HOSTID for HP-UX and Linux
- Added firmware 16x32 pixel bitmap font for use on HDPI screens
- Ability to choose serial or graphical console as default firmware console
Microblaze
MIPS
Nios2
OpenRISC
Machines
- Support up to 4 cores up from 2 on the OpenRISC sim machine
- Support loading an external initrd image on the OpenRISC sim machine
- OpenRISC sim machine now automatically generates a device tree and passes it to the kernel
PowerPC
- Updates of PowerNV and pSeries documentation
Machines
- Deprecation of taihu machine
- Large rework of PPC405 machine
- General cleanup for Mac machines
- PowerNV PHB3/4 cleanups
- PowerNV XIVE improvements
- Extension of the powernv10 machine with XIVE2 ans PHB5 models
- New SLOF for PPC970 and POWER5+
- ppc: nested KVM HV for spapr virtual hypervisor
- spapr: nvdimm: Introduce spapr-nvdimm device
Extensions/removal
- Removal of 401/403 CPUs
- Removal of 601/602 CPUs
- Removal of SoftTLBs support for PPC74x CPUs
- Initial support for PMU
- PMU EBB support
- Rework of powerpc exception handling
- Support for new ISA31 instructions
- Large cleanup of FPU implementation
Fixes
- Fixes for ivshmem
- Fixes for POWER5+ pseries
- Fixes for FPU exceptions
- Fixes for exception models in MPCx and 60x CPUs
- Fix for e6500 CPU
- Fixes for the 7448 CPU
- Exception and TLB fixes for the 405 CPU
- 603 CPUs fixes
- Book-E exception fixes
- Clang fixes
- VOF installation
- Radix MMU fixes
Renesas RX
Renesas SH
RISC-V
Extensions
- Add support for ratified 1.0 Vector extension
- Support for the Zve64f and Zve32f extensions
- Drop support for draft 0.7.1 Vector extension
- Support Zfhmin and Zfh extensions
- RISC-V KVM support
- Mark Hypervisor extension as non experimental
- Enable Hypervisor extension by default
- Support for svnapot, svinval and svpbmt extensions
- Experimental support for 128-bit CPUs
- Initial support for XVentanaCondOps custom extension
- stval and mtval support for illegal instructions
- Support for the UXL field in xstatus
- Add support for zfinx, zdinx and zhinx{min} extensions
Machines
- OpenSBI binary loading support for the Spike machine
- Improve kernel loading for non-Linux platforms
- SiFive PDMA 64-bit support
- Support 32 cores on the virt machine
- Add AIA support for virt machine
Fixes
- Fix illegal instruction when PMP is disabled
- Corrections for the Vector extension
- Fixes for OpenTitan timer
- Correction of OpenTitan PLIC stride length
- Removal of OpenSBI ELFs
- Fix trap cause for RV32 HS-mode CSR access from RV64 HS-mode
- Fixup OpenTitan SPI address
s390x
- Support Linux kernel command line length of more than 896 bytes (if the guest kernel supports it, too)
- Emulate the instructions from the "Miscellaneous-Instruction-Extensions Facility 3" (a z15 extension)
- Fixes for various emulated instructions (SLDA, SRDA, SLAG, BRASL, BRCL)
SPARC
Tricore
x86
- Support for Intel AMX.
KVM
x86_64
AMD SEV
Xtensa
Device emulation and assignment
ACPI / SMBIOS
- advertise i8042 in FADT if it is present (5334bf5703)
- new acpi-erst device, for logging guest evens using standard ACPI ERST interface (0ef0506e559)
- added support for new processor-id SMBIOS option (cb5fb04fe6)
- fixed SMBIOS memory handles overlap for large VMs (8Tb and more) (a379d4550c4)
- added 'SMBIOS 3.0' support in SeaBIOS, in QEMU it's opt-in feature, use -machine smbios-ep=3-0 option to enable it
- fixed regression in ACPI table headers where OEM ID and OEM Table ID weren't padded correctly (748c030f360)
- fixed QEMU crash when started with user provided SLIC table (8cdb99af45)
- arm/virt: add VIOT table to describe virtio-iommu (cf1a5cc935c)
- x86: 'pc' machine type: fixed acpi-index not being migrated which might result in NIC name change if migration happens when guest is asking QEMU for it. Migration should work properly since 7.0 and newer machine types, for older machine types migration of acpi-index is broken and can't be fixed for compatibility reasons.
Audio
Block devices
Graphics
I2C
Input devices
IPMI
Multi-process QEMU
Network devices
NVDIMM
NVMe
Emulated NVMe Controller
PCI/PCIe
- Q35: fix PCIe device becoming disabled after migration when ACPI based PCI hotplug is used (6b0969f1ec)
- initial bits of SR/IOV support (250346169)
- arm/virt: fixed PXB interrupt routing (e609301b45)
- arm/virt: support for virtio-mem-pci (b1b87327a9)
SCSI
SD card
SMBIOS
TPM
USB
VFIO
virtio
Xen
fw_cfg
9pfs
- Fixed 9p server crash (issue #841) that happened on some host systems due to incorrect (system dependant) handling of struct dirent size.
- Added support for macOS hosts.
virtiofs
- Fix for CVE-2022-0358 - behaviour with supplementary groups and SGID directories
- Improved security label support
- The virtiofsd in qemu is now starting to be deprecated; please start using and contributing to Rust virtiofsd
Semihosting
- We now generate sane numbers for SYS_HEAPINFO under system emulation
Audio
Character devices
Crypto subsystem
Authorization subsystem
GUI
- a new "-display dbus" option to export the display for external processes. A gtk4-rs based widget is in the works (for future Boxes, virt-viewer etc). Potential other users include remote desktop protocols.
GDBStub
TCG Plugins
- new coverage plugin in contrib which support drcov format traces
Host support
Memory backends
Migration
Monitor
QMP
HMP
Network
Block device backends and tools
- Fleecing backup has been made more flexible: Fleecing backup means exposing a temporary snapshot of an actively used image, and having the “copy-before-write” (CBW) filter (or historically the “backup” block job) copy data there from areas written by the guest to the active image, before they are overwritten, so that the snapshot keeps representing the point-in-time state of the disk when the snapshot was created. This snapshot can then be read (either by qemu itself using the “backup” or “mirror” block jobs, or by outside users e.g. via an NBD export) to create a backup. As of qemu 7.0, instead of reading the snapshot image directly, it can also be accessed through the new “snapshot-access” block driver, by installing such a node on top of the CBW filter. Doing so has some advantages over accessing the snapshot image directly; for example, the image can then be in any format (not just COW formats like qcow2), because the CBW filter keeps track of its allocation bitmap. Once an area has been backed up, users can send a discard request to mark it as done, so that the CBW filter will not potentially copy it to the snapshot image on a subsequent guest write. Furthermore, the CBW filter now has a “bitmap” parameter that allows limiting its scope as specified by the bitmap at the time the CBW filter node is created.
- A bug in caching block status has been fixed that was causing over-eager treatment of a format layer as all data rather than detecting holes, if an earlier block status query had merely been checking for which portions of the backing chain were allocated. While the bug did not affect guest-visible data, it caused some performance regressions, particularly noticeable and easy to trigger when using 'qemu-nbd --allocation-depth'.
- The qemu-nbd program has gained a new --tls-hostname parameter to allow TLS validation against a different hostname, such as when setting up TLS through a TCP tunnel, and now supports TLS over Unix sockets.
- The SSH driver supports sha256 fingerprints with pre-blockdev command line configuration syntax.
- The SSH driver will print the actual fingerprint and its type when failing to validate a host key.
Tracing
Miscellaneous
- The -sandbox 'spawn' filter, will now correctly block use of the clone syscall for spawnnig processes, while allowing thread creation
- The -sandbox 'spawn' filter, will now entirely block use of the clone3 syscall entirely since there is no way to access its flags parameter from seccomp to distinguish thread vs process creation
- The -sandbox 'spawn' filter, will now block setns, unshare and execveat syscalls since they are not desired.
User-mode emulation
- fixed a bug that caused issues mapping the ARM commpage on 32 bit builds
binfmt_misc
Hexagon
TCG
User-mode emulation (linux-user, bsd-user) will enforce guest alignment constraints and raise SIGBUS to the guest program as appropriate.
ARM
Support for for ARMv4 and ARMv5 hosts has been dropped. These older Arm versions do not have support for misaligned memory access; such support was added to ARMv6. Since ARMv5 is quite old, it is presumed that such systems do not have sufficient RAM to even run QEMU, and so practically speaking no systems are impacted.
Guest agent
- Support Windows 11 for
guest-get-osinfo
command - Fix memory leaks in Windows
guest-get-fsinfo
command
Build Information
Python
GIT submodules
Container Based Builds
- a large number of containers are now updated by lcitool
- TESTS and IMAGES environment variables can be used filter again when building against all docker targets
VM Based Builds
Build Dependencies
- xfs libraries are not needed anymore for build, since the only ioctl used by qemu which was defined there got local implementation. With this, --enable-xfsctl configure option is also gone.
Windows
Testing and CI
Known issues
- see Planning/7.0