Поддержка прерывания нескольких сообщений (MSI) в архитектуре x86 для Virtualbox - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть пользовательская конечная точка PCIe (общая конечная точка, поддерживающая основные возможности), которая устанавливает векторы IRQ с несколькими возможностями MSI на 16. Но когда я запускаю гостевую настольную ОС ubuntu x86_64 bit, у которой есть хост-контроллер PCIe, который конфигурирует векторы MSI Enable [биты 6: 4 в регистре управления MSI], он всегда возвращает 1 MSI в соответствии с настройкой.Он работает в среде virtualbox.

Следовательно, множественный MSI не поддерживается.

pci_alloc_irq_vectors () API используется для установки нескольких битов с поддержкой msi [6: 4] в ядре linuxкоторый в настоящее время возвращает 1, т.е. устанавливается только одно прерывание MSI, даже если EP поддерживает 16. pci_msi_vec_count () возвращает 16.

Мой путь кода ядра показывает, что используется контроллер PCI-MSI, который не поддерживает MULTIВозможность MSI.Я включил все необходимые IRQ_REMAP, PCI_MSI, PCI_DOMAINS * и т. Д., Которые, как мне кажется, должны включить поддержку нескольких MSI, используя домен контроллера IR-PCI-MSI.Но все пошло напрасно.

Требуется некоторая помощь от экспертов по виртуальным коробкам в отношении следующих запросов:

  • Влияет ли общая таблица ACPI, поставляемая в 64-битную ОС ubuntu 18.04, нарешить, какой контроллер MSI используется во время сканирования pci?Если это так, какие шаги мне нужно рассмотреть, чтобы включить поддержку нескольких msi.

  • Я мог видеть, что функциональность драйвера тестирования конечной точки TI работает должным образом на архитектуре ARM.Но на x86 это не получается.Я использую аналогичный драйвер, скомпилированный на моей платформе, и даже могу загрузить его для моего устройства EP.См. pci_endpoint_test.c для используемого драйвера

Любые предложения относительно этого приветствуются.

Моя текущая настройка:

обнаружен гостевой процессор: Intel Xeon E5 *

ОС: рабочий стол ubuntu 18.04.1 64 бит (amd64)

arch: x86_64

попробовано ядро ​​linux: 4.14, 4.18

Заранее спасибо.

...