ChangeLog/7.2: Difference between revisions

From QEMU
(slirp module)
 
(9 intermediate revisions by 6 users not shown)
Line 9: Line 9:
The "slirp" submodule / code (which is the code behind "-netdev user" / "-nic user") has been removed from the QEMU source tree, so you now need to install your distributions libslirp development package before compiling QEMU to get the user-mode networking feature included again. For example, if you see an error message like this:
The "slirp" submodule / code (which is the code behind "-netdev user" / "-nic user") has been removed from the QEMU source tree, so you now need to install your distributions libslirp development package before compiling QEMU to get the user-mode networking feature included again. For example, if you see an error message like this:


  <code>Parameter 'type' expects a netdev backend type</code>
  <code>network backend 'user' is not compiled into this binary</code>


... this might be caused by the missing "user" mode backend. In that case, please install libslirp first ("<code>dnf install libslirp-devel</code>" on Fedora and "<code>apt-get install libslirp-dev</code>" on Debian for example), recompile your QEMU with <code>--enable-slirp</code>, then try again.
... this might be caused by the missing "user" mode backend. In that case, please install libslirp first ("<code>dnf install libslirp-devel</code>" on Fedora and "<code>apt-get install libslirp-dev</code>" on Debian for example), recompile your QEMU with <code>--enable-slirp</code>, then try again.
Line 52: Line 52:


=== LoongArch ===
=== LoongArch ===
==== ISA ====
* Bstrins.w src register need EXT_NONE
* Fix fnm{sub/add}_{s/d} set wrong flags
* LogB(0) should raise divideByZero exception
* Add exception subcode
* Fix raise_mmu_exception() set wrong exception_index
* Adjust the layout of hardware flags bit fields
* Fix emulation of float-point disable exception
==== Machines ====
* Support fw_cfg dma function
* Add interrupt information to FDT table
* Add platform bus support
* Add hotplug handler for machine
* Add RAMFB device to dynamic_sysbus_devices list
* Fix acpi ged irq number in dsdt table
* Support memory hotplug
* Fix LoongArch ipi device emulation
* Convert the memops to with_attrs in LoongArch extioi
* Fix LoongArch extioi coreisr accessing
* Load FDT table into dram memory space
* Add TPM device
* Add default stdout uart in fdt


=== Microblaze ===
=== Microblaze ===
Line 106: Line 129:
=== s390x ===
=== s390x ===


* Fix emulation of LZRF instruction
* Fix emulation of the LZRF instruction
* Fix emulation of the VISTR instruction
* Fix emulation fo the SACF instruction (the bug was causing a crash with Java on Debian systems)
* Implement Message-Security-Assist Extension 5 (random number generation via PRNO instruction)
* Implement Message-Security-Assist Extension 5 (random number generation via PRNO instruction)
* Implement SHA-512 via KIMD/KLMD instructions
* Implement SHA-512 via KIMD/KLMD instructions
Line 120: Line 145:
==== TCG ====
==== TCG ====
* Performance improvements in full-system emulation
* Performance improvements in full-system emulation
* Fixes in SSE implementation
* Fixes and performance improvements in SSE implementation
* TCG support for AVX, AVX2, F16C, FMA3 and VAES instructions
* TCG support for AVX, AVX2, F16C, FMA3 and VAES instructions


Line 224: Line 249:


* The "slirp" submodule has been removed from the QEMU source tree. Use libslirp from your OS distribution instead.
* The "slirp" submodule has been removed from the QEMU source tree. Use libslirp from your OS distribution instead.
* New stream and dgram netdev backend


=== Block device backends and tools ===
=== Block device backends and tools ===
Line 248: Line 274:


=== LoongArch ===
=== LoongArch ===
* Fix struct statfs ABI on LoongArch64


=== Nios2 ===
=== Nios2 ===
Line 269: Line 296:


== Guest agent ==
== Guest agent ==
* Add FreeBSD support


== Build Information ==
== Build Information ==
=== SLIRP module (user-mode networking) ===
* starting with 7.2 release, qemu source does not include the slirp module anymore. If user-mode networking is needed, please use system libslirp (libslirp-devel or libslirp-dev) package, minimum version 4.7.


=== Python ===
=== Python ===
Line 287: Line 320:


=== Windows ===
=== Windows ===
* The DLL files which are required at runtime and which therefore have to be included in the installer are now detected automatically. It is no longer necessary to collect them manually.


=== Testing and CI ===
=== Testing and CI ===

Latest revision as of 14:27, 3 February 2023

System emulation

Incompatible changes

Consult the 'Removed features' page for details of suggested replacement functionality.

Removal of the "slirp" submodule (affects "-netdev user")

