The release of the QEMU 10.0.0 project has been presented. As an emulator, QEMU allows you to run a program compiled for one hardware platform on a system with a completely different architecture, for example, run an ARM application on an x86-compatible PC. In virtualization mode in QEMU, the performance of code execution in an isolated environment is close to the hardware system due to the direct execution of instructions on the CPU and the use of the Xen hypervisor or the KVM module in Linux, or the NVMM module in NetBSD.
The project was originally created by Fabrice Bellard to allow Linux executables built for the x86 platform to run on non-x86 architectures. Over the years of development, full emulation support has been added for 14 hardware architectures, the number of emulated hardware devices has exceeded 400. In preparation for version 10.0, more than 2800 changes have been made from 211 developers.
Key improvements added in QEMU 10.0:
- The virtio-scsi driver provides a virtual SCSI controller (SCSI Host Bus Adapter) for virtual machinesSupport for a multi-level queuing system (multiqueue) has been added, allowing queues to be separated for different block devices to support multi-threaded access on multi-core systems (different queues for a single drive can be processed by different I/O threads). Compared to the virtual block device driver (virtio-blk), the virtual SCSI controller is slightly slower in performance, but allows the use of more than 28 drives.
- VFIO (Virtual Function I/O) has improved IGD (Integrated Graphics Device) passthrough support for integrated GPUs used in 11th (Rocket Lake) and 12th (Alder Lake) generations of Intel processors. Added support for older ATI GPUs (x550). Implemented basic support for PCI PM (Power Management).
- The documentation for the QEMU Machine Protocol (QMP), which allows applications to control QEMU, has been significantly revised and expanded.
- A new Live Migration mode "cpr-transfer" (CheckPoint and Restart) has been added, allowing a guest to be moved to a new QEMU instance running on the same host. The mode minimizes downtime by mapping the guest's memory to the virtual address space of the new QEMU without copying its contents.
- Added 'apple-gfx-pci' and 'apple-gfx-mmio' graphics devices, which use the ParavirtualizedGraphics framework provided by macOS for hardware-accelerated graphics in guests. The former driver is intended for use on x86-64 devices, and the latter for ARM64.
- The x86 architecture emulator now supports Intel Xeon Clearwater Forest and Sierra Forest v2 processor models. Emulation of string manipulation instructions has been accelerated.
- The ARM architecture emulator now supports the NPCM8445 Evaluation and i.MX 8M Plus EVK boards. Emulation of the FEAT_AFP, FEAT_RPRES, and FEAT_XS extensions, as well as EL2 physical and virtual timers, has been added. Support for Arm PXA2xx CPUs and emulation of iwMMXt instructions have been deprecated.
- The RISC-V architecture emulator implements emulation of Microblaze V boards, Ascalon CPUs, and RV64 Xiangshan Nanhu CPUs. Added support for the 'svukte', 'ssstateen', 'smrnmi', 'smdbltrp'/'ssdbltrp', 'supm', 'sspm' instruction set architecture extensions, as well as IOMMU translation tags and riscv-iommu-sys devices.
- The HPPA architecture emulator provides emulation of Diva GSP BMC boards. The SeaBIOS-hppa firmware has been updated to version 18. The translation speed has been increased. The code for resetting the virtual CPU has been improved. On 64-bit systems, emulation of configurations with a memory size of up to 256 GB has been provided.
- The LoongArch architecture emulator now supports CPU hotplugging. A paravirtualized IPI (inter-processor interrupt) has been implemented. Hypervisor resource allocation timeout tracking has been implemented. KVMAdded support for virtual routing of external interrupts (extioi).
- The s390x architecture emulator now supports the 17th generation of mainframe CPUs and implements virtio-mem support. To improve performance, the ability to interact with PCI devices bypassing the IOMMU has been added.
Source: opennet.ru
