В гипервизове Xen реализована поддержка платы Raspberry Pi 4

Разработчики проекта 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 теперь можно использовать EVE (Edge Virtualization Engine), движок для создания и запуска cloud-native приложений, использующий Xen, Linuxkit и Alpine Linux для построения инфраструктуры виртуализации на портативных устройствах.

Дополнительно можно отметить устранение 10 уязвимостей в Xen. Уязвимости CVE-2020–25599, CVE-2020–25603 и CVE-2020–25595 потенциально позволяют из гостевой системы получить привилегии хост-окружения. Проблемы CVE-2020–25601, CVE-2020–25600, CVE-2020–25596, CVE-2020–25597, CVE-2020–25604, CVE-2020–25598 и CVE-2020–25602 ограничиваются совершением отказа в обслуживании.

Источник: http://www.opennet.ru/opennews/art.shtml? num=53807

©  OpenNet