ChangeLog/8.2: Difference between revisions

From QEMU
No edit summary
 
(19 intermediate revisions by 14 users not shown)
Line 29: Line 29:
* Xilinx Versal board now models the CFU/CFI
* Xilinx Versal board now models the CFU/CFI
* Xilinx Versal board now models the TRNG device
* Xilinx Versal board now models the TRNG device
* New CPU type: cortex-a710
* New CPU types:
** cortex-a710
** neoverse-n2
* New architectural features now emulated:
* New architectural features now emulated:
** FEAT_PACQARMA3
** FEAT_PACQARMA3
Line 48: Line 50:
=== HPPA ===
=== HPPA ===
* New 64-bit PA-RISC 2.0 CPU emulation, enable with "-cpu hppa64" and "-cpu hppa" for 32-bit CPU (default)
* 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 some Elroy PCI bridges
* 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"
* Start 64-bit machine with "-machine C3700" and 32-bit CPU with "-machine B160L"
* Improved TLB performance
* Improved TLB performance
* Block-TLB (BTLB) support for 32-bit PA-RISC CPUs
* Block-TLB (BTLB) support for 32-bit PA-RISC CPUs
* New SeaBIOS-hppa version 10 to support HP C3000 with Astro & Elroy
* 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 ===
Line 62: Line 79:


=== Nios2 ===
=== Nios2 ===
* signal tests disabled due to bitrot


=== OpenRISC ===
=== OpenRISC ===
Line 129: Line 147:
* Clear the Ibex/OpenTitan SPI interrupts even if disabled
* Clear the Ibex/OpenTitan SPI interrupts even if disabled
* Set the OpenTitan priv to 1.12.0
* 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 ===
Line 140: Line 164:


=== SPARC ===
=== SPARC ===
* Convert instruction translator to use decodetree


=== Tricore ===
=== Tricore ===
Line 158: Line 184:
==== TCG ====
==== TCG ====
* Support for SHA instructions.
* 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 166: 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 182: Line 213:
* ati-vga pixman-less support and fixes
* ati-vga pixman-less support and fixes
* virtio-gpu blob=true VM can now be migrated
* 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 207: 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.
* 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 228: Line 288:


=== Audio ===
=== Audio ===
* Added virtio-sound device. See [[ChangeLog/8.2#virtio-sound|Audio section/virtio-sound]]


=== Character devices ===
=== Character devices ===
Line 245: Line 307:
* fix bug in reporting too many instructions to qemu_plugin_tb_n_insns()
* fix bug in reporting too many instructions to qemu_plugin_tb_n_insns()
* fix locking on execlog
* fix locking on execlog
* windows support


=== Host support ===
=== Host support ===
Line 281: Line 344:
== 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 ===
Line 291: Line 356:


=== LoongArch ===
=== LoongArch ===
* Support LASX/LSA sigcontext save and restore


=== HPPA ===
=== HPPA ===
Line 303: Line 369:


== Guest agent ==
== Guest agent ==
* Updated docs about `guest-exec` command results
* Fixed memory leak in `guest-exec`


== Build Information ==
== Build Information ==
Line 314: Line 382:
* 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 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.
* 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 323: Line 397:
== Known issues ==
== Known issues ==


* See [[Planning/8.2]]
* 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

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

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

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

Known issues