The "slirp" submodule / code (which is the code behind "-netdev user" / "-nic user") has been removed from the QEMU source tree, so you now need to install your distributions libslirp development package before compiling QEMU to get the user-mode networking feature included again. For example, if you see an error message like this:

network backend 'user' is not compiled into this binary

... this might be caused by the missing "user" mode backend. In that case, please install libslirp first ("dnf install libslirp-devel" on Fedora and "apt-get install libslirp-dev" on Debian for example), recompile your QEMU with --enable-slirp, then try again.

Semihosting calls from userspace

For some target architectures (arm, m68k, mips, nios2, riscv, xtensa) QEMU supports a "semihosting" style ABI where guest code can make calls to directly print messages, read and write host files, and so on. Handling of when this is enabled in system emulation has been made consistent across target architectures. By default it is not enabled; if enabled via the commandline "-semihosting" or "-semihosting-config enable=on" then it is only permitted from non-userspace guest code; if the new-in-7.2 "-semihosting-config userspace=on" option is given then it is also permitted from guest userspace. For some target architectures this is a change in behaviour: mips, nios2 and xtensa previously allowed userspace access by default, and riscv allowed all access by default. If you were using semihosting on these targets and relying on that previous default behaviour, you need to update your commandline to explicitly enable semihosting to the desired level.

Other removed features

  • The -watchdog option has been removed, use -device instead.
  • The PPC taihu machine has been removed, use ref405ep instead.

New deprecated options and features

  • Big endian 32-bit MIPS hosts are now deprecated due to lack of CI coverage.
  • The "--blacklist" command line option for the QEMU guest agent has been renamed to "--block-rpcs". The old name is still supported for now, but will be removed in the future; "-b" can be used on old and new versions alike.

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

  • The following CPU architecture features are now emulated:
    • FEAT_ETS (Enhanced Translation Synchronization)
    • FEAT_PMUv3p5 (PMU Extensions v3.5)
    • FEAT_GTG (Guest translation granule size)
    • FEAT_HAFDBS (Hardware management of the access flag and dirty bit state)
    • FEAT_E0PD (Preventing EL0 access to halves of address maps)
  • New emulated CPU types:
    • Cortex-A35

Machines

AVR

Hexagon

HPPA

LoongArch

ISA

  • Bstrins.w src register need EXT_NONE
  • Fix fnm{sub/add}_{s/d} set wrong flags
  • LogB(0) should raise divideByZero exception
  • Add exception subcode
  • Fix raise_mmu_exception() set wrong exception_index
  • Adjust the layout of hardware flags bit fields
  • Fix emulation of float-point disable exception

Machines

  • Support fw_cfg dma function
  • Add interrupt information to FDT table
  • Add platform bus support
  • Add hotplug handler for machine
  • Add RAMFB device to dynamic_sysbus_devices list
  • Fix acpi ged irq number in dsdt table
  • Support memory hotplug
  • Fix LoongArch ipi device emulation
  • Convert the memops to with_attrs in LoongArch extioi
  • Fix LoongArch extioi coreisr accessing
  • Load FDT table into dram memory space
  • Add TPM device
  • Add default stdout uart in fdt

Microblaze

MIPS

  • deprecated 32 bit big endian host

Nios2

OpenRISC

  • Stability improvements
  • Performance improvements by supporting MTTCG
  • New virt platform is added to assist with CI and device testing

PowerPC

Renesas RX

Renesas SH

RISC-V

ISA and Extensions

  • Update [m|h]tinst CSR in interrupt handling
  • Force disable extensions if priv spec version does not match
  • fix shifts shamt value for rv128c
  • move zmmul out of the experimental
  • Add checks for supported extension combinations
  • Fix typo and restore Pointer Masking functionality for RISC-V
  • Add mask agnostic behaviour (rvv_ma_all_1s) for vector extension
  • Add Zihintpause support
  • Add xicondops in ISA entry
  • Use official extension names for AIA CSRs
  • Fix the CSR check for cycle{h}, instret{h}, time{h}, hpmcounter3-31{h}
  • Improvements to the RISC-V debugger spec
  • Add disas support for vector instructions

Machines

  • virt: pass random seed to fdt
  • opentitan: bump opentitan version
  • virt machine device tree improvements
  • Allow setting the resetvec for the OpenTitan machine
  • Enable booting S-mode firmware from pflash on virt machine

Fixes and Misc

  • Upgrade OpenSBI to v1.1
  • microchip_pfsoc: fix kernel panics due to missing peripherals
  • Remove additional priv version check for mcountinhibit
  • Fixup register addresses for Ibex SPI
  • Cleanup the RISC-V virt machine documentation
  • Remove fixed numbering from GDB xml feature files
  • Priority level fixes for PLIC
  • Fixup TLB size calculation when using PMP

