ChangeLog/3.1
System emulation
Incompatible changes
- The "qemu-system-ppcemb" target has been removed. "qemu-system-ppc" or "qemu-system-ppc64" should be used instead.
- The "tls", "x509", and "x509verify" options to "-vnc" have been removed. The "tls-creds" option should be used instead to point to a "tls-creds-x509" object created using "-object"
- The -drive options "cyls", "heads", "secs", "trans", "addr" and "serial" have been removed. The corresponding options of the "-device" parameter have to be used instead now.
- The "-balloon" option has been removed since it is replaced by "-device virtio-balloon" now.
- The "-nodefconfig" option has been removed. Use "-no-user-config" instead.
- The "-startdate", "-localtime" and "-rtc-td-hack" options have been removed. Use the corresponding parameters of "-rtc" instead.
- The "-tftp", "-bootp", "-redir" and "-smb" options have been removed. Use the corresponding parameters of "-nic" or "-netdev" instead.
- The "ssi-sd" device cannot be created anymore with "-device". This could be changed again in the future.
- x86 machines cannot be live-migrated if nested Intel virtualization is enabled. The next version of QEMU will be able to do live migration when nested virtualization is enabled, if supported by the kernel.
New deprecated options and features
- The '-machine enforce-config-section' parameter is replaced by the '-global migration.send-configuration' option.
- The 'name' parameter of the '-net' option is a synonym for the 'id' parameter, which should now be used instead.
- The 'hub_id name' parameter tuple of the 'hostfwd_add' and 'hostfwd_remove' HMP commands has been replaced by 'netdev_id'.
- The PowerPC target 'prep' machine type should be replaced by the '40p' machine type.
- Parsing of key,value pair filenames for the RBD block device
- Incorrect CPU topologies specified by -smp socket,core,thread options that are describing number of VCPUs not equal to 'maxcpus'
Consult the "Deprecated Features" appendix for the full list of historically deprecated features/options.
Alpha
68k
Arm
- New microbit machine model (initially the only supported device is the UART; more complete device support is planned for the next release)
- Support for the ARMv6M architecture and the Cortex-M0 CPU
- New virtual Xilinx Versal machine model: "xlnx-versal-virt"
- implement some missing hypervisor trap bits in HCR register
- New CPU model: Cortex-A72
- Implement emulation of ARMv8M hardware stack limit checking
- Support Scalable Vector Extension in system emulation mode
- Implement some devices previously missing from mps2-an505 board
- raspi: Support virtual framebuffer/viewport in display device
- Add model of Freescale i.MX6 UltraLite 14x14 EVK Board
- Support execution from small (<1K) MPU regions for M-profile
- GICv2: implement the virtualization extensions
- Emulation of AArch32 virtualization ("Hyp mode") is now supported and enabled on the Cortex-A7 and Cortex-A15
HPPA
Microblaze
MIPS
- Support for nanoMIPS I7200 emulation.
- Support for MXU.
Nios2
OpenRISC
PowerPC
- prep: Deprecate QEMU PReP machine in favour of the 40p machine
- 40p: switch firmware from Open HackWare to OpenBIOS
- 40p: fix IRQ routing to enable the Linux sandalfoot zImage to boot
- Mac Old World/New World: add support for booting from virtio-blk-pci devices (QEMU/OpenBIOS)
RISC-V
s390
- support for vfio-ap (s390 crypto devices)
- KVM host kernel needs to be 4.20+
- remove deprecated 's390-squash-mcss' option
- add 'max' cpu model
KVM
- add support for etoken facility
- add support for huge page backing
TCG
- add support for instruction flags and AFP registers
SH
SPARC
- sun4u: add support for boot from virtio-blk-pci block devices (QEMU/OpenBIOS)
TileGX
Tricore
x86
- Multi-threaded TCG is now supported.
- Documented recommendations for choosing CPU models to ensure good performance and security of x86 guests.
- New CPU models IceLake-Server and IceLake-Client.
- Add CPU flag stibp(Single Thread Indirect Branch Predictors)
KVM
- Support for Hyper-V enlightened VMCS.
HVF
- Instruction emulation has been improved.
Xtensa
- Full-system emulation can now read from the semihosting cemihosting.
Device emulation and assignment
ACPI
Audio
Block devices
Graphics
- stdvga and bochs-display devices can expose EDID information to the guest. The new xres and yres properties of stdvga are exposed in the EDID information.
Input devices
IOMMU
- Support for AMD IOMMU interrupt remapping and guest virtual APIC mode.
IPMI
Network devices
NVDIMM
PCI/PCIe
SCSI
SMBIOS
TPM
USB
VFIO
virtio
Xen
fw_cfg
9pfs
Audio
Character devices
- pty serial device is available on macOS.
Crypto subsystem
- The XTS cipher mode performance has been approximately doubled
GUI
- The GTK+ interface can choose a "zoom to fit" mode from the command line, via "-display gtk,zoom-to-fit=[on|off]".
Host support
Memory backends
Monitor
- New commands "sync-profile" and "info sync-profile" enable profiling of mutex contention and condvar waiting. Profiling can also be enabled with the -enable-sync-profile option on the command line.
Migration
Network
Block devices and tools
- The "qemu-img convert" command handling of secrets has been fixed, allowing creation of LUKS encrypted target files.
- Fixes in dirty bitmap handling and NBD exports to enable a demonstration of proposed libvirt virDomainBackupBegin() API for driving incremental backups.
Tracing
Miscellaneous
User-mode emulation
- Improvements to netlink emulation.
- Support for usbfs ioctls.
- xtensa-linux-user support the bFLT format.
TCG
- A long-standing limitation on TCG that prevented it from being able to execute from anything other than plain RAM or ROM has been lifted. This means that the error "qemu: fatal: Trying to execute code outside RAM or ROM" will no longer occur. Note that in the vast majority of cases this error was the result of a guest bug or user misconfiguration -- in this situation QEMU will now correctly emulate a guest that has run off into nowhere, so instead you will see "guest has hung, producing no output".
Guest agent
- guest-get-fsinfo can return disk serial numbers and, on Linux, device paths.
Build Information
Build Dependencies
- Support for the GTK2 display frontend has been removed. GTK3 should be used instead
- The minimum Python version is now 2.7. The next release of QEMU should remove Python 2.x support.
- The minimum GTK3 version is now 3.14.0
- The minimum GNUTLS version is now 3.1.18
- The minimum libgcrypt version is now 1.5.0
- The minimum nettle version is now 2.7.1
- The minimum libseccomp version is now 2.2.0.
- libudev is now an optional dependency for qemu-ga.
Known issues
- see Planning/3.1