ChangeLog/4.1
System emulation
Incompatible changes
New deprecated options and features
- The "-virtfs_synth" option is now deprecated. Please use "-fsdev synth" and "-device virtio-9p-..." instead.
Consult the "Deprecated Features" appendix for the full list of historically deprecated features/options.
Alpha
68k
Arm
- QEMU now supports emulating an FPU for Cortex-M CPUs, and the Cortex-M4 and Cortex-M33 now provide the FPU.
- The Cortex-R5F now correctly provides an FPU with registers D0-D15 only, rather than incorrectly providing also D16-D31.
- The build config files have been switched to the new Kconfig system, so that a QEMU with individual boards can be built more easily.
- The ARMv8.5-RNG extension is supported, for cpu generated random numbers.
- The Exynos4210 SoC model now supports the PL330 DMA controllers.
- Some bugs in handling of GICv3 ICC_CTLR_EL3 and ICH_VMCR_EL2 register writes have been fixed.
- The built-in bootloader now handles loading AArch64 kernel Image files which are larger than 128MB.
- The GICv3 now correctly reports GICD_TYPER.SecurityExtn as 0 if GICD_CTLR.DS is 1.
HPPA
Microblaze
MIPS
- Marking referenced memory pages as executable is improved (it is restricted to necessary cases only).
- Emulation of MSA ASE instructions on big endian hosts is fixed for instructions LD.<B|H|W|D>, ST.<B|H|W|D>, COPY_S.<B|H|W|D>, COPY_U.<B|H|W>, and INSERT.<B|H|W|D>.
- The 'division by zero' cases in MSA ASE instructions DIV_<U|S>.<B|H|W|D> and MOD_<U|S>.<B|H|W|D> are now handled in QEMU and on the reference hardware the same way.
Nios2
OpenRISC
PowerPC
- NVIDIA V100 GPU/NVLink2 passthrough for spapr using VFIO PCI
- The TCG implementation of the Power9 DARN instruction now produces random numbers, instead of indicating failure.
- pseries machine now supports KVM acceleration (kernel_irqchip=on) of the XIVE interrupt controller
- pseries now defaults to XIVE interrupt controller if using pseries-4.1 machine version, POWER9 cpu and a guest OS which supports it
- pseries now supports hot-plug of PCI bridges and hot-plug and unplug of devices under PCI bridges
- powernv now supports dumping the device tree with the "dumpdtb" machine option
RISC-V
- Arbitrary bits in SIP can no longer be set.
- A new "spike" machine has been defined, with the old machines being deprecated.
- sfence.vma can no longer execute from userspace.
- Single-stepping over branches and jumps now works.
- A handful of illegal instructions (all compressed) are now handled correctly, as opposed to being treated as NOPs.
s390
- The bios now supports IPL (boot) from ECKD DASD assigned to the guest via vfio-ccw.
- The bios now tolerates the presence of bootmap signature entries written by zipl.
- All Vector Instructions introduced with the "Vector Facility" have been implemented for TCG.
- The "Vector Facility" is now indicated in the "qemu" cpu model, which has been updated to a stripped-down z13.
- More facilities and gen15 machines (official name not yet known) have been added to the cpu model.
SH
SPARC
TileGX
Tricore
x86
- New Hygon Dhyana CPU model
- The
host-cache-info
CPU option now affects the TOPOEXT CPUID leaf (0x8000001D) - The RDRAND extension is implemented for TCG.
Xtensa
Device emulation and assignment
ACPI
Audio
Block devices
GPIO
- SiFive's GPIO controller is now supported.
Graphics
Input devices
IPMI
Network devices
NVDIMM
PCI/PCIe
SCSI
SMBIOS
TPM
USB
VFIO
virtio
Xen
fw_cfg
9pfs
Semihosting
- semihosting output can now be redirected to a chardev backend with -semihosting-config enable=on,target=native,chardev=[ID]
Audio
Character devices
Crypto subsystem
GUI
- virtio-gpu 2d/3d rendering may now be offloaded to an external vhost-user process, such as QEMU vhost-user-gpu. Use vhost-user-vga & vhost-user-gpu-pci for associated devices. See patch series.
Host support
Memory backends
- QEMU will automatically try to use the
MAP_SYNC
mmap
flag for memory backends configured withpmem=on,share=on
Monitor
query-qmp-schema
now supports feature flags. Intended use is signalling some change that would otherwise be invisible in introspection. For details, see docs/devel/qapi-code-gen.txt.
Migration
Network
Block device backends and tools
- Added a
--salvage
option toqemu-img convert
, which prevents the conversion process from aborting on I/O errors. This can be used for example to salvage partially corrupted qcow2 files. - The SSH block driver switches from using libssh2 to libssh
qemu-img rebase
works now even when the input file doesn't have a backing file yet- The backup block job now accepts any source node
qemu-nbd
now supports a --pid-file option, writing its pid into that file after other initialization is complete- QAPI schema introspection exposes the feature
dynamic-auto-read-only
for the typeBlockdevOptionsFile
to signal that for thefile
driver,auto-read-only=on
is not only a static fallback to read-only when opening the file, but dynamically reopens the file read-only or read-write as needed (the behaviour changed already in 4.0, this adds introspection for it). - The VMDK block driver now has read-only support for the seSparse subformat
Tracing
Miscellaneous
- Unless QEMU is configured with
--disable-blobs
,make install
will install UEFI platform firmware binaries, and matching variable store templates, at$prefix/share/qemu/edk2-*.fd
.- These files are built from the edk2 project's ArmVirtPkg and OvmfPkg firmware platforms, and the edk2 project's OpenSSL and Berkeley SoftFloat submodules.
- They are documented (and exposed to virt management applications) through JSON files in
$prefix/share/qemu/firmware/
. - The schema definition for the JSON descriptors is located at
docs/interop/firmware.json
in the QEMU source tree.
User-mode emulation
Alpha
- Fix for linux-user emulation of fp exceptions (launchpad bug 1701835)
TCG
- aarch64 and alpha softmmu test harnesses have been added
- gdbstub now supports custom gdb maint packet support for physical address mode
Guest agent
Build Information
The configure argument --source-path
has been removed. This argument used to be provided to allow the user to specify that the source tree was in a different location from the configure script itself. This odd way of building is no longer supported, and we always assume that the source tree is where the configure script is. (Note that a separate build tree is still permitted -- the build tree is the working directory in which configure is run.)
Python
- Build and test scripts will now use the
python3
binary by default if available
GIT submodules
Build Dependencies
- The SSH block driver now requires libssh instead of libssh2
Known issues
- see Planning/4.1