Dopo 8 mesi di sviluppo, è stata rilasciata la versione del hypervisor open source Xen 4.21. Hanno partecipato allo sviluppo di questa nuova release aziende come Amazon, Arm, EPAM Systems e AMD. Il codice del progetto è scritto in linguaggio C ed è distribuito sotto licenza GPLv2+. Lo sviluppo avviene all'interno dell'organizzazione Linux Foundation.
Modifiche principali in Xen 4.21:
- È stata garantita la piena compatibilità con il modello di dispositivi Linux stubdomain, che consente di eseguire i componenti per l'emulazione dei dispositivi all'interno di un utente non privilegiato separato. Il modello Linux stubomains è stato sviluppato dal progetto QUBES OS e supporta l'uso di driver di emulazione dalle versioni recenti di QEMU, oltre a funzionalità correlate disponibili in QEMU per i sistemi guest.
- Modifiche per i sistemi basati su architettura x86:
- È stata aggiunta la compatibilità con un nuovo algoritmo di compressione della struttura PDX (Page inDeX), che migliora le prestazioni di Xen sui processori Intel Sierra Forest e Granite Rapids in caso di mappatura non lineare della memoria fisica (sparse memory map), che consente la presenza di aree vuote.
- È stata aggiunta la possibilità di controllare l'attributo di caching in MTRR (Memory Type Range Registers) per il registro BAR (Base Address Register) del dispositivo PCI di base della piattaforma Xen, utilizzato dai sistemi guest in modalità HVM. Per impostazione predefinita, nell'MTRR per la memoria riflessa dei dispositivi PCI, l'attributo è impostato su UC (uncacheable), che ha senso per i reali dispositivi PCI, ma riduce le prestazioni del dispositivo PCI della piattaforma Xen.
- Per i processori AMD è stato aggiunto un nuovo driver amd-cppc/amd-cppc-epp, che gestisce la variazione della frequenza della CPU per ottimizzare le prestazioni. Nel driver è utilizzato il meccanismo CPPC (Collaborative Processor Performance Control), che, a differenza di acpi-cpufreq, non è limitato a tre livelli di prestazione e permette una reazione più rapida ai cambiamenti di stato.
- Nella versione dello strato xenstore-stubdom, utilizzata per eseguire xenstored senza privilegi di Dom0, è stata implementata la supporto per gli aggiornamenti live negli ambienti paravirtualizzati in modalità PVH.
- Per Dom0 in modalità PVH è stata implementata la tecnologia Resizable BAR (Resizable Base Address Register), che consente di accedere subito a tutta la memoria del dispositivo PCI Express, e non solo in relazione ai blocchi.
- È stata implementata la possibilità di passthrough dei dispositivi PCI negli ambienti domU in modalità HVM (virtualizzazione hardware completa) nelle configurazioni in cui dom0 opera in modalità PVH (virtualizzazione ibrida hardware e paravirtualizzazione).
- Modifiche per i sistemi basati sull'architettura ARM:
- È stata aggiunta la possibilità di attivare il meccanismo di protezione dello stack (compilazione con il flag “-fstack-protector”), basato sull'aggiunta nel stack di etichette di canarini — sequenze casuali. In caso di overflow del buffer durante l'esercizio di una vulnerabilità, l'etichetta del canarino viene sovrascritta da altri dati, il che provoca l'attivazione del successivo controllo di integrità dell'etichetta e l'inizio dell'arresto anomalo dell'applicazione.
- È stato aggiunto il supporto per il meccanismo eSPI (Extended Shared Peripheral Interrupts), fornito dai controller di interruzione GICv3.1.
- È stata implementata la gestione SMMU (System Memory Management Unit) durante il passthrough dei dispositivi PCIe.
- È stato aggiunto il supporto per i controller host PCI utilizzati nella quarta generazione di SoC Renesas R-Car.
- È stato aggiunto il supporto iniziale per i processori Cortex-R52 e Cortex-R82 con MPU (Memory Protection Unit).
- Nel porting di Xen per l'architettura RISC-V è stato implementato il supporto di base per UART e la possibilità di gestire interruzioni esterne (APLIC/IMSIC) in modalità hypervisor.
- Proseguita l'attuazione dei requisiti per lo sviluppo di software sicuri e affidabili in linguaggio C, formulati nelle specifiche MISRA-C per sistemi critici.
- È stata interrotta la supporto per le versioni obsolete di GCC e Clang, ora sono necessarie almeno le versioni GCC 5.1, Clang 11, Binutils 2.25 e GNU Make 3.80 per la compilazione.
Fonte: opennet.ru
