Вопрос или проблема
Я написал пользовательское устройство AXI на xilinx FPGA на arm64. Я могу получить к нему доступ, когда запускаю свое программное обеспечение на baremetal, но мне нужно использовать xen и передать диапазон адресов AXI, чтобы использовать его из domU.
Адреса моего устройства AXI находятся в диапазоне от 0x80010000 до 0x8001FFFF
Я пытался запустить свой domU с этим cfg, но безуспешно :
name = "test_soft"
kernel = "soft.bin"
memory = 512
vcpus = 1
iomem = [ "0x80010000,1000" ]
Я получил следующую ошибку:
libxl: error: libxl_create.c:1652:domcreate_launch_dm: Domain 2: ошибка предоставления доступа домену к диапазону iomem 80010000-8001FFFF: Операция не разрешена
В моем дереве устройств:
mydevice: mydevice@80010000 {
compatible = "test,mydevice";
reg = <0x80010000 0x10000>;
#stream-id-cells = <0x01>;
interrupt-parent = <0x04>;
interrupts = <0x00 0x59 0x01>;
xen,passthrough = <0x1>;
};
Виртуализация ввода-вывода включена в xen, smmu включен в моем ядре.
Как я могу передать мое устройство axi?
Спасибо за вашу помощь
.
Ответ или решение
Чтобы осуществить передачу AXI устройства на домен domU в Xen, вам необходимо выполнить ряд шагов, принимая во внимание специфические аспекты вашей архитектуры и конфигурации. Рассмотрим процесс более подробно для устранения возникших ошибок.
Шаги по настройке передачи AXI устройства:
1. Проверка конфигурации устройства в Xen:
Убедитесь, что ваш файл конфигурации Xen содержит правильные значения для передачи памяти. В вашей конфигурации была ошибка диапазона адресов в директиве iomem
. Исправьте следующим образом:
name = "test_soft"
kernel = "soft.bin"
memory = 512
vcpus = 1
iomem = [ "0x80010000,0x10000" ]
Обратите внимание на использование корректного размера памяти в диапазоне iomem
. Ваша запись должна указывать на диапазон от 0x80010000
до 0x8001FFFF
, то есть размером в 0x10000.
2. Правильная настройка Xen и SMMU:
Поскольку у вас включена виртуализация ввода-вывода и поддержка SMMU, убедитесь, что они правильно работают с AXI устройством. Проверьте, что:
- SMMU (System Memory Management Unit) включен для работы с вашим AXI устройством.
- Вам может понадобиться обновить вашу конфигурацию устройства в Xen, чтобы убедиться, что SMMU правильно управляет памятью.
3. Настройка Device Tree:
Ваш конфигурационный фрагмент для device tree выглядит корректно, но убедитесь, что он помещен в правильный контекст вашей текущей конфигурации. Проверьте, чтобы параметр xen,passthrough = <0x1>;
работал, как ожидается, и что device tree находится в актуальном состоянии.
4. Проверка прав и ограничений:
Ошибка «Operation not permitted» может указывать на проблемы с доступом. Убедитесь, что:
- Вы запустили Xen и domU с правами администратора.
- Проверьте настройки SELinux/AppArmor, которые могут блокировать доступ к устройствам.
5. Логирование и отладка:
- Запустите Xen и мониторируйте вывод dmesg и журналы Xen, чтобы получить больше информации об ошибках.
- Используйте
xl dmesg
для проверки сообщений Xen, относящихся к вашим действиям с передачей устройства.
6. Обновление Xen и ядра:
Всегда рекомендуется обновлять Xen и ядро Linux до последних стабильных версий, так как многие исправления безопасности и улучшения проходят через регулярные обновления.
Заключение
Процесс passthrough устройства в Xen может показаться сложным, но следуя документации и проведя тщательную проверку всех компонент системы, можно успешно настроить вашу систему. Убедитесь, что каждая деталь конфигурации детально проверена и соответствует требованиям вашей архитектуры.