ChangeLog/8.2: Difference between revisions
(→RISC-V) |
Kostyanf14 (talk | contribs) No edit summary |
||
(64 intermediate revisions by 22 users not shown) | |||
Line 4: | Line 4: | ||
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. | ||
* The HAX accelerator is not supported anymore; [https://github.com/intel/haxm#status the project has been retired]. Use "whpx" or "hvf" respectively on Windows and macOS. | |||
* The old machine types pc-i440fx-1.4 to pc-i440fx-1.7 have been removed; use a newer machine type instead | |||
* In addition to <tt>-audiodev</tt> and <tt>-audio</tt>, QEMU does not create default audio backends anymore if the <tt>-nodefaults</tt> option are used on the command line. | |||
* If an audio backend is created with <tt>-audiodev</tt>, each audio client (a sound card or VNC) that wants to use it has to specify an <tt>audiodev=</tt> property. Previously, the first audiodev command line option would be used as a fallback. However <tt>-audio</tt> can now be used to configure one or more default audio backends, in lieu of the (deprecated and now removed) <tt>QEMU_AUDIO_*</tt> environment variables. | |||
* Running QEMU with KVM requires Linux 4.4 or newer. A future version of QEMU will increase the minimum requirement for Arm hosts to Linux 4.19 (also when running KVM); if this is too restrictive for your use case, please contact us at qemu-devel@nongnu.org. | |||
=== New deprecated options and features === | === New deprecated options and features === | ||
Line 10: | Line 16: | ||
=== 68k === | === 68k === | ||
* The Macintosh Quadra 800 (q800) emulation now can boot: | |||
** MacOS 7.1 - 8.1, with or without virtual memory enabled | |||
** A/UX 3.0.1 | |||
** NetBSD 9.3 | |||
** Linux (via EMILE) | |||
=== Alpha === | === Alpha === | ||
=== Arm === | === Arm === | ||
* The following machines support the new <tt>audiodev</tt> property: integratorcp, musicpal, n800, n810, realview-eb, realview-eb-mpcore, realview-pb-a8, realview-pbx-a9, akita, borzoi, spitz, terrier, versatilepb, versatileab, vexpress-a9, vexpress-a15, xlnx-zcu102 z2 | |||
* Xilinx Versal board now models the CFU/CFI | * Xilinx Versal board now models the CFU/CFI | ||
* New CPU | * Xilinx Versal board now models the TRNG device | ||
* New CPU types: | |||
** cortex-a710 | |||
** neoverse-n2 | |||
* New architectural features now emulated: | * New architectural features now emulated: | ||
** FEAT_PACQARMA3 | ** FEAT_PACQARMA3 | ||
Line 24: | Line 39: | ||
** FEAT_FPACCOMBINE | ** FEAT_FPACCOMBINE | ||
** FEAT_TIDCP1 | ** FEAT_TIDCP1 | ||
** FEAT_MOPS | |||
** FEAT_HBC | |||
** FEAT_HPMN0 | |||
* The SMMUv3 now advertises the SMMUv3.1-XNX feature | |||
=== AVR === | === AVR === | ||
Line 30: | Line 49: | ||
=== HPPA === | === HPPA === | ||
* New 64-bit PA-RISC 2.0 CPU emulation, enable with "-cpu hppa64" and "-cpu hppa" for 32-bit CPU (default) | |||
* New HP C3700 machine emulation, includes an emulated Astro memory controller and four Elroy PCI bridges | |||
* Start 64-bit machine with "-machine C3700" and 32-bit CPU with "-machine B160L" | |||
* Improved TLB performance | |||
* Block-TLB (BTLB) support for 32-bit PA-RISC CPUs | |||
* New SeaBIOS-hppa version 12 to support HP C3000 with Astro & Elroy | |||
=== LoongArch === | === LoongArch === | ||
==== ISA and Extensions ==== | |||
* Implement LASX extension | |||
* Implement PRELDX instruction | |||
* Allow user enable/disable LSX/LASX features | |||
* Add avail_XXX functions to check XXX instruction | |||
* Fix ASXE flag conflict | |||
==== Machines ==== | |||
* Support LoongArch32 cpu la132 | |||
* Support cpu model 'max' | |||
* Support 4K page size | |||
* Implement query-cpu-model-expansion | |||
* Remove unused 'loongarch_virt_pm' region | |||
* Remove unused ISA Bus | |||
* Remove unused ISA UART | |||
=== Microblaze === | === Microblaze === | ||
=== MIPS === | === MIPS === | ||
* The <tt>fuloong2e</tt> machine supports the new <tt>audiodev</tt> property. | |||
=== Nios2 === | === Nios2 === | ||
* signal tests disabled due to bitrot | |||
=== OpenRISC === | === OpenRISC === | ||
=== PowerPC === | === PowerPC === | ||
* The <tt>pegasos2</tt> and <tt>40p</tt> machines support the new <tt>audiodev</tt> property. | |||
=== Renesas RX === | === Renesas RX === | ||
Line 49: | Line 92: | ||
=== RISC-V === | === RISC-V === | ||
==== ISA and Extensions ==== | ==== ISA and Extensions ==== | ||
* Add zmmul isa string | |||
* Add smepmp isa string | |||
* Add RISC-V vector cryptographic instruction set support | |||
* Implement WARL behaviour for mcountinhibit/mcounteren | |||
* Add Zihintntl extension ISA string to DTS | |||
* Fix zfa fleq.d and fltq.d | |||
* Add RISC-V KVM AIA Support | |||
* Fix riscv,pmu DT node path in the virt machine | |||
* Update CSR bits name for svadu extension | |||
* Mark zicond non-experimental | |||
* Align the AIA model to v1.0 ratified spec | |||
* Use env_archcpu for better performance | |||
* Rename ext_icboz to ext_zicboz | |||
* Rename ext_icbom to ext_zicbom | |||
* Rename ext_icsr to ext_zicsr | |||
* Rename ext_ifencei to ext_zifencei | |||
* Add RISC-V Virtual IRQs and IRQ filtering support | |||
* Rename epmp to smepmp and expose the extension | |||
* Support zicntr/zihpm flags and disable support | |||
* Update RISC-V vector crypto to ratified v1.0.0 | |||
* Support discontinuous PMU counters | |||
==== Machines ==== | ==== Machines ==== | ||
* Remove 'host' CPU from TCG | |||
* riscv_htif Fixup printing on big endian hosts | |||
* Add support for the max CPU | |||
* Detect user choice in TCG | |||
* Remove RVG warning | |||
* Change default linux-user cpu to 'max' | |||
* Update 'virt' machine core limit | |||
* Add query-cpu-model-expansion API | |||
==== Fixes and Misc ==== | ==== Fixes and Misc ==== | ||
* Fix page_check_range use in fault-only-first | |||
* Fix upper/lower mtime write calculation | |||
* Make rtc variable names consistent | |||
* Use abi type for linux-user target_ucontext | |||
* Fix satp_mode_finalize() when satp_mode.supported = 0 | |||
* Fix non-KVM --enable-debug build | |||
* Add new extensions to hwprobe | |||
* Use accelerated helper for AES64KS1I | |||
* Allocate itrigger timers only once | |||
* Respect mseccfg.RLB for pmpaddrX changes | |||
* Don't read the CSR in riscv_csrrw_do64 | |||
* Clear CSR values at reset and sync MPSTATE with host | |||
* Fix the typo of inverted order of pmpaddr13 and pmpaddr14 | |||
* Replace GDB exit calls with proper shutdown | |||
* Support KVM_GET_REG_LIST | |||
* Deprecate capital 'Z' CPU properties | |||
* Fix vfwmaccbf16.vf | |||
* Clear pmp/smepmp bits on reset | |||
* Ignore pmp writes when RW=01 | |||
* Correct CSR_MSECCFG operations | |||
* Clear the Ibex/OpenTitan SPI interrupts even if disabled | |||
* Set the OpenTitan priv to 1.12.0 | |||
* Add Zicboz block size to hwprobe | |||
* Create the virt machine FDT before machine init is complete | |||
* Don't verify ISA compatibility for zicntr and zihpm | |||
* Fix SiFive E CLINT clock frequency | |||
* Fix invalid exception on MMU translation stage | |||
* Fix mxr bit behavior | |||
=== s390x === | === s390x === | ||
* Emulated VFMIN and VFMAX instructions now correctly raise a specification exceptions when bits 1-3 of M5 are set | |||
* Fixed emulated VSTL instruction with a large length | |||
* Fixed emulated VREP instruction to use a 16-bit immediate | |||
* Fixed the "ignored match" case in the emulated VSTRS instruction | |||
* Enable crypto adapter passthrough (vfio-ap) for protected virtualization guests | |||
* Support s390x CPU topology (books and drawers, STSI 15.1.x instruction, PTF instruction) with KVM | |||
=== SPARC === | === SPARC === | ||
* Convert instruction translator to use decodetree | |||
=== Tricore === | === Tricore === | ||
* Added TC37x CPU that implements ISA v1.6.2 | |||
* Added CRCN, FTOU, FTOHP, and HPTOF instructions | |||
* Fixed RCPW/RRPW_INSERT instructions for width=0 | |||
* Fixed RCRR_INSERT using the wrong destination register | |||
* Fixed FTOUZ being only available from ISA v1.3.1 upwards | |||
=== x86 === | === x86 === | ||
==== Xen emulation under KVM ==== | |||
* Support PV console and network devices. | |||
* Bug fixes to support running Xen PV guests under "shim", documented in the [https://qemu-project.gitlab.io/qemu/system/i386/xen.html "Xen HVM guest support"] page. | |||
* Simplify command line for block and network devices. | |||
==== TCG ==== | ==== TCG ==== | ||
* Support for SHA instructions. | |||
==== Known issues ==== | |||
* [since 8.1] Windows German version might fail to recognize NIC, for possible workaround[s] see: https://gitlab.com/qemu-project/qemu/-/issues/774 | |||
=== Xtensa === | === Xtensa === | ||
Line 94: | Line 195: | ||
==== Audio ==== | ==== Audio ==== | ||
* <span id="virtio-sound"></span>Added virtio-sound device which implements capture and playback from inside a guest using the configured audio backend of the host machine. It is documented in the [https://qemu-project.gitlab.io/qemu/system/devices/virtio-snd.html "Device Emulation / virtio sound"] page. | |||
==== Block devices ==== | ==== Block devices ==== | ||
Line 103: | Line 206: | ||
*** De-duplicate clusters located on the same offset in the host file | *** De-duplicate clusters located on the same offset in the host file | ||
** Introduced ability to execute check automatically (if disk image is opened in read/write mode) if corruption is detected by open | ** Introduced ability to execute check automatically (if disk image is opened in read/write mode) if corruption is detected by open | ||
** Cluster allocation is now based on the cluster used bitmap (clusters could be allocated in holes inside image file) | |||
** Minimal DISCARD & WRITE_ZEROES support | |||
==== Graphics ==== | ==== Graphics ==== | ||
* New virtio-gpu '''rutabaga''' device. It allows various abstractions of GPU and display virtualization, coming from the Android/CrosVM graphical stack [https://crosvm.dev/book/appendix/rutabaga_gfx.html Rutabaga doc]. This should help [https://developer.android.com/studio/releases/emulator Android Emulator] use upstream QEMU, and offers alternative solutions (or context types) than [https://docs.mesa3d.org/drivers/virgl/ virgl]. | |||
* ati-vga pixman-less support and fixes | |||
* virtio-gpu blob=true VM can now be migrated | |||
==== Hyper-V ==== | |||
* New Hyper-V Dynamic Memory protocol device '''hv-balloon'''. This driver is like '''virtio-balloon''' on steroids for Windows guests: it allows both changing the guest memory allocation via ballooning and inserting pieces of extra RAM into it on demand from a provided memory backend via Windows-native Dynamic Memory protocol. | |||
==== I2C ==== | ==== I2C ==== | ||
Line 121: | Line 233: | ||
==== PCI/PCIe ==== | ==== PCI/PCIe ==== | ||
* Added Astro Memory controller with Elroy PCI host busses for PA-RISC (hppa) machines | |||
==== SCSI ==== | ==== SCSI ==== | ||
Line 129: | Line 242: | ||
==== TPM ==== | ==== TPM ==== | ||
==== UFS ==== | |||
* Support for UFS emulation through the new ufs, ufs-lu devices based on spec version v3.1 | |||
* Support for multiple logical units through the ufs-lu device | |||
* Support for UFS initialisation | |||
* Support for SCSI commands including read/write. | |||
* Support for query request commands | |||
* Typical usage: | |||
-drive file=<file>,if=none,id=<drive_id> | |||
-device ufs,serial=<serial>,id=<bus_name>, nutrs=<N[optional]>,nutmrs=<N[optional]> | |||
-device ufs-lu,drive=<drive_id>,bus=<bus_name> | |||
==== USB ==== | ==== USB ==== | ||
==== VFIO ==== | ==== VFIO ==== | ||
* P2P support for VFIO migration | |||
* Removal of NVIDIA V100 GPU with NVLink2 support (PPC) | |||
* Dynamic MSI-X allocation support | |||
* ramfb migration support | |||
* Support for non 64b IOVA space | |||
* Preparatory changes for new IOMMUFD backend | |||
==== virtio ==== | ==== virtio ==== | ||
* virtio-mem now supports to dynamically consume multiple memslots instead of statically a single big one. The feature can be enabled using "dynamic-memslots=on", which can severely reduce KVM memory slot metadata overhead with large virtio-mem devices that only expose a small amount of memory to the VM. Note that the feature is incompatible with vhost devices that provide less than 509 memslots, like most vhost-user devices. | |||
* Added virtio-sound device. See [[ChangeLog/8.2#virtio-sound|Audio section/virtio-sound]] | |||
==== vDPA ==== | ==== vDPA ==== | ||
==== Xen ==== | ==== Xen ==== | ||
* Support PV unplug for AHCI disks with the q35 platform. | |||
* Allow creation of PV console devices from the command line. | |||
* Allow creation of PV network devices, including '<tt>-nic xxx,model=xen-net-device</tt>' and the default NIC. | |||
* Support '<tt>-drive file=FILENAME,if=xen</tt>' for creating PV block devices with automatic names. | |||
==== fw_cfg ==== | ==== fw_cfg ==== | ||
Line 149: | Line 288: | ||
=== Audio === | === Audio === | ||
* Added virtio-sound device. See [[ChangeLog/8.2#virtio-sound|Audio section/virtio-sound]] | |||
=== Character devices === | === Character devices === | ||
Line 157: | Line 298: | ||
=== GUI === | === GUI === | ||
* cocoa: add zoom-to-fit display option | |||
* gtk: various minor fixes | |||
=== GDBStub === | === GDBStub === | ||
Line 162: | Line 305: | ||
=== TCG Plugins === | === TCG Plugins === | ||
* fix bug in reporting too many instructions to qemu_plugin_tb_n_insns() | |||
* fix locking on execlog | |||
* windows support | |||
=== Host support === | === Host support === | ||
=== Memory backends === | === Memory backends === | ||
* memory-backend-file now supports the "rom" parameter. "share=off,readonly=off,rom=on" can be used for VM-templating with R/O files: open the file R/O, but create writable RAM instead of Read Only Memory (ROM). | |||
* "VM templating" documentation was added | |||
=== Migration === | === Migration === | ||
* Legacy compression migration is deprecated ("compress" as capability, "compress-level", "compress-threads", "compress-wait-thread", "decompress-threads" as parameters). Suggest to use multifd compression instead. | |||
* Block migration is deprecated. QMP command "migrate" parameters "blk" and "inc" are deprecated. Suggest to use driver-mirror with NBD instead. | |||
* Fixed race conditions for postcopy migration when preempt mode is enabled. | |||
* Postcopy recovery now allows network failure to happen even during RECOVER phase. | |||
* Added migration parameter "avail-switchover-bandwidth" migration parameter, can be used when the user observes extremely slow bandwidth during migration, causing migration to never complete. | |||
* Initial part of migration mode "cpr-reboot" integrated. | |||
=== Monitor === | === Monitor === | ||
Line 178: | Line 333: | ||
=== Block device backends and tools === | === Block device backends and tools === | ||
* The qemu NBD implementation for both server and client now supports the recent NBD protocol extension of 64-bit extended headers. When both sides of an NBD connection support this extension, commands like write zeroes or block status can operate on 64-bit effect lengths, rather than being capped to transaction sizes smaller than 4G. | |||
=== Tracing === | === Tracing === | ||
Line 184: | Line 340: | ||
=== Miscellaneous === | === Miscellaneous === | ||
* Allow '''dump-guest-memory''' to output '''standard kdump''' format | |||
== User-mode emulation == | == User-mode emulation == | ||
=== runtime === | === runtime === | ||
Since this release, qemu linux-user implements and provides vdso for most popular architectures. | |||
=== binfmt_misc === | === binfmt_misc === | ||
=== | === alpha === | ||
* Emulated /proc/cpuinfo output in linux-user | |||
=== | === arm/arm64/aarch64 === | ||
* Emulated /proc/cpuinfo output in linux-user | |||
=== LoongArch === | === LoongArch === | ||
* Support LASX/LSA sigcontext save and restore | |||
=== HPPA === | === HPPA === | ||
Line 203: | Line 363: | ||
=== x86 === | === x86 === | ||
== TCG backends == | == TCG backends == | ||
Line 211: | Line 369: | ||
== Guest agent == | == Guest agent == | ||
* Updated docs about `guest-exec` command results | |||
* Fixed memory leak in `guest-exec` | |||
== Build Information == | == Build Information == | ||
* Coding style has been updated to allow loop variables | * Coding style has been updated to allow loop variables | ||
* It is possible to build a non-relocatable binary of QEMU with the configure option <tt>--disable-relocatable</tt>. The default remains a relocatable install (that is, all the directories within the install prefix are computed based on the path to the executable). | |||
=== Build Dependencies === | === Build Dependencies === | ||
* Building QEMU now requires Python 3.8. As a consequence, building on Debian 10 is not supported anymore (unless a newer version of Python is installed by other means). | * Building QEMU now requires Python 3.8. As a consequence, building on Debian 10 is not supported anymore (unless a newer version of Python is installed by other means). | ||
* Building QEMU now uses the tomli library if Python is older than version 3.11. However, version 2.0.1 is bundled in case tomli is not installed on the host. | * Building QEMU now uses the tomli library if Python is older than version 3.11. However, version 2.0.1 is bundled in case tomli is not installed on the host. | ||
* The libfdt library is no longer bundled with QEMU. However, if QEMU is configured with --enable-download and the library is absent, then it will be downloaded and built together if any emulators need it. | |||
* The [https://www.pixman.org/ Pixman] library is no longer strictly required. The VC, VNC, Gtk, Spice, screendump features and a few devices still require it. | |||
* When running <tt>make check-avocado</tt>, the Avocado testing framework and pycdlib must be present if the build tree was configured with <tt>--disable-download</tt>. Until 8.1, Avocado was always downloaded from PyPI. | |||
=== Docker Tweaks === | |||
* debian-i686 replaces fedora-i386 for 32 bit x86 cross builds | |||
* debian-am64 and debian-native merged into a common debian container built from lcitool for latest deps | |||
=== Windows === | === Windows === | ||
Line 224: | Line 393: | ||
=== Testing and CI === | === Testing and CI === | ||
* ccache has been enabled for CI builds | * ccache has been enabled for CI builds | ||
* container backend is now selected by configure script | |||
== Known issues == | == Known issues == | ||
* See | * See https://gitlab.com/qemu-project/qemu/-/milestones/10 |
Latest revision as of 13:57, 18 December 2023
System emulation
Removed features and incompatible changes
Consult the 'Removed features' page for details of suggested replacement functionality.
- The HAX accelerator is not supported anymore; the project has been retired. Use "whpx" or "hvf" respectively on Windows and macOS.
- The old machine types pc-i440fx-1.4 to pc-i440fx-1.7 have been removed; use a newer machine type instead
- In addition to -audiodev and -audio, QEMU does not create default audio backends anymore if the -nodefaults option are used on the command line.
- If an audio backend is created with -audiodev, each audio client (a sound card or VNC) that wants to use it has to specify an audiodev= property. Previously, the first audiodev command line option would be used as a fallback. However -audio can now be used to configure one or more default audio backends, in lieu of the (deprecated and now removed) QEMU_AUDIO_* environment variables.
- Running QEMU with KVM requires Linux 4.4 or newer. A future version of QEMU will increase the minimum requirement for Arm hosts to Linux 4.19 (also when running KVM); if this is too restrictive for your use case, please contact us at qemu-devel@nongnu.org.
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.
68k
- The Macintosh Quadra 800 (q800) emulation now can boot:
- MacOS 7.1 - 8.1, with or without virtual memory enabled
- A/UX 3.0.1
- NetBSD 9.3
- Linux (via EMILE)
Alpha
Arm
- The following machines support the new audiodev property: integratorcp, musicpal, n800, n810, realview-eb, realview-eb-mpcore, realview-pb-a8, realview-pbx-a9, akita, borzoi, spitz, terrier, versatilepb, versatileab, vexpress-a9, vexpress-a15, xlnx-zcu102 z2
- Xilinx Versal board now models the CFU/CFI
- Xilinx Versal board now models the TRNG device
- New CPU types:
- cortex-a710
- neoverse-n2
- New architectural features now emulated:
- FEAT_PACQARMA3
- FEAT_EPAC
- FEAT_Pauth2
- FEAT_FPAC
- FEAT_FPACCOMBINE
- FEAT_TIDCP1
- FEAT_MOPS
- FEAT_HBC
- FEAT_HPMN0
- The SMMUv3 now advertises the SMMUv3.1-XNX feature
AVR
Hexagon
HPPA
- New 64-bit PA-RISC 2.0 CPU emulation, enable with "-cpu hppa64" and "-cpu hppa" for 32-bit CPU (default)
- New HP C3700 machine emulation, includes an emulated Astro memory controller and four Elroy PCI bridges
- Start 64-bit machine with "-machine C3700" and 32-bit CPU with "-machine B160L"
- Improved TLB performance
- Block-TLB (BTLB) support for 32-bit PA-RISC CPUs
- New SeaBIOS-hppa version 12 to support HP C3000 with Astro & Elroy
LoongArch
ISA and Extensions
- Implement LASX extension
- Implement PRELDX instruction
- Allow user enable/disable LSX/LASX features
- Add avail_XXX functions to check XXX instruction
- Fix ASXE flag conflict
Machines
- Support LoongArch32 cpu la132
- Support cpu model 'max'
- Support 4K page size
- Implement query-cpu-model-expansion
- Remove unused 'loongarch_virt_pm' region
- Remove unused ISA Bus
- Remove unused ISA UART
Microblaze
MIPS
- The fuloong2e machine supports the new audiodev property.
Nios2
- signal tests disabled due to bitrot
OpenRISC
PowerPC
- The pegasos2 and 40p machines support the new audiodev property.
Renesas RX
Renesas SH
RISC-V
ISA and Extensions
- Add zmmul isa string
- Add smepmp isa string
- Add RISC-V vector cryptographic instruction set support
- Implement WARL behaviour for mcountinhibit/mcounteren
- Add Zihintntl extension ISA string to DTS
- Fix zfa fleq.d and fltq.d
- Add RISC-V KVM AIA Support
- Fix riscv,pmu DT node path in the virt machine
- Update CSR bits name for svadu extension
- Mark zicond non-experimental
- Align the AIA model to v1.0 ratified spec
- Use env_archcpu for better performance
- Rename ext_icboz to ext_zicboz
- Rename ext_icbom to ext_zicbom
- Rename ext_icsr to ext_zicsr
- Rename ext_ifencei to ext_zifencei
- Add RISC-V Virtual IRQs and IRQ filtering support
- Rename epmp to smepmp and expose the extension
- Support zicntr/zihpm flags and disable support
- Update RISC-V vector crypto to ratified v1.0.0
- Support discontinuous PMU counters
Machines
- Remove 'host' CPU from TCG
- riscv_htif Fixup printing on big endian hosts
- Add support for the max CPU
- Detect user choice in TCG
- Remove RVG warning
- Change default linux-user cpu to 'max'
- Update 'virt' machine core limit
- Add query-cpu-model-expansion API
Fixes and Misc
- Fix page_check_range use in fault-only-first
- Fix upper/lower mtime write calculation
- Make rtc variable names consistent
- Use abi type for linux-user target_ucontext
- Fix satp_mode_finalize() when satp_mode.supported = 0
- Fix non-KVM --enable-debug build
- Add new extensions to hwprobe
- Use accelerated helper for AES64KS1I
- Allocate itrigger timers only once
- Respect mseccfg.RLB for pmpaddrX changes
- Don't read the CSR in riscv_csrrw_do64
- Clear CSR values at reset and sync MPSTATE with host
- Fix the typo of inverted order of pmpaddr13 and pmpaddr14
- Replace GDB exit calls with proper shutdown
- Support KVM_GET_REG_LIST
- Deprecate capital 'Z' CPU properties
- Fix vfwmaccbf16.vf
- Clear pmp/smepmp bits on reset
- Ignore pmp writes when RW=01
- Correct CSR_MSECCFG operations
- Clear the Ibex/OpenTitan SPI interrupts even if disabled
- Set the OpenTitan priv to 1.12.0
- Add Zicboz block size to hwprobe
- Create the virt machine FDT before machine init is complete
- Don't verify ISA compatibility for zicntr and zihpm
- Fix SiFive E CLINT clock frequency
- Fix invalid exception on MMU translation stage
- Fix mxr bit behavior
s390x
- Emulated VFMIN and VFMAX instructions now correctly raise a specification exceptions when bits 1-3 of M5 are set
- Fixed emulated VSTL instruction with a large length
- Fixed emulated VREP instruction to use a 16-bit immediate
- Fixed the "ignored match" case in the emulated VSTRS instruction
- Enable crypto adapter passthrough (vfio-ap) for protected virtualization guests
- Support s390x CPU topology (books and drawers, STSI 15.1.x instruction, PTF instruction) with KVM
SPARC
- Convert instruction translator to use decodetree
Tricore
- Added TC37x CPU that implements ISA v1.6.2
- Added CRCN, FTOU, FTOHP, and HPTOF instructions
- Fixed RCPW/RRPW_INSERT instructions for width=0
- Fixed RCRR_INSERT using the wrong destination register
- Fixed FTOUZ being only available from ISA v1.3.1 upwards
x86
Xen emulation under KVM
- Support PV console and network devices.
- Bug fixes to support running Xen PV guests under "shim", documented in the "Xen HVM guest support" page.
- Simplify command line for block and network devices.
TCG
- Support for SHA instructions.
Known issues
- [since 8.1] Windows German version might fail to recognize NIC, for possible workaround[s] see: https://gitlab.com/qemu-project/qemu/-/issues/774
Xtensa
Device emulation and assignment
ACPI / SMBIOS
Audio
- Added virtio-sound device which implements capture and playback from inside a guest using the configured audio backend of the host machine. It is documented in the "Device Emulation / virtio sound" page.
Block devices
- Parallels Format Driver
- Improved 'qemu-img check' facility
- Recover from broken data_off in the header
- Drop clusters outside of the image file
- De-duplicate clusters located on the same offset in the host file
- Introduced ability to execute check automatically (if disk image is opened in read/write mode) if corruption is detected by open
- Cluster allocation is now based on the cluster used bitmap (clusters could be allocated in holes inside image file)
- Minimal DISCARD & WRITE_ZEROES support
- Improved 'qemu-img check' facility
Graphics
- New virtio-gpu rutabaga device. It allows various abstractions of GPU and display virtualization, coming from the Android/CrosVM graphical stack Rutabaga doc. This should help Android Emulator use upstream QEMU, and offers alternative solutions (or context types) than virgl.
- ati-vga pixman-less support and fixes
- virtio-gpu blob=true VM can now be migrated
Hyper-V
- New Hyper-V Dynamic Memory protocol device hv-balloon. This driver is like virtio-balloon on steroids for Windows guests: it allows both changing the guest memory allocation via ballooning and inserting pieces of extra RAM into it on demand from a provided memory backend via Windows-native Dynamic Memory protocol.
I2C
Input devices
IPMI
Multi-process QEMU
Network devices
NVDIMM
NVMe
PCI/PCIe
- Added Astro Memory controller with Elroy PCI host busses for PA-RISC (hppa) machines
SCSI
SD card
SMBIOS
TPM
UFS
- Support for UFS emulation through the new ufs, ufs-lu devices based on spec version v3.1
- Support for multiple logical units through the ufs-lu device
- Support for UFS initialisation
- Support for SCSI commands including read/write.
- Support for query request commands
- Typical usage:
-drive file=<file>,if=none,id=<drive_id> -device ufs,serial=<serial>,id=<bus_name>, nutrs=<N[optional]>,nutmrs=<N[optional]> -device ufs-lu,drive=<drive_id>,bus=<bus_name>
USB
VFIO
- P2P support for VFIO migration
- Removal of NVIDIA V100 GPU with NVLink2 support (PPC)
- Dynamic MSI-X allocation support
- ramfb migration support
- Support for non 64b IOVA space
- Preparatory changes for new IOMMUFD backend
virtio
- virtio-mem now supports to dynamically consume multiple memslots instead of statically a single big one. The feature can be enabled using "dynamic-memslots=on", which can severely reduce KVM memory slot metadata overhead with large virtio-mem devices that only expose a small amount of memory to the VM. Note that the feature is incompatible with vhost devices that provide less than 509 memslots, like most vhost-user devices.
- Added virtio-sound device. See Audio section/virtio-sound
vDPA
Xen
- Support PV unplug for AHCI disks with the q35 platform.
- Allow creation of PV console devices from the command line.
- Allow creation of PV network devices, including '-nic xxx,model=xen-net-device' and the default NIC.
- Support '-drive file=FILENAME,if=xen' for creating PV block devices with automatic names.
fw_cfg
9pfs
virtiofs
Semihosting
Audio
- Added virtio-sound device. See Audio section/virtio-sound
Character devices
Crypto subsystem
Authorization subsystem
GUI
- cocoa: add zoom-to-fit display option
- gtk: various minor fixes
GDBStub
- fixes cases where wrong threads were reported to gdb
TCG Plugins
- fix bug in reporting too many instructions to qemu_plugin_tb_n_insns()
- fix locking on execlog
- windows support
Host support
Memory backends
- memory-backend-file now supports the "rom" parameter. "share=off,readonly=off,rom=on" can be used for VM-templating with R/O files: open the file R/O, but create writable RAM instead of Read Only Memory (ROM).
- "VM templating" documentation was added
Migration
- Legacy compression migration is deprecated ("compress" as capability, "compress-level", "compress-threads", "compress-wait-thread", "decompress-threads" as parameters). Suggest to use multifd compression instead.
- Block migration is deprecated. QMP command "migrate" parameters "blk" and "inc" are deprecated. Suggest to use driver-mirror with NBD instead.
- Fixed race conditions for postcopy migration when preempt mode is enabled.
- Postcopy recovery now allows network failure to happen even during RECOVER phase.
- Added migration parameter "avail-switchover-bandwidth" migration parameter, can be used when the user observes extremely slow bandwidth during migration, causing migration to never complete.
- Initial part of migration mode "cpr-reboot" integrated.
Monitor
QMP
HMP
Network
Block device backends and tools
- The qemu NBD implementation for both server and client now supports the recent NBD protocol extension of 64-bit extended headers. When both sides of an NBD connection support this extension, commands like write zeroes or block status can operate on 64-bit effect lengths, rather than being capped to transaction sizes smaller than 4G.
Tracing
Semihosting
Miscellaneous
- Allow dump-guest-memory to output standard kdump format
User-mode emulation
runtime
Since this release, qemu linux-user implements and provides vdso for most popular architectures.
binfmt_misc
alpha
- Emulated /proc/cpuinfo output in linux-user
arm/arm64/aarch64
- Emulated /proc/cpuinfo output in linux-user
LoongArch
- Support LASX/LSA sigcontext save and restore
HPPA
s390
x86
TCG backends
RISC-V
Guest agent
- Updated docs about `guest-exec` command results
- Fixed memory leak in `guest-exec`
Build Information
- Coding style has been updated to allow loop variables
- It is possible to build a non-relocatable binary of QEMU with the configure option --disable-relocatable. The default remains a relocatable install (that is, all the directories within the install prefix are computed based on the path to the executable).
Build Dependencies
- Building QEMU now requires Python 3.8. As a consequence, building on Debian 10 is not supported anymore (unless a newer version of Python is installed by other means).
- Building QEMU now uses the tomli library if Python is older than version 3.11. However, version 2.0.1 is bundled in case tomli is not installed on the host.
- The libfdt library is no longer bundled with QEMU. However, if QEMU is configured with --enable-download and the library is absent, then it will be downloaded and built together if any emulators need it.
- The Pixman library is no longer strictly required. The VC, VNC, Gtk, Spice, screendump features and a few devices still require it.
- When running make check-avocado, the Avocado testing framework and pycdlib must be present if the build tree was configured with --disable-download. Until 8.1, Avocado was always downloaded from PyPI.
Docker Tweaks
- debian-i686 replaces fedora-i386 for 32 bit x86 cross builds
- debian-am64 and debian-native merged into a common debian container built from lcitool for latest deps
Windows
Testing and CI
- ccache has been enabled for CI builds
- container backend is now selected by configure script