Представен е релизът на проекта QEMU 7.1. Като емулатор QEMU позволява стартиране на програма, компилирана за една апаратна платформа, на система с напълно различна архитектура, например, да изпълнява приложение за ARM на x86-съвместим PC. В режим на виртуализация производителността на изпълнявания код в изолирана среда е близка до тази на апаратната система благодарение на директното изпълнение на инструкциите на CPU и ангажиране на хипервизора Xen или модула KVM.
Първоначално проектът е създаден от Фабрис Беллар (Fabrice Bellard) с цел да осигури възможност за стартиране на компилирани за платформата x86 изпълними файлове Linux на архитектури, различни от x86. С течение на годините на развитие е добавена поддръжка на пълна емуляция за 14 апаратни архитектури, а числото на емулираните апаратни устройства е надхвърлило 400. При подготовката на версия 7.1 бяха внесени над 2800 изменения от 238 разработчици.
Ключови подобрения, добавени в QEMU 7.1:
- На платформата Linux е реализирана опцията zero-copy-send, която позволява организиране на прехвърляне на страници памет при живо мигриране без междинно буфериране.
- В QMP (QEMU Machine Protocol) е добавена възможността за използване на командата block-export-add за експортиране на образи NBD с данни за страниците в състояние ‘dirty’. Също така са добавени нови команди ‘query-stats’ и ‘query-stats-schema’ за извличане на статистика от различни подсистеми на QEMU.
- В агента за гост системи е подобрена поддръжката на платформата Solaris и са добавени нови команди ‘guest-get-diskstats’ и ‘guest-get-cpustats’ за показване на състоянието на дисковете и CPU. В командата ‘guest-get-disks’ е добавен изход на информация от NVMe SMART, а в командата ‘guest-get-fsinfo’ изход на данни за типа на шината NVMe.
- Добавен е нов емулатор LoongArch с поддръжка на 64-битовия вариант на архитектурния набор от команди LoongArch (LA64). Емулаторът поддържа процесори Loongson 3 5000 и северни мостове Loongson 7A1000.
- В емулатора ARM са реализирани нови типове емулирани машини: Aspeed AST1030 SoC, Qaulcomm и AST2600 / AST1030 (fby35). Добавена е поддръжка за емулация на CPU Cortex-A76 и Neoverse-N1, както и разширения на процесора SME (Scalable Matrix Extensions), RAS (Reliability, Availability, Serviceability) и команди за блокиране на утечки от вътрешния кеш по време на спекулативното изпълнение на инструкции на CPU. За машините ‘virt’ е реализирана емулация на контролера на прекъсвания GICv4.
- В емулатора на архитектурата x86 за KVM Добавена поддръжка на виртуализация на механизма за проследяване LBR (Last Branch Record).
- В емулатора на архитектурата HPPA е предложен нов фърмуер на базата на SeaBIOS v6, който поддържа използването на PS/2 клавиатура в менюто за зареждане. Подобрена е емулцията на последователния порт. Добавени са допълнителни шрифтове за конзолата STI.
- В емулатора на архитектурата MIPS за платки Nios2 (-machine 10m50-ghrd) е реализирана емулция на векторния контролер на прекъсванията (Vectored Interrupt Controller) и тендовото набора от регистри. Подобрена е обработката на изключения.
- В емулатора на архитектурата OpenRISC за машината ‘or1k-sim’ е добавена възможността за използване на до 4 UART устройства 16550A.
- В емулатора на архитектурата RISC-V е добавена поддръжка на нови разширения на набор от команди (ISA), определени в спецификация 1.12.0, както и поддръжка на разширението Sdtrig и подобрена подкрепа за векторни инструкции. Разширени са възможностите за отстраняване на грешки. В емулирана машина ‘virt’ е добавена поддръжка за TPM (Trusted Platform Module), а в машината ‘OpenTitan’ — поддръжка за Ibex SPI.
- В емулатора на архитектурата 390x е осигурена поддръжка за разширения VEF 2 (Vector-Enhancements Facility 2). В s390-ccw BIOS е реализирана възможността за зареждане от дискове, които имат размер на сектора, различен от 512 байта.
- В емулатора на архитектурата Xtensa е добавена поддръжка за ядра lx106 и обектни кодове за тестване на кеша.
Източник: opennet.ru
