У меня есть FPGA (как и большинство людей, задающих этот вопрос), который настраивается после того, как мое ядро Linux выполняет начальное сканирование и перечисление шины PCIe. Как вы можете догадаться, FPGA реализует конечную точку PCIe.Как выполнить TRUE повторное сканирование шины PCIe
Мне хотелось бы, чтобы ядро PCIe повторно перечислило ENTIRE PCIe-шину, чтобы затем отобразилась моя FPGA, и я могу загрузить мой модуль драйвера. Я также хотел бы, чтобы SWAP FPGA загружалась для другой конфигурации. Под этим я подразумеваю, что я хотел бы быть в состоянии:
- ботинке Linux
- Настройка FPGA
- Перечислите PCIe конечных точек и нагрузки модуля
- Удалить PCIE Конечная точка
- переконфигурировать FPGA
- Повторно перечислить конечную точку PCIe
Все без перезагрузки Linux
Вот решения, которые были предложены в другом месте, но не решают проблему.
echo 1 > /sys/bus/pci/rescan
Это похоже на работу (только иногда), и это не сработает, если я хочу отключить загрузку FPGA после ее первого перечисления.
Вот довольно инвазивный метод (который я еще не тестировал), который кто-то предложил и в другом месте. https://community.freescale.com/thread/305355
Может ли использовать устройство Hotplug/управления питанием PCIe для выполнения этой работы? Если есть хорошие ресурсы для использования системы Hotplug с PCIe? (LDD недостаточно хорошо покрывает его)
Посмотрите на механизм hotplug PCIe. Он поддерживается в новых ядрах. На самом деле, как, по вашему мнению, Thunderbolt будет работать? Здесь то же самое. – 0andriy
Выполняется ли «повторное сканирование» на главной машине или внутри виртуальной машины Xen? У Xen возникла проблема с повторным сканированием дерева PCIe и сбой в прошлом. Я не знаю, разрешено ли это. – Paebbels
Мне интересно, какое базовое оборудование вы используете. По моему опыту с материнскими платами коммерческого класса редко срабатывал метод rescan. Я отправил путь частичной реконфигурации, чтобы решить проблему (не переиздавая). @Paebbels @ whh4000 вы можете поделиться своей настройкой? – Claudio