Не так давно в ядре linux (стараниями проекта openvirtualization) появилась поддержка аппаратной виртуализации на процессорах ARM Cortex A15 и A7. К сожалению, в момент запила этого веселья достать девайс с A15 было очень сложно, но как только он у меня появился - я решил запустить на нём KVM.
Что мы здесь видим?
- Процессор TI OMAP5432, 2 ядра A15 по 1.6ггц (у меня включено одно, выключал для теста и забыл включить)
- QEMU использует KVM, эмулирует плату Versatile Express A15
- Две виртуалки с андроидом
- При том, что две виртуалки и видео через fbdev без DRM, и одно ядро - загрузка 40% без всяких оптимизаций.
Из сложностей - по умолчанию процессор грузится в режим SVC, а для запуска гипервизора требуется режим HYP, поэтому пришлось запилить в u-boot хак (http://paste.debian.net/41329/), который перезапускал ядра процессора (по очереди) в нужный режим. Подобный патч раньше был в рассылке uboot, но на финальной версии процессора он не работает. А разгадка одна. Над гипервизором есть ещё один уровень - монитор TrustZone. Так вот в нём и крутится «безопасная» ОС, у которой надо попросить нужные привилегии при помощи окода smc. Для любителей швабодки - да, на всех армах крутится проприетарщина с привилегиями выше, чем linux. И кроме как на Freescale I.MX нет даже документации, как залить в TZ свой код.
>>> Просмотр (1920x1080, 306 Kb)