È stata presentata la versione 11.0.0 del progetto QEMU. Come emulatore, QEMU consente di eseguire un programma compilato per una piattaforma hardware su un sistema con un'architettura completamente diversa, ad esempio eseguire un'applicazione per ARM su un PC compatibile x86. In modalità virtualizzazione, le prestazioni di esecuzione del codice in un ambiente isolato sono vicine a quelle di un sistema hardware sfruttando l'esecuzione diretta delle istruzioni sulla CPU e il coinvolgimento dell'ipervisore Xen o del modulo KVM in Linux, o del modulo NVMM in NetBSD.
Il progetto è stato originariamente creato da Fabrice Bellard con l'obiettivo di consentire l'esecuzione di file eseguibili Linux compilati per la piattaforma x86 su architetture diverse da x86. Nel corso degli anni, è stato aggiunto il supporto per l'emulazione completa di 14 architetture hardware, con il numero di dispositivi hardware emulati che supera i 400. In preparazione per la versione 11.0.0, sono stati apportati oltre 2500 cambiamenti da 237 sviluppatori.
Miglioramenti chiave aggiunti in QEMU 11.0:
- Rimosso il supporto per i sistemi host a 32 bit, dichiarato obsoleto nell'aprile dello scorso anno con QEMU 10.0. Nella versione di dicembre 10.2, è stato interrotto il supporto per le piattaforme mips32 e ppc32 nel generatore di codice TCG (Tiny Code Generator), e nella versione QEMU 11.0 sono state rimosse le rimanenti piattaforme i386, arm, ppc e riscv32, oltre a una pulizia della base di codice e del sistema di build dai componenti per il funzionamento su host a 32 bit.
- Implementato l'acceleratore di virtualizzazione "nitro" ("-accel nitro") e un nuovo tipo di sistemi emulati "nitro", che consente l'esecuzione in QEMU di enclave isolate basate sulla tecnologia di calcolo confidenziale AWS Nitro Enclave, ad esempio per il test locale in ambienti Nitro Enclave su QEMU. Nella tecnologia AWS EC2, Nitro Enclave consente di eseguire enclave isolate annidate in una macchina virtuale per lavorare con dati riservati, assegnando loro una parte delle proprie risorse.
- Migliorato il supporto per gli acceleratori di virtualizzazione MSHV (Microsoft Hypervisor) e WHPX (Microsoft Windows Hypervisor Platform Extensions).
- Con l'uso dell'ipervisore KVM ("-accel kvm") è stato fornito il supporto per la virtualizzazione dell'estensione Intel CET (Control-flow Enforcement Technology) per applicazioni in macchine virtuali protezione da exploit che utilizzano tecniche di ritorno-oriented programming (ROP - Return-Oriented Programming). È stato inoltre aggiunto il supporto per il riavvio dei confidenziali macchine virtuali, che utilizzano per la crittografia della memoria le estensioni AMD SEV-SNP (Secure Encrypted Virtualization — Secure Nested Paging) e Intel TDX (Trust Domain Extensions).
- Nel dispositivo VirtIO-GPU, che fornisce il funzionamento della GPU virtuale, è stata aggiunta la possibilità di impostare risoluzioni dello schermo diverse per vari dispositivi di output.
- Nel VirtIO-GPU è stata aggiunta il supporto per i contesti DRM (Direct Rendering Manager native context), che consentono di migliorare le prestazioni della GPU virtuale dal sistema guest attraverso la trasmissione diretta di comandi alla GPU host reale. Il supporto per i contesti DRM si attiva utilizzando il nuovo dispositivo virtio-gpu-gl con l'opzione «drm_native_context=on». A differenza dei contesti Virgl e Venus, che operano a livello API OpenGL e Vulkan, il contesto DRM è implementato a livello UAPI del kernel Linux.
- È stata aggiunta la possibilità di utilizzare il linguaggio C++ per lo sviluppo di plugin per il generatore di codice TCG (Tiny Code Generator).
- Nel driver di blocco NFS è stato aggiunto il supporto per la compilazione con la libreria libnfs 6.
- Nel driver di blocco curl è stata aggiunta l'opzione «force-range» per forzare l'uso dell'intestazione HTTP «Range» durante il caricamento delle immagini senza controllarne preventivamente il supporto con una richiesta separata con l'intestazione HEAD.
- Nel driver di blocco FUSE è stata disattivata la gestione delle operazioni di esportazione in modalità sincrona, che portava al blocco dell'avvio della macchina virtuale fino al completamento dell'elaborazione di altre richieste FUSE. È stata aggiunta la possibilità di utilizzare più thread di input/output (iothread) durante l'esportazione in FUSE.
- Nell'emulatore dell'architettura x86 è stata aggiunta la supporto per le CPU Intel Diamond Rapids («Xeon 7»).
- Nell'emulatore dell'architettura ARM sono state aggiunte le estensioni del processore FEAT_ASID2 e FEAT_E2H0. Nel generatore di codice TCG è stata implementata l'emulazione delle estensioni SME (Scalable Matrix Extension).
- Nell'emulatore dell'architettura HPPA è stata aggiunta la supporto per l'emulazione delle CPU a 64 bit con indirizzamento a 40 e 44 bit. Grazie a SeaBIOS-hppa 24 è stata garantita l'inizializzazione del controller PCI Astro, che consente l'uso di GPU PCI su sistemi a 64 bit.
- Nell'emulatore dell'architettura LoongArch è stata introdotta la possibilità di migrazione della PMU (Performance Monitoring Unit) utilizzando l'ipervisor KVM. Nel generatore di codice TCG è stata implementata l'emulazione delle estensioni LA v1.1, sc.q e llacq/screl, oltre alle istruzioni FRECIP e DRECIP per il calcolo dei valori inversi.
- Nell'emulatore dell'architettura PowerPC è stato aggiunto il supporto per gli snapshot.
- Nell'emulatore dell'architettura RISC-V è stato implementato il supporto per la CPU MIPS P8700 e per le estensioni del set di istruzioni Zilsd, Zclsd, ZALASR e Smpmpmt.
- Nell'emulatore dell'architettura s390 è stato introdotto il supporto per il boot da dispositivi virtio-blk-pci e implementata l'emulazione dell'istruzione «DIVIDE TO INTEGER».
- È stata adottata una correzione che riduce da 50 a 80 volte i ritardi durante il funzionamento di fdmon (monitoraggio dei descrittori di file) in modalità «aio=io_uring» e quando il sistema è in stato di inattività (idle).
Fonte: opennet.ru
