QEMU 5.2 has been released , and this new version includes over 3200 changes from 216 developers , including live migration support for RISC-V, experimental support for the RISC-V hypervisor, support for more boards, and much more.
For those unfamiliar with QEMU, it is an emulator that allows you to run a program created for one hardware platform on a system with a completely different architecture , for example, running an ARM application on an x86 compatible PC.
In virtualization mode in QEMU, the performance of running code in an isolated environment is close to the hardware system due to direct execution of instructions on the CPU and the use of the Xen hypervisor or the KVM module.
Main novelties of QEMU 5.2
The build system has changed; compiling QEMU now requires the ninja toolkit to be installed.
Support was added for the block device driver to use the qemu-storage-daemon process in the background as a backend for vhost-user-blk, as well as a new QMP command 'block-export-add', which replaces the 'nbd-server-add' command and provides support for 'qemu-storage-daemon'.
For qcow2 images, support for extended L2 registers has been added, allowing space to be allocated by incomplete groups (subclusters). To enable L2 when creating an image, you must specify the option "extended_l2 = on".
Also noteworthy is the improved support for using qemu as an NBD client, as it reduces the number of situations that lead to timeouts when exchanging data over the network, causing guest blocking. Qemu-nbd provides the ability to specify multiple '-B name' options to specify multiple dirty bitmaps at once.
Another important change is the new high-performance migration mode with encrypted data transfer using TLS and multifd. The default migration bandwidth limit has been increased to 1 Gbps.
The migration parameter 'block-bitmap-mapping' has been added, allowing for more granular control over which bitmaps are transferred during migration. This parameter works even if the hostnames differ from the source at the receiving end.
In addition, new 'calc-dirty-rate' and 'query-dirty-rate' calls were added to predict the update rate during migration, taking into account the load associated with operations in RAM.
We will also find support for the mp2-an386, mp2-an500, raspi3ap (Raspberry Pi 3 model A+), raspi0 (Raspberry Pi Zero), raspi1ap (Raspberry Pi A+) and npcm750-evb/quanta-gsj boards.
For the AArch32 architecture, support for the ARMv8.2 FEAT_FP16 (medium precision flaoting point) extensions is implemented.
Finally, new options to virtiofsd are also mentioned for controlling the rendering of extended xattr attribute names on the guest system, the separate connection of partitions with different mount points on the host system, and also for specifying a sandbox isolation mechanism that is an alternative to pivot_root.
And live migration support to the RISC-V architecture emulator, as well as experimental hypervisor support for RISC-V updated to version 0.6.1. Added support for NUMA sockets on virt/Spike systems.
Other notable changes in this new version include:
- The guest-get-devices, guest-get-disks, and guest-ssh- {get, add-remove} -authorized-keys commands have been added to the QEMU guest agent (qemu-ga).
- Added support for kvm-steal-time based accounting.
- The HPPA architecture emulator supports booting NetBSD and very old Linux distributions, such as Debian 0.5 and 0.6.1.
- The PowerPC architecture emulator has improved support for user-defined spacing for the NUMA topology.
- The s390 architecture emulator for KVM added support for 0x318 diagnostic instructions.
- The classic code generator TCG (Tiny Code Generator) implements support for additional z14 instructions.
- On vfio-pci devices, information about the actual computer functionality is provided instead of the emulated features.
- The Xtensa architecture emulator adds support for the DFPU coprocessor with single and double precision floating point opcodes.