QEMU

Father

Professional
Messages
1,990
Reputation
4
Reaction score
527
Points
113
The release of the QEMU 9.0 project is presented. As an emulator, QEMU allows you to run a program built 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, code execution performance 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 KVM module.

Initially, the project was created by Fabrice Bellard to provide the ability to run Linux executables built for the x86 platform on architectures other than x86. Over the years of development, full emulation support has been added for 14 hardware architectures, and the number of emulated hardware devices has exceeded 400. During the preparation of version 9.0, more than 2,700 changes were made from 220 developers.

Key improvements added in QEMU 9.0:

* The virtio-blk driver, which provides a virtual block device for virtual machines, adds support for a multi-level queue system (multiqueue), which allows you to split queues for different block devices to provide multi-threaded access on multi-core systems (different queues of the same disk can be processed by different I/O threads).

* Added support for the 'backend_defaults', 'logical_block_size', 'physical_block_size', 'min_io_size', 'opt_io_size' and 'discard_granularity'properties in the usb-storage block device.

* The gdbstub library, designed for remote debugging in GDB using the RSP (Remote Serial Protocol) protocol, now supports fork-follow mode, siginfo:read operation, and user-space system call interception.

* Preallocation backends have been adapted to work in multithreaded mode and can now process requests from multiple threads simultaneously.

* The "mapped-ram" mode has been added to the tools for migrating virtual machines, which increases the efficiency of creating snapshots of virtual machines. Improved memory zero page detection, which significantly speeds up the migration of inactive VMs when the system supports multifd. When migrating based on VFIO (Virtual Function I/O), support for restarting from a saved state (checkpoint-restart) is implemented.

* Rewritten the ESP SCSI device implementation (AM53C974/DC390).

* Added support for the SM4 encryption algorithm and enabled its use in the 'luks' block device driver.

* Added support for creating and using files with saved LUKS headers to the 'luks' driver.

* The ARM architecture emulator supports L475E-IOT01A IoT, mp3-an536 (MPS3 with AN536 firmware) and raspi4b (Raspberry Pi 4 Model B) boards. Added support for emulating the ECV (Enhanced Counter Virtualization), NV (Nested Virtualization), and NV2 (Enhanced Nested Virtualization) processor extensions. Features of Freescale i.MX6, Allwinner R40, Bananapi, Raspberry Pi, npcm7xx, and virt card emulators have been expanded.

* Added support for Zacas, amocas, RVA22, Zaamo, Zalrsc, and Ztso instruction set architecture extensions to the RISC-V architecture emulator. RISC-V VMs support SMBIOS. ACPI support is implemented for SRAT, SLOT, AIA, and PLIC. Updated support for RHCT tables.

* Updated the SeaBIOS-hppa firmware in the HPPA architecture emulator to version 16. The maximum memory size has been increased from 3 GB to 3840 MB. Added support for the "--nodefaults" option.

* The LoongArch architecture emulator now supports KVM acceleration and supports vector extensions to the LSX/LASX instruction set.

* Added support for CVDG, CVB, CVBY, and CVBG instructions in the s390x architecture emulator. Improved LAE (Load Address Extended) emulation.

* A nubus-virtio-mmio device has been added to the 68k architecture emulator, allowing access to virtio devices from q800 machines.

* Provided an assembly with the '-fzero-call-used-regs ' flag, which allows you to protect against information leakage from functions and reduce the number of blocks suitable for building ROP gadgets (Return-Oriented Programming) in exploits. Also added an assembly with the '-ftrivial-auto-var-init=zero ' flag to automatically initialize all variables stored on the stack to zero.

* Running QEMU with KVM now requires at least a Linux 4.4 kernel. For ARM hosts, this bar is planned to be raised to version 4.19 in the future.Support for using 32-bit Windows as host oss has been discontinued.

* Added support for OpenBSD 7.4.
 
Top