QEMU 9.0.0 Emulator Now Available for Download

Presented project release QEMU 9.0. 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 that of a hardware system due to direct execution of instructions on the CPU and the use of the Xen hypervisor or KVM module.

The project was originally created by Fabrice Bellard to provide the ability to run Linux executables compiled for the x86 platform on non-x86 architectures. Over the years of development, support for full emulation was added for 14 hardware architectures, the number of emulated hardware devices exceeded 400. In preparing version 9.0, more than 2,700 changes were made from 220 developers.

Advertisement

Key improvementsadded in QEMU 9.0:

  • The virtio-blk driver, which provides a virtual block device for virtual machines, has added support for a multi-level queuing system (multiqueue), which allows you to separate 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), has added support for the fork-follow mode, the siginfo:read operation, and intercepting system calls in user space.
  • Preallocation backends have been adapted to work in multi-threaded mode and can now simultaneously process requests from multiple threads. .
  • The “mapped-ram” mode has been added to virtual machine migration tools, which increases the efficiency of creating snapshots of virtual machines. Improved definition zero memory page, which made it possible to significantly speed up the migration of inactive virtual machines if the system supports multifd. When migrating based on VFIO (Virtual Function I/O), support for restarting from a saved state (checkpoint-restart) is implemented.
  • The implementation of the ESP SCSI device (am53c974/dc390) has been rewritten.
  • Added encryption algorithm support SM4 and the ability to use it in the 'luks' block device driver is provided.
  • 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 ECV (Enhanced Counter Virtualization), NV (Nested Virtualization) and NV2 (Enhanced Nested Virtualization) processor extensions. The capabilities of the Freescale i.MX6, Allwinner R40, Bananapi, Raspberry Pi, npcm7xx and virt board emulators have been expanded.
  • The RISC-V architecture emulator now supports the Zacas, amocas, RVA22, Zaamo, Zalrsc, and Ztso instruction set architecture extensions. RISC-V virtual machines support SMBIOS. ACPI support is implemented for SRAT, SLIT, AIA and PLIC. Updated support for RHCT tables.
  • The SeaBIOS-hppa firmware has been updated to version 16 in the HPPA architecture emulator. 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 implements support for vector extensions of the LSX/LASX instruction set.
  • The s390x architecture emulator has added support for CVDG, CVB, CVBY and CVBG instructions. LAE (Load Address Extended) emulation has been improved.
  • The nubus-virtio-mmio device has been added to the 68k architecture emulator, allowing access to virtio devices from q800 machines.
  • An assembly with the '-fzero-call-used-regs' flag is provided, 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 is a build 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 in the future they plan to raise this bar to version 4.19. Support for using 32-bit Windows as host OS has been discontinued.
  • Added support for OpenBSD 7.4.

Thanks for reading:

Advertisement