După 8 luni de dezvoltare, a fost publicat release-ul hipervizorului liber Xen 4.21. La dezvoltarea noului release au participat companii precum Amazon, Arm, EPAM Systems și AMD. Codul proiectului este scris în limbajul C și este distribuit sub licența GPLv2+. Dezvoltarea se desfășoară în cadrul organizației Linux Foundation.
Schimbările cheie în Xen 4.21:
- A fost asigurată suportul complet pentru modelul de dispozitive Linux stubdomain, care permite organizarea execuției componentelor pentru emularea dispozitivelor sub un utilizator neprivilegiat. Modelul Linux stubomains a fost dezvoltat de proiectul QUBES OS și suportă utilizarea driverelor de emulare din versiunile recente ale QEMU, precum și a funcționalităților asociate disponibile în QEMU pentru sistemele guest.
- Modificări pentru sistemele bazate pe arhitectura x86:
- A fost adăugat suportul pentru noul algoritm de compresie al structurii PDX (Page inDeX), care îmbunătățește performanța Xen pe procesoarele Intel Sierra Forest și Granite Rapids în cazul mapărilor non-liniare ale memoriei fizice (sparse memory map), care permit existența unor zone goale.
- A fost adăugată posibilitatea de a controla atributul de cache în MTRR (Memory Type Range Registers) pentru registrul BAR (Base Address Register) al dispozitivului PCI de bază al platformei Xen, folosit de sistemele guest în modul HVM. Implicit, în MTRR pentru memoria reflecată a dispozitivelor PCI, atributul este setat pe UC (uncacheable), care are sens pentru dispozitivele PCI reale, dar reduce performanța dispozitivelor PCI ale platformei Xen.
- Pentru procesoarele AMD a fost adăugat un nou driver amd-cppc/amd-cppc-epp, care gestionează modificarea frecvenței CPU pentru a obține o performanță optimă. În driver este folosit mecanismul CPPC (Collaborative Processor Performance Control), care, spre deosebire de acpi-cpufreq, nu este limitat la trei niveluri de performanță și permite o reacție mai rapidă la modificările stării.
- În varianta de interfață xenstore-stubdom, utilizată pentru a lansa xenstored fără privilegii Dom0, pentru medii paravirtualizate în modul PVH a fost implementat suportul pentru actualizări live.
- Pentru Dom0 în modul PVH a fost implementat suportul pentru tehnologia Resizable BAR (Resizable Base Address Register), care permite accesul instantaneu la întreaga memorie a dispozitivului PCI Express, nu doar la blocuri.
- A fost implementată posibilitatea de redirecționare a dispozitivelor PCI în medii domU în modul HVM (virtualizare hardware completă) în configurații în care dom0 funcționează în modul PVH (virtualizare hibridă hardware și paravirtualizare).
- Modificări pentru sistemele bazate pe arhitectura ARM:
- A fost adăugată posibilitatea activării mecanismului de protecție a stivei (compilare cu flagul „-fstack-protector”), bazată pe adăugarea în stivă a etichetelor canar, care sunt secvențe aleatorii. În cazul unei suprascrieri a buffer-ului în timpul exploatării unei vulnerabilități, eticheta canar va fi suprascrisă cu alte date, ceea ce va duce la activarea ulterioarei verificări a integrității etichetei și inițierea închiderii de urgență a aplicației.
- A fost adăugat suport pentru mecanismul eSPI (Extended Shared Peripheral Interrupts), furnizat de controlerele de întrerupere GICv3.1.
- A fost implementată gestionarea SMMU (System Memory Management Unit) în timpul redirecționării dispozitivelor PCIe.
- A fost adăugat suport pentru controlerele de gazdă PCI utilizate în a patra generație de SoC Renesas R-Car.
- A fost adăugat suport inițial pentru procesoarele Cortex-R52 și Cortex-R82 cu MPU (Memory Protection Unit).
- În portul Xen pentru arhitectura RISC-V a fost implementat un suport de bază pentru UART și posibilitatea de a gestiona întreruperi externe (APLIC/IMSIC) în modul hypervizor.
- A fost continuată implementarea cerințelor pentru dezvoltarea programelor sigure și fiabile în limbajul C, formulate în specificațiile MISRA-C pentru sisteme critice.
- A fost oprit suportul pentru versiunile vechi de GCC și Clang, acum fiind necesare versiuni minime de GCC 5.1, Clang 11, Binutils 2.25 și GNU Make 3.80 pentru compilare.
Sursa: opennet.ro
