ChangeLog/9.2: Difference between revisions

From QEMU
(Add build and arm machine info for the experimental Rust feature)
 
(15 intermediate revisions by 7 users not shown)
Line 4: Line 4:


=== Removed features and incompatible changes ===
=== Removed features and incompatible changes ===
* The -rotate and -portrait options were only useful with PXA2xx machines, which have all now been removed. These command line options have therefore also been removed.


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.
Line 24: Line 26:
** the virt board now has an SMMU capable of two-stage translation
** the virt board now has an SMMU capable of two-stage translation
** xilinx-zynq-a9 now enables the Security Extensions on the CPU
** xilinx-zynq-a9 now enables the Security Extensions on the CPU
* KVM-based VMs can now support MTE (if the host CPU has MTE support)


* gdbstub
* gdbstub
Line 32: Line 36:
* Some older machine types which were deprecated in the 9.0 release have now been removed: akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex, z2
* Some older machine types which were deprecated in the 9.0 release have now been removed: akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex, z2


* when QEMU is built with the experimental Rust feature, an alternative PL011 implementation in Rust is selected by default. It is not migrateable and not recommended for actual use.  
* when QEMU is built with the experimental Rust feature, an alternative PL011 implementation in Rust is selected by default. It is not migrateable and not recommended for actual use.


=== AVR ===
=== AVR ===
Line 50: Line 54:


=== Microblaze ===
=== Microblaze ===
* debian-microblaze-cross has been patched to fix atomic generation


=== MIPS ===
=== MIPS ===
Line 113: Line 119:


==== Graphics ====
==== Graphics ====
* virtio-gpu now support venus encapsulation for vulkan (need recent virglrenderer on host and mesa on guest)


==== Hyper-V ====
==== Hyper-V ====
Line 156: Line 164:


