2015-09-01 11 views
8

У меня есть FPGA (как и большинство людей, задающих этот вопрос), который настраивается после того, как мое ядро ​​Linux выполняет начальное сканирование и перечисление шины PCIe. Как вы можете догадаться, FPGA реализует конечную точку PCIe.Как выполнить TRUE повторное сканирование шины PCIe

Мне хотелось бы, чтобы ядро ​​PCIe повторно перечислило ENTIRE PCIe-шину, чтобы затем отобразилась моя FPGA, и я могу загрузить мой модуль драйвера. Я также хотел бы, чтобы SWAP FPGA загружалась для другой конфигурации. Под этим я подразумеваю, что я хотел бы быть в состоянии:

  1. ботинке Linux
  2. Настройка FPGA
  3. Перечислите PCIe конечных точек и нагрузки модуля
  4. Удалить PCIE Конечная точка
  5. переконфигурировать FPGA
  6. Повторно перечислить конечную точку PCIe

Все без перезагрузки Linux

Вот решения, которые были предложены в другом месте, но не решают проблему.

echo 1 > /sys/bus/pci/rescan Это похоже на работу (только иногда), и это не сработает, если я хочу отключить загрузку FPGA после ее первого перечисления.

Вот довольно инвазивный метод (который я еще не тестировал), который кто-то предложил и в другом месте. https://community.freescale.com/thread/305355

Может ли использовать устройство Hotplug/управления питанием PCIe для выполнения этой работы? Если есть хорошие ресурсы для использования системы Hotplug с PCIe? (LDD недостаточно хорошо покрывает его)

+0

Посмотрите на механизм hotplug PCIe. Он поддерживается в новых ядрах. На самом деле, как, по вашему мнению, Thunderbolt будет работать? Здесь то же самое. – 0andriy

+0

Выполняется ли «повторное сканирование» на главной машине или внутри виртуальной машины Xen? У Xen возникла проблема с повторным сканированием дерева PCIe и сбой в прошлом. Я не знаю, разрешено ли это. – Paebbels

+0

Мне интересно, какое базовое оборудование вы используете. По моему опыту с материнскими платами коммерческого класса редко срабатывал метод rescan. Я отправил путь частичной реконфигурации, чтобы решить проблему (не переиздавая). @Paebbels @ whh4000 вы можете поделиться своей настройкой? – Claudio

ответ

8

Повторное перечисление шины/дерева PCIe через echo 1 > /sys/bus/pci/rescan является правильным решением. Мы используем его так же, как вы его описали.

Мы используем echo 1 > $pcidevice/remove, чтобы отключить драйвер от устройства и отсоединить устройство от дерева. Драйвер (xillybus) не разгружен, просто отключен.

Лучшим решением является пересканирование только узла, к которому подключена ваша FPGA. Это уменьшает все последствия для системы.

Этот метод используется в облачной системе FPGA RC3E.

 Смежные вопросы

  • Нет связанных вопросов^_^