Została wydana wersja projektu QEMU 7.0. Jako emulator QEMU umożliwia uruchomienie programu skompilowanego dla jednej platformy sprzętowej na systemie o zupełnie innej architekturze, na przykład uruchomienie aplikacji dla ARM na komputerze kompatybilnym z x86. W trybie wirtualizacji w QEMU wydajność wykonania kodu w izolowanym środowisku jest zbliżona do systemu sprzętowego dzięki bezpośredniemu wykonywaniu instrukcji na CPU i wykorzystaniu hipernadzorcy Xen lub modułu KVM.
Projekt został pierwotnie stworzony przez Fabrice'a Bellarda w celu zapewnienia możliwości uruchamiania skompilowanych plików wykonywalnych Linux dla architektury x86 na architekturach innych niż x86. W ciągu lat rozwoju dodano pełne wsparcie dla 14 architektur sprzętowych, a liczba emulowanych urządzeń sprzętowych przekroczyła 400. Przy przygotowywaniu wersji 7.0 wprowadzono ponad 2500 zmian od 225 programistów.
Kluczowe ulepszenia dodane w QEMU 7.0:
- W emulatorze architektury x86 dodano wsparcie dla zestawu instrukcji Intel AMX (Advanced Matrix Extensions), zaimplementowanych w serwerowych procesorach Intel Xeon Scalable. AMX oferuje nowe konfigurowalne rejestry TMM „TILE” oraz instrukcje manipulacji danymi w tych rejestrach, takie jak TMUL (Tile matrix MULtiply) do mnożenia macierzy.
- Umożliwiono rejestrowanie zdarzeń ACPI z systemu gościa przez interfejs ACPI ERST.
- W module virtiofs, używanym do przekazywania części systemu plików hosta do systemu gościa, ulepszono wsparcie dla etykiet bezpieczeństwa (security label). Naprawiono lukę CVE-2022-0358, która umożliwiała podniesienie swoich uprawnień w systemie poprzez tworzenie plików wykonywalnych w katalogach przekazywanych przez virtiofs, należących do innej grupy i oznaczonych flagą SGID.
- Zwiększono elastyczność tworzenia kopii zapasowych aktywnych systemów obrazów (tworzony jest zrzut, a następnie do aktualizacji stanu zrzutu stosowany jest filtr copy-before-write (CBW), który kopiuje dane z obszarów, w które system gościa wykonuje zapis). Dodano wsparcie dla obrazów w formatach innych niż qcow2. Zapewniono możliwość dostępu do zrzutu z kopią zapasową nie bezpośrednio, lecz poprzez sterownik urządzenia blokowego snapshot-access. Rozszerzono możliwości zarządzania filtrze CBW, na przykład można wyłączyć z przetwarzania określone mapy bitowe.
- W emulatorze ARM dla maszyn 'virt' dodano wsparcie dla virtio-mem-pci, definiowania topologii CPU dla systemu gościa i włączenia PAuth podczas korzystania z hypervisora. KVM Z akceleratorem hvf. W emulatorze płyt 'xlnx-versal-virt' dodano wsparcie dla PMC SLCR oraz emulacji kontrolera pamięci Flash OSPI. Dla emulowanych maszyn 'xlnx-zynqmp' dodano nowe modele zarządzania CRF i APU. Dodano emulację rozszerzeń FEAT_LVA2, FEAT_LVA (duża przestrzeń adresowa wirtualna) oraz FEAT_LPA (duża przestrzeń adresowa fizyczna).
- W klasycznym generatorze kodu TCG (Tiny Code Generator) zakończono wsparcie dla hostów z CPU ARMv4 i ARMv5, w których brakuje wsparcia dla niewyrównanego dostępu do pamięci i brakuje RAM do uruchomienia QEMU.
- W emulatorze architektury RISC-V dodano wsparcie dla hypervisora KVM oraz zrealizowano rozszerzenia wektorowe Vector 1.0, a także instrukcje Zve64f, Zve32f, Zfhmin, Zfh, zfinx, zdinx i zhinx{min}. Dla emulowanych maszyn 'spike' dodano wsparcie dla ładowania plików binarnych OpenSBI (RISC-V Supervisor Binary Interface). Dla emulowanych maszyn 'virt' zrealizowano możliwość użycia do 32 rdzeni procesora oraz wsparcie AIA.
- W emulatorze architektury HPPA zapewniono możliwość użycia do 16 vCPU i ulepszono sterownik graficzny dla użytkowych środowisk HP-UX VDE/CDE. Dodano możliwość zmiany kolejności ładowania dla urządzeń SCSI.
- W emulatorze architektury OpenRISC dla płyt 'sim' dodano wsparcie dla użycia do 4 rdzeni CPU, ładowania zewnętrznego obrazu initrd oraz automatycznego generowania drzewa urządzeń dla ładowanego jądra.
- W emulatorze architektury PowerPC dla emulowanych maszyn 'pseries' zrealizowano możliwość uruchamiania systemów gości pod zarządzaniem zagnieżdżonego hypervisora KVM. Dodano wsparcie dla urządzenia spapr-nvdimm. Dla emulowanych maszyn 'powernv' dodano wsparcie dla kontrolera przerwań XIVE2 i kontrolerów PHB5, poprawiono wsparcie dla XIVE oraz PHB 3/4.
- W emulatorze architektury s390x dodano wsparcie dla rozszerzeń z15 (zestaw rozszerzeń instrukcji ogólnych 3).
Źródło: opennet.ru
