Po 8 miesiącach rozwoju opublikowano wydanie wolnego hipernadzorcy Xen 4.21. W opracowanie nowej wersji zaangażowane były takie firmy jak Amazon, Arm, EPAM Systems i AMD. Kod projektu napisany jest w języku C i jest rozpowszechniany na licencji GPLv2+. Rozwój odbywa się w ramach organizacji Linux Foundation.
Kluczowe zmiany w Xen 4.21:
- Zapewniłem pełne wsparcie dla modelu urządzeń Linux stubdomain, który pozwala na uruchamianie komponentów w celu emulacji urządzeń pod osobnym nieuprzywilejowanym użytkownikiem. Model Linux stubomains został opracowany przez projekt QUBES OS i wspiera użycie sterowników emulacji z najnowszych wydań QEMU, a także dostępnych w QEMU powiązanych możliwości dla systemów gościnnych.
- Zmiany dla systemów opartych na architekturze x86:
- Dodano wsparcie dla nowego algorytmu kompresji struktury PDX (Page inDeX), który pozwala na poprawę działania Xen na procesorach Intel Sierra Forest i Granite Rapids przy nieliniowym mapowaniu fizycznej pamięci (sparse memory map), które dopuszcza obecność pustych obszarów.
- Dodano możliwość kontrolowania atrybutu pamięci podręcznej w MTRR (Memory Type Range Registers) dla rejestru BAR (Base Address Register) podstawowego urządzenia PCI platformy Xen, używanego przez systemy gościnne w trybie HVM. Domyślnie w MTRR dla odzwierciedlonej pamięci urządzeń PCI przyznawany jest atrybut UC (uncacheable), który ma sens dla rzeczywistych urządzeń PCI, ale jedynie obniża wydajność urządzenia PCI na platformie Xen.
- Dla procesorów AMD dodano nowy sterownik amd-cppc/amd-cppc-epp, który zarządza zmianą częstotliwości CPU w celu osiągnięcia optymalnej wydajności. W sterowniku wykorzystano mechanizm CPPC (Collaborative Processor Performance Control), który w przeciwieństwie do acpi-cpufreq nie jest ograniczony do trzech poziomów wydajności i pozwala na bardziej dynamiczną reakcję na zmiany stanu.
- W wariancie warstwy xenstore-stubdom, używanej do uruchamiania xenstored bez uprawnień Dom0, dla środowisk parawirtualnych w trybie PVH wprowadzono wsparcie dla aktualizacji na żywo.
- Dla Dom0 w trybie PVH wprowadzono wsparcie dla technologii Resizable BAR (Resizable Base Address Register), która pozwala na natychmiastowy dostęp do całej pamięci urządzenia PCI Express, a nie tylko w odniesieniu do bloków.
- Wprowadzono możliwość przekazywania urządzeń PCI do środowisk domU w trybie HVM (pełna virtualizacja sprzętowa) w konfiguracjach, w których dom0 działa w trybie PVH (hybrydowa virtualizacja sprzętowa i parawirtualizacja).
- Zmiany dla systemów opartych na architekturze ARM:
- Dodano możliwość włączenia mechanizmu ochrony stosu (kompilacja z flagą „-fstack-protector”), polegającego na dodaniu do stosu etykiet kanarowych — losowych sekwencji. W przypadku przepełnienia bufora w trakcie eksploatacji podatności, etykieta kanarowa zostaje nadpisana innymi danymi, co prowadzi do uruchomienia późniejszej kontroli niezmienności etykiety i inicjacji gwałtownego zakończenia aplikacji.
- Dodano wsparcie dla mechanizmu eSPI (Extended Shared Peripheral Interrupts), dostarczanego przez kontrolery przerwań GICv3.1.
- Zrealizowano obsługę SMMU (System Memory Management Unit) przy przekazywaniu urządzeń PCIe.
- Dodano wsparcie dla hostów kontrolerów PCI, stosowanych w czwartej generacji SoC Renesas R-Car.
- Dodano wstępną obsługę procesorów Cortex-R52 i Cortex-R82 z MPU (Memory Protection Unit).
- W porcie Xen dla architektury RISC-V wprowadzono podstawowe wsparcie dla UART i możliwość obsługi zewnętrznych przerwań (APLIC/IMSIC) w trybie hypervisora.
- Kontynuowane są prace nad spełnieniem wymagań dotyczących tworzenia bezpiecznych i niezawodnych programów w języku C, określonych w specyfikacjach MISRA-C dla systemów krytycznych.
- Zakończono wsparcie dla starych wersji GCC i Clang, do kompilacji wymagane są teraz co najmniej wersje GCC 5.1, Clang 11, Binutils 2.25 i GNU Make 3.80.
Źródło: opennet.ru