s390x

  • Fix emulation of the LZRF instruction
  • Fix emulation of the VISTR instruction
  • Fix emulation fo the SACF instruction (the bug was causing a crash with Java on Debian systems)
  • Implement Message-Security-Assist Extension 5 (random number generation via PRNO instruction)
  • Implement SHA-512 via KIMD/KLMD instructions
  • Enhanced zPCI interpretation support for KVM guests

SPARC

Tricore

x86

  • Support for passing a random seed to the Linux kernel when booted with -kernel
  • Support for the MSR_CORE_THREAD_COUNT MSR

TCG

  • Performance improvements in full-system emulation
  • Fixes and performance improvements in SSE implementation
  • TCG support for AVX, AVX2, F16C, FMA3 and VAES instructions

KVM

  • Support for the "notify vmexit" mechanism, preventing processor bugs from hanging the whole system, through the -accel kvm,notify-vmexit= and -accel kvm,notify-window= options

Xtensa

Device emulation and assignment

ACPI / SMBIOS

Audio

Block devices

Graphics

I2C

Controllers
Devices

Input devices

IPMI

Multi-process QEMU

Network devices

  • Fixed bug that could cause a stack or heap overflow with the emulated "tulip" NIC (CVE-2022-2962)

NVDIMM

NVMe

Emulated NVMe Controller

PCI/PCIe

SCSI

  • Support for setting CD-ROM block size using the physical-block-size property of the scsi-cd device.

SD card

SMBIOS

TPM

USB

VFIO

virtio

Xen

fw_cfg

9pfs

virtiofs

Semihosting

Audio

Character devices

  • UNIX socket support on Windows has been added

Crypto subsystem

  • LUKS block device headers are validated more strictly
  • Errors are correctly reported when failing to load PSK credentials on clients
  • Creating LUKS images is supported on macOS

Authorization subsystem

GUI

  • On macOS systems, the same QEMU binary can include both the Cocoa user interface and the SDL or GTK+ user interfaces.

GDBStub

TCG Plugins

Host support

Memory backends

  • When preallocating memory provided by a memory backend, it is now possible to specify the host CPUs (or alternatively the host nodes) to run the preallocation on via a user-creatable "thread-context" object. This allows for NUMA-aware preallocation, which can speed-up preallocation (and thereby VM creation time) significantly.

Migration

Monitor

QMP

HMP

Network

  • The "slirp" submodule has been removed from the QEMU source tree. Use libslirp from your OS distribution instead.
  • New stream and dgram netdev backend

Block device backends and tools

Tracing

Semihosting

Semihosting calls were generally not permitted for userspace guest code in system emulation. This can now be enabled with the "-semihosting-config userspace=on" option. Note that the usual remarks about semihosting apply -- because it permits direct guest access to the host filesystem, it should only be used with trusted guest binaries.

Miscellaneous

User-mode emulation

  • Dump failing executable on CPU exception
  • support for system calls pidfd_open(), pidfd_send_signal() and pidfd_getfd()
  • support for FUTEX_WAKE_BITSET and PI futexes
  • support for madvise(MADV_DONTNEED) on file mappings

build

binfmt_misc

Hexagon

LoongArch

  • Fix struct statfs ABI on LoongArch64

Nios2

HPPA

  • Increased guest stack to 80MB
  • Fix signal handling
  • Add vDSO emulation and thus avoid an executable stack
  • Changed guest memory layout like on real hppa kernel

x86

  • The qemu-i386 and qemu-x86_64 binaries now default to the 'max' CPU model instead of 'qemu32' / 'qemu64'
  • Support for saving/restoring SSE registers in signal frames in qemu-i386 (when FXSR is set in CPUID)
  • Support for saving/restoring XSAVE state in signal frames (when XSAVE is set in CPUID)

TCG backends

ARM

Guest agent

  • Add FreeBSD support

Build Information

SLIRP module (user-mode networking)

  • starting with 7.2 release, qemu source does not include the slirp module anymore. If user-mode networking is needed, please use system libslirp (libslirp-devel or libslirp-dev) package, minimum version 4.7.

Python

  • Python 3.7 or newer is now required.

GIT submodules

  • The libslirp library is not included in QEMU anymore. The development packages for libslirp must be installed in the system to build QEMU with user-mode networking support.

Container Based Builds

  • All containers are now "flat" containers (often generated by lci-tool)

VM Based Builds

Build Dependencies

  • Meson 0.61 or newer is now required. QEMU ships with Meson 0.61.5, which will be used if necessary.

Windows

  • The DLL files which are required at runtime and which therefore have to be included in the installer are now detected automatically. It is no longer necessary to collect them manually.

Testing and CI

Known issues