È stato rilasciato il progetto QEMU 11.0.0. 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 con x86. In modalità virtualizzazione, le prestazioni del codice eseguito in un ambiente isolato sono vicine a quelle di un sistema hardware grazie all'esecuzione diretta delle istruzioni sulla CPU e all'uso dell'ipercompilatore Xen o del modulo KVM in Linux, o del modulo NVMM in NetBSD.
Il progetto è stato inizialmente 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, mentre il numero di dispositivi hardware emulati ha superato le 400 unità. In preparazione della versione 11.0.0, sono state apportate oltre 2500 modifiche da 237 sviluppatori.
Miglioramenti chiave aggiunti in QEMU 11.0:
- Il supporto per i sistemi host a 32 bit è stato rimosso, dichiarato obsoleto nell'aprile dello scorso anno in QEMU 10.0. Nella versione di dicembre 10.2, il supporto per le piattaforme mips32 e ppc32 è stato interrotto nel Tiny Code Generator (TCG), e nella versione 11.0 di QEMU sono state rimosse le restanti piattaforme i386, arm, ppc e riscv32, con una pulizia della base di codice e del sistema di build dai componenti per l'esecuzione su host a 32 bit.
- È stato implementato l'acceleratore di virtualizzazione 'nitro' ('-accel nitor') e un nuovo tipo di sistemi emulati 'nitro', che consente di eseguire enclavi isolate in QEMU basate sulla tecnologia di calcolo riservato AWS Nitro Enclave, ad esempio per il test locale in ambienti Nitro Enclave. In AWS EC2, la tecnologia Nitro Enclave consente di eseguire enclavi isolate nidificate in una macchina virtuale per lavorare con dati riservati, dedicando loro una parte delle proprie risorse.
- È stato migliorato il supporto per gli acceleratori di virtualizzazione MSHV (Microsoft Hypervisor) e WHPX (Microsoft Windows Hypervisor Platform Extensions).
- Utilizzando il hypervisor KVM ('-accel kvm'), è stato fornito supporto per la virtualizzazione dell'estensione Intel CET (Control-flow Enforcement Technology) per applicazioni in macchine virtuali protezione contro exploit che utilizzano le tecniche di programmazione orientate al ritorno (ROP — Return-Oriented Programming). È stata anche aggiunta la gestione del riavvio delle informazioni riservate. di macchine virtuali, utilizzando 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 consente il funzionamento della GPU virtuale, è stata aggiunta la possibilità di impostare risoluzioni dello schermo diverse per vari dispositivi di output.
- È stata aggiunta a VirtIO-GPU il supporto per i contesti DRM (Direct Rendering Manager native context), che consentono un aumento delle prestazioni nella gestione della GPU virtuale dal sistema ospite, grazie alla trasmissione diretta dei 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 introdotta la possibilità di utilizzare il linguaggio C++ per lo sviluppo di plugin per il generatore di codice TCG (Tiny Code Generator).
- Nel driver a blocchi NFS è stato aggiunto il supporto per la compilazione con la libreria libnfs 6.
- Nel driver a blocchi curl è stata aggiunta l'opzione «force-range» per forzare l'uso dell'intestazione HTTP «Range» durante il download delle immagini senza un controllo preventivo del suo supporto tramite una richiesta HEAD.
- Nel driver a blocchi FUSE è stata disabilitata la gestione delle operazioni di esportazione in modalità sincrona, che causava il blocco dell'avvio della macchina virtuale fino al termine 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 architettura x86 è stato aggiunto il supporto per la CPU Intel Diamond Rapids («Xeon 7»).
- Nell'emulatore architettura ARM sono state aggiunte le estensioni della CPU FEAT_ASID2 e FEAT_E2H0. Nel generatore di codice TCG è stata implementata l'emulazione delle estensioni SME (Scalable Matrix Extension).
- Nell'emulatore architettura HPPA è stato aggiunto il supporto per l'emulazione delle CPU a 64 bit con spazi indirizzi di 40 e 44 bit. Con SeaBIOS-hppa 24 è stata assicurata l'inizializzazione del controller PCI Astro, che consente di utilizzare schede video PCI su sistemi a 64 bit.
- Nell'emulatore dell'architettura LoongArch è stata introdotta la possibilità di migrare il PMU (Performance Monitoring Unit) utilizzando l'ipervisore 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 delle reciproche.
- 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 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 accettata una correzione che riduce da 50 a 80 volte i ritardi nel funzionamento di fdmon (file descriptor monitoring) in modalità «aio=io_uring» e durante la permanenza del sistema in stato di inattività (idle).
Fonte: opennet.ru
