Разработчиците на проекта Xen за реализиране на възможността за използване на Xen Hypervisor на платки Raspberry Pi 4. Адаптацията на Xen за работа с предишни версии на платките Raspberry Pi затруднило използването на нестандартен контролер за прекъсвания, който не поддържал виртуализация. На Raspberry Pi 4 бил използван стандартният контролер за прекъсвания GIC-400, поддържан в Xen, и разработчиците смятали, че няма да имат проблеми с пускането на Xen. Но в действителност всичко се оказало по-различно от очакваното, и за да се осигури работоспособността на Xen на Raspberry Pi 4, се наложило да бъдат направени значителни промени в кода за работа с паметта.
Първоначалните варианти на платките Raspberry Pi 4 ограничавали достъпа само до адресното пространство на първия гигабайт памет, което било недостатъчно за Dom0. Необходимите промени били внедрени в версия 4.14 на Xen, но веднага се появил друг проблем — в подсистемата на Xen за преобразуване на виртуални адреси в физически бил използван извикването virt_to_phys, което не сработвало за всички виртуални адреси и опитите за преобразуване на някои виртуални адреси завършвали с грешка. За решаване на този проблем се наложило да добавят друга функция за преобразуване на адресите.
На това проблемите не свършили, а се появила особеност в работата на DMA — на всички преди поддържани платформи в Xen (x86, ARM и ARM64) адресите на DMA и физическите адреси винаги съвпадали, но на Raspberry Pi 4 те се различавали. Намерението за решаване на този проблем се оказало най-трудно и изисквало разработка на пачове за ядрото на Linux, които извършвали преобразуване между физическите адреси и адресите на DMA.
Подготовените корекции били включени в ядрото на Linux 5.9 и сега Xen е признат за готов за организиране на виртуализация на платките Raspberry Pi 4. Включително на Raspberry Pi 4 сега може да се използва (Edge Virtualization Engine), двигател за създаване и стартиране на cloud-native приложения, използващи Xen, и за изграждане на инфраструктура за виртуализация на преносими устройства.
Допълнително може да се отбележи отстраняването на в Xen. Уязвимостите ,
и
потенциално позволяват на гостуващата система да получи привилегии на хост средата. Проблемите
, ,
,
,
,
и
са ограничени до извършване на отказ в обслужването.
Източник: opennet.ru
