Разработчиците на проекта Xen за реализация на възможността за използване на Xen Hypervisor на платките Raspberry Pi 4. Адаптирането на Xen за работа на предишни версии на платките Raspberry Pi беше затруднено от използването на нестандартен контролер за прекъсвания, който нямаше поддръжка за виртуализация. На Raspberry Pi 4 беше приложен обикновен контролер за прекъсвания GIC-400, поддържан в Xen, и разработчиците се надяваха, че няма да имат проблеми с стартирането на Xen. Но на практика всичко се оказа различно от очакванията и за да се осигури работата на Xen на Raspberry Pi 4, трябваше да се направят значителни промени в кода за работа с паметта.
Първоначалните версии на платките Raspberry Pi 4 ограничаваха достъпа само до адресното пространство на първия гигабайт памет, което не беше достатъчно за Dom0. Необходимите изменения бяха внесени в версия Xen 4.14, но веднага се появи друг проблем - в подсистемата 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), двигател за създаване и стартиране на облачно-родни приложения, използващ Xen, и за изграждане на инфраструктура за виртуализация на портативни устройства.
Допълнително може да се отбележи отстраняването на в Xen. Уязвимостите ,
и
потенциално позволяват на гостуваща система да получи привилегии на хост-окружение. Проблемите
, ,
,
,
,
и
се ограничават до извършването на отказ в обслужването.
Източник: opennet.ru
