FPGA 카드를 설치하고 작동하는 PCI 드라이버가 있습니다. 그러나 우리는 시스템을 다시 부팅하지 않고이 드라이버를 언로드해야합니다.PCI 드라이버를 여러 번로드하고 언로드하면/sys/bus/pci/devices/xxx 디렉토리가 사라집니다.
재부팅하지 않고 드라이버를 다시 시작하면 드라이버가 다시 설치됩니다. 나는이 프로세스 (설치/제거)를 여러 번 수행 할 때 드라이버의 5 번째 언로드에서 장치와 관련된 디렉토리가 사라지는 것을 발견했습니다.
lspci
명령은 잘못된 링크로 인해 더 이상 내 장치를 찾을 수 없습니다. 다시 표시하려면 장치 디렉터리 (/sys/bus/pci/devices/00000:04:00.0
)를 얻으려면 재부팅해야합니다.
몇 가지 실험을하고 최소한의 드라이버로 줄이면 나는 pci_probe_method
에있는 pci_enable_device(..)
함수를 호출하지 않으면 오류없이 여러 번 드라이버를 설치/제거 할 수 있다는 것을 발견했습니다.
물론이 장치를 사용하여 작업을 수행하기 전에이 메서드를 호출해야하지만이 메서드는 문제를 일으키는 복잡한 초기화 중 일부가 아닌지 확인하고 싶습니다.
pci_remove_method()
에서 pci_disable_device()
으로 전화를 걸 었음을 확인했습니다. PCI 장치를 무기한으로 활성화 및 비활성화 할 수 있어야합니다. 무슨 일이 일어나고 있는지 알아내는 데 도움이 될 것입니다.