Wydanie projektu QEMU 7.1 zostało ogłoszone. Jako emulator QEMU pozwala na 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 wydajności systemu sprzętowego dzięki bezpośredniemu wykonywaniu instrukcji na CPU oraz wykorzystaniu hipernadzorcy Xen lub modułu KVM.
Projekt został pierwotnie stworzony przez Fabrice'a Bellarda w celu umożliwienia uruchamiania plików wykonywalnych Linux skompilowanych dla platformy x86 na architekturach innych niż x86. W ciągu lat rozwoju dodano wsparcie dla pełnej emulacji 14 architektur sprzętowych, a liczba emulowanych urządzeń przekroczyła 400. W przygotowaniu wersji 7.1 wprowadzono ponad 2800 zmian od 238 programistów.
Kluczowe ulepszenia dodane do QEMU 7.1:
- Na platformie Linux zaimplementowano opcję zero-copy-send, umożliwiającą organizację transferu stron pamięci podczas live-migracji bez buforowania pośredniego.
- W QMP (QEMU Machine Protocol) dodano możliwość używania komendy block-export-add do eksportu obrazów NBD z informacjami o stronach w stanie „dirty”. Dodano również nowe komendy ‘query-stats’ i ‘query-stats-schema’ do zapytania o statystyki z różnych podsystemów QEMU.
- W agencie dla systemów gościnnych poprawiono wsparcie dla platformy Solaris oraz dodano nowe komendy ‘guest-get-diskstats’ i ‘guest-get-cpustats’ do wyświetlania stanu dysków i CPU. Do komendy ‘guest-get-disks’ dodano wyjście informacji z NVMe SMART, a do komendy ‘guest-get-fsinfo’ dodano dane o typie magistrali NVMe.
- Dodano nowy emulator LoongArch z obsługą 64-bitowej wersji architektury zestawu instrukcji LoongArch (LA64). Emulator obsługuje procesory Loongson 3 5000 oraz mosty północne Loongson 7A1000.
- W emulatorze ARM zaimplementowano nowe typy emulowanych maszyn: Aspeed AST1030 SoC, Qualcomm i AST2600 / AST1030 (fby35). Dodano wsparcie dla emulacji CPU Cortex-A76 i Neoverse-N1, a także dla rozszerzeń procesora SME (Scalable Matrix Extensions), RAS (Reliability, Availability, Serviceability) oraz poleceń do blokowania wycieków z pamięci podręcznej podczas spekulatywnego wykonywania instrukcji na CPU. Dla maszyn 'virt' zaimplementowano emulację kontrolera przerwań GICv4.
- W emulatorze architektury x86 dla KVM Dodano wsparcie dla mechanizmu wirtualizacji LBR (Last Branch Record).
- W emulatorze architektury HPPA wprowadzono nowy firmware oparty na SeaBIOS v6, który obsługuje użycie klawiatury PS/2 w menu rozruchowym. Ulepszono emulację portu szeregowego. Dodano dodatkowe czcionki konsolowe STI.
- W emulatorze architektury MIPS dla płyty Nios2 (-machine 10m50-ghrd) zrealizowano emulację wektorowego kontrolera przerwań (Vectored Interrupt Controller) oraz zestawu rejestrów cieniujących. Ulepszono obsługę wyjątków.
- W emulatorze architektury OpenRISC dla maszyny ‘or1k-sim’ dodano możliwość użycia do 4 urządzeń UART 16550A.
- W emulatorze architektury RISC-V dodano wsparcie dla nowych rozszerzeń zestawu instrukcji (ISA), określonych w specyfikacji 1.12.0, a także dodano wsparcie dla rozszerzenia Sdtrig oraz ulepszono wsparcie dla instrukcji wektorowych. Rozszerzono możliwości debugowania. Do emulowanej maszyny ‘virt’ dodano wsparcie TPM (Trusted Platform Module), a do maszyny ‘OpenTitan’ — wsparcie dla Ibex SPI.
- W emulatorze architektury 390x zapewniono wsparcie dla rozszerzeń VEF 2 (Vector-Enhancements Facility 2). W BIOS s390-ccw wprowadzono możliwość uruchamiania z dysków o rozmiarze sektora innym niż 512 bajtów.
- W emulatorze architektury Xtensa dodano wsparcie dla rdzeni lx106 oraz kodów obiektowych do testowania pamięci podręcznej.
Źródło: opennet.ru