==== 9pfs ====
==== 9pfs ====
* [https://qemu-project.gitlab.io/qemu/about/removed-features.html#fsdev-proxy-and-virtfs-proxy-since-9-2 "proxy" filesystem backend driver has been removed], use "local" filesystem backend driver instead.


==== virtiofs ====
==== virtiofs ====
Line 178: Line 187:


=== GUI ===
=== GUI ===
* allocate shareable display memory on Unix
* -display dbus now provides a Unix.Map interface, to share the display memory with the client
* fix -display dbus discarding cursor updates
* Fix handling of SASL authentication for VNC servers running on UNIX sockets
* Terminate the VNC connection immediately if no SASL authentication mechanisms are available


=== GDBStub ===
=== GDBStub ===
* fixed a bug that broke aarch64_be-linux-user


=== TCG Plugins ===
=== TCG Plugins ===
Line 191: Line 206:
* New memory API for reading vaddr
* New memory API for reading vaddr
* Added basic block vector plugin
* Added basic block vector plugin
* fixed a race condition which can hit uninstalling plugins


=== Host support ===
=== Host support ===
Line 200: Line 216:
* Added QATZIP support for multifd compressors.
* Added QATZIP support for multifd compressors.
* Fixed one multifd race condition crash (against received bitmap).
* Fixed one multifd race condition crash (against received bitmap).
* Non-deterministic EADDRINUSE problems initiating migration connections on OpenBSD have been fixed


=== Monitor ===
=== Monitor ===
Line 226: Line 243:


=== arm/arm64/aarch64 ===
=== arm/arm64/aarch64 ===
* aarch64_be-linux-user now has a test case


=== LoongArch ===
=== LoongArch ===
Line 242: Line 260:


=== RISC-V ===
=== RISC-V ===
* Supoort the RVV-1.0 extension to support vector operations on the host.


== Guest agent ==
== Guest agent ==


== Build Information ==
== Build Information ==
=== Rust usage ===


Support for device models written in the [https://www.rust-lang.org/ Rust programming language] has been added. It is considered experimental and not stable, and it is '''not recommended''' to be used for anything other than development. It is disabled by default and can be enabled by passing the flag <code>--enable-rust</code> to the <code>configure</code> script.
Support for device models written in the [https://www.rust-lang.org/ Rust programming language] has been added. It is considered experimental and not stable, and it is '''not recommended''' to be used for anything other than development. It is disabled by default and can be enabled by passing the flag <code>--enable-rust</code> to the <code>configure</code> script.


=== Build Dependencies ===
Future version of QEMU will require a Rust compiler and the <tt>bindgen</tt> tool to be installed. Right now the requirement is to have <tt>rustc</tt> of at least version '''1.63.0''' and <tt>bindgen</tt> of at least version '''0.60.0'''. Compiling QEMU in distros with older version will require installing newer versions of the compiler (via <tt>rustup</tt>) and <tt>bindgen</tt> tool (via <tt>cargo install</tt>).


* An optional dependency to the <code>rustc</code> compiler of at least version <code>1.80.0</code> has been added. The <code>bindgen</code> binary must also be present and of version at least <code>0.69.4</code>.
Adjustments to the minimum supported version of Rust and bindgen will be made according to QEMU's supported platform policy.


=== Configuration ===
=== Configuration ===
Line 264: Line 286:


=== Testing and CI ===
=== Testing and CI ===
* very basic testing was added for aarch64_be-linux-user


== Known issues ==
== Known issues ==


* See https://gitlab.com/qemu-project/qemu/-/milestones/14
* See https://gitlab.com/qemu-project/qemu/-/milestones/14

Latest revision as of 17:26, 31 October 2024

Release schedule: Planning/9.2.

System emulation

Removed features and incompatible changes

  • The -rotate and -portrait options were only useful with PXA2xx machines, which have all now been removed. These command line options have therefore also been removed.

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.

68k

Alpha

Arm

  • New CPU architectural features emulated:
    • FEAT_EBF16
  • Changes to existing board models:
    • sbsa-ref now has an SMMU capable of two-stage translation
    • the virt board now has an SMMU capable of two-stage translation
    • xilinx-zynq-a9 now enables the Security Extensions on the CPU
  • KVM-based VMs can now support MTE (if the host CPU has MTE support)
  • gdbstub
    • Now support MTE in system mode (under TCG emulation)
  • The hvf accelerator now supports creating VMs with larger than 36 bit address space (and thus 64GB or more of RAM), when the host is macos 15 or newer and the host CPU supports it
  • Some older machine types which were deprecated in the 9.0 release have now been removed: akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex, z2
  • when QEMU is built with the experimental Rust feature, an alternative PL011 implementation in Rust is selected by default. It is not migrateable and not recommended for actual use.

AVR

CRIS

The CRIS target has been removed without replacement (The CRIS architecture was pulled from Linux in 4.17 and the compiler was no longer packaged in any distro making it hard to test this target).

Hexagon

HPPA

  • Fix saving and restoring PSW V-Bit (division step) accross interrupts
  • Fix linux-user emulation issues on 64-bit CPU

LoongArch

Microblaze

  • debian-microblaze-cross has been patched to fix atomic generation

MIPS

  • Fix for booting the jazz machine with the -nic ...,model=dp83932 option

Nios2

OpenRISC

PowerPC

Renesas RX

Renesas SH (sh4)

  • The unmaintained "shix" machine has been removed
  • The big endian system emulation ("qemu-system-sh4eb") has been disabled since there was no usable machine left for this target

RISC-V

ISA and Extensions

  • Add a property to set vl to ceil(AVL/2)
  • Add 'fcsr' register to QEMU log as a part of F extension
  • Add preliminary textra trigger CSR functions
  • Add Svvptc extension support
  • Fix masking of rv32 physical address

Machines

  • Enable Bit Manip for OpenTitan Ibex CPU
  • Fix the group bit setting of AIA with KVM

Fixes and Misc

  • Consider MISA bit choice in implied rule
  • Fix the za64rs priv spec requirements
  • Stop timer with infinite timecmp
  • Fix riscv64 build on musl libc
  • RISC-V bsd-user support
  • Fix linking problem with semihosting disabled
  • Fix IMSIC interrupt state updates

s390x

SPARC

  • Implement a single entry floating-point exception queue for sparc v7/v8. This fixes a hang on Solaris 7, which assumes the queue exists and is non-empty on entry to the exception handler.

Tricore

x86

TCG

Xtensa

Device emulation and assignment

ACPI / SMBIOS

Audio

Block devices

Graphics

  • virtio-gpu now support venus encapsulation for vulkan (need recent virglrenderer on host and mesa on guest)

Hyper-V

I2C

Input devices

IPMI

Multi-process QEMU

Network devices

NVDIMM

NVMe

PCI/PCIe

SCSI

SD card

SMBIOS

TPM

UFS

USB

VFIO

virtio

  • virtio-mem now supports suspend/resume on x86-64.

vDPA

Xen

fw_cfg

9pfs

virtiofs

Semihosting

Audio

Character devices

  • socket: introduce 'reconnect-ms' and deprecate 'reconnect'
  • pty: add "path" option, create a symbolic to the given path that points to the allocated PTY

Crypto subsystem

  • The glib crypto backend now supports the SHA-384 hash
  • A Linux bug that would cause the PBKDF code that estimates iterations to sometimes hang has been worked around by running in a new throwaway thread
  • IOtests expected output has been fixed for recent gnutls changes
  • Error reporting has been improved for unsupported cipher modes
  • Memory leak fixed when dealing with unsupported cipher modes

Authorization subsystem

GUI

  • allocate shareable display memory on Unix
  • -display dbus now provides a Unix.Map interface, to share the display memory with the client
  • fix -display dbus discarding cursor updates
  • Fix handling of SASL authentication for VNC servers running on UNIX sockets
  • Terminate the VNC connection immediately if no SASL authentication mechanisms are available

GDBStub

  • fixed a bug that broke aarch64_be-linux-user

TCG Plugins

  • Deprecated for TCI backend
  • Deprecated for 32 bit hosts
  • Extended the memory API to provide the value used
  • Fixed a timer deadlock if time doesn't change
  • Fixed a bug in IPS plugin to avoid not changing time
  • Added cflow plugin
  • New memory API for reading vaddr
  • Added basic block vector plugin
  • fixed a race condition which can hit uninstalling plugins

Host support

Memory backends

Migration

  • Added QATZIP support for multifd compressors.
  • Fixed one multifd race condition crash (against received bitmap).
  • Non-deterministic EADDRINUSE problems initiating migration connections on OpenBSD have been fixed

Monitor

QMP

HMP

Network

Block device backends and tools

Tracing

Semihosting

Miscellaneous

User-mode emulation

runtime

binfmt_misc

alpha

arm/arm64/aarch64

  • aarch64_be-linux-user now has a test case

LoongArch

HPPA

s390

x86

TCG

LoongArch

Record/Replay

RISC-V

  • Supoort the RVV-1.0 extension to support vector operations on the host.

Guest agent

Build Information

Rust usage

Support for device models written in the Rust programming language has been added. It is considered experimental and not stable, and it is not recommended to be used for anything other than development. It is disabled by default and can be enabled by passing the flag --enable-rust to the configure script.

Future version of QEMU will require a Rust compiler and the bindgen tool to be installed. Right now the requirement is to have rustc of at least version 1.63.0 and bindgen of at least version 0.60.0. Compiling QEMU in distros with older version will require installing newer versions of the compiler (via rustup) and bindgen tool (via cargo install).

Adjustments to the minimum supported version of Rust and bindgen will be made according to QEMU's supported platform policy.

Configuration

  • The gitlab-runner ansible script has been updated

Host support

Docker Tweaks

  • Updated i686 and mipsel images to bookworm

Windows

Testing and CI

  • very basic testing was added for aarch64_be-linux-user

Known issues