Xen: Как передать устройство AXI в domU?

Вопрос или проблема

Я написал пользовательское устройство 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 может показаться сложным, но следуя документации и проведя тщательную проверку всех компонент системы, можно успешно настроить вашу систему. Убедитесь, что каждая деталь конфигурации детально проверена и соответствует требованиям вашей архитектуры.

Оцените материал
Добавить комментарий

Капча загружается...