Comment faire une vraie rescan du bus PCIe

J'ai un FPGA (Comme la plupart des gens poser cette question) qui est configuré après mon noyau Linux ne la première bus PCIe analyse et le dénombrement. Comme vous pouvez le deviner, le FPGA met en œuvre un PCIe point de terminaison.

Je voudrais avoir le PCIe de base re-énumérer l'ENSEMBLE du bus PCIe, de sorte que mon FPGA s'affichera alors et je peux charger mon module de pilote. Je voudrais également la possibilité de basculer le FPGA de la charge pour une configuration différente. Par cela, je veux dire que je voudrais être en mesure de:

  1. Boot Linux
  2. Configurer le FPGA
  3. Énumérer d'extrémité PCIe module de charge et de
  4. Supprimer d'extrémité PCIe
  5. Re-configurer le FPGA
  6. Ré-énumérer d'extrémité PCIe

Tous sans avoir à redémarrer Linux

Voici les solutions qui ont été proposées ailleurs, mais ne résolvent pas le problème.

echo 1 > /sys/bus/pci/rescan Cela semble fonctionner (seulement parfois) et il ne fonctionne pas si je veux hotswap le FPGA de la charge après qu'il a d'abord été dénombrés.

Ici est assez invasif de la méthode (que je n'ai pas testé) que quelqu'un a proposé d'ailleurs. https://community.freescale.com/thread/305355

Pouvez le branchement à chaud/puissance de la gestion des installations de PCIe être utilisé pour faire ce travail? Si oui est-il de bonnes ressources pour savoir comment utiliser le système Hotplug avec PCIe? (LDD n'est pas tout à fait le couvrir de façon suffisamment approfondie)

source d'informationauteur whh4000