È stata presentata la release del progetto QEMU 9.1. Come emulatore, QEMU consente di eseguire programmi compilati per una piattaforma hardware su un sistema con un'architettura completamente diversa, ad esempio, eseguire un'applicazione per ARM su un PC compatibile con x86. In modalità virtualizzazione, QEMU offre prestazioni di esecuzione del codice in un ambiente isolato vicine a quelle di un sistema hardware grazie all'esecuzione diretta delle istruzioni sulla CPU e all'uso di un hypervisor come Xen o di un modulo KVM in Linux, o di un 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. Negli anni di sviluppo è stata aggiunta la supporto per l'emulazione completa di 14 architetture hardware, il numero di dispositivi hardware emulati è superiore a 400. Per la versione 9.1 sono state apportate oltre 2800 modifiche da 263 sviluppatori.
Miglioramenti chiave aggiunti in QEMU 9.1:
- Nel toolkit di migrazione dei sistemi guest è stata implementata la supporto per accelerare le operazioni di compressione dei dati, utilizzando la tecnologia IAA (Intel In-Memory Analytics Accelerator) o UADK (User Space Accelerator Development Kit). Migliorata la supporto per il recupero da malfunzionamenti della migrazione in modalità postcopy.
- Nel meccanismo virtio, utilizzato per organizzare l'interazione tra i sistemi guest e il sistema host, è stata aggiunta la supporto per la funzione VIRTIO_F_NOTIFICATION_DATA, che consente ai driver dei sistemi guest di inviare ulteriori dati insieme alle notifiche inviate. Questa funzione può essere utilizzata, ad esempio, per inviare dati di debug o per ottimizzare le prestazioni.
- Nel guest-agent per sistemi Linux è stata aggiunta il comando guest-network-get-route, mentre per i sistemi Windows sono stati aggiunti i comandi guest-ssh-*. Nell'interfaccia della linea di comando sono state ampliate le possibilità di configurazione dei comandi "allowed" e "blocked".
- Nell'emulatore dell'architettura ARM è stata aggiunta la supporto per le estensioni della CPU EAT_NMI, FEAT_CSV2_3, FEAT_ETS2, FEAT_Spec_FPACC, FEAT_WFxT, FEAT_Debugv8p8. Nella emulazione del blocco di controllo della memoria SMMUv3 (System Memory Management Unit) è stata implementata la supporto per pagine di memoria nidificate e a due livelli. Per le schede Xilinx Zynq è stata aggiunta la supporto per l'emulazione di configurazioni multiprocessore, del controller video DM163 e del controller della cache.
- Nell'emulatore dell'architettura LoongArch è stata implementata la possibilità di caricare direttamente le immagini del kernel in formato ELF e aggiunta la supporto per l'avvio fino a 256 CPU, utilizzando l'estensione extioi. Migliorate le capacità di debug.
- Nell'emulatore dell'architettura RISC-V è stato aggiunto il supporto per le estensioni del processore Zve32x, Zve64x, Zimop, Zcmop, Zama16b, Zabha, Zawrs e Smcntrpmf, così come la versione 1.13 della specifica dell'architettura del set di istruzioni privilegiato. Migliorate le capacità di debug.
- Nell'emulatore dell'architettura SPARC è stato aggiunto il supporto per le estensioni del processore FMAF, IMA, VIS3 e VIS4.
- Nell'emulatore dell'architettura x86 per l'ipervisore KVM È stata implementata la possibilità di avviare sistemi guest utilizzando l'estensione del processore AMD SEV-SNP (Secure Nested Paging), che consente una gestione sicura delle tabelle di pagine di memoria annidate. È stato implementato il supporto per l'emulazione della CPU basata sulle microarchitetture Icelake-Server-v7, SapphireRapids-v3 e SierraForest.
- Risolta una vulnerabilità (CVE-2024-7409) in server dispositivi di blocco NBD (Network Block Device), che consente tramite manipolazioni nel sistema guest di provocare un arresto anomalo di QEMU durante l'esecuzione dell'operazione nbd-server-stop, anche se il client non dispone di chiavi TLS per connettersi al server NBD.
Fonte: opennet.ru
