PCIe 拡張スロットを介してマシンに接続された FPGA ボード用のドライバーを開発していますが、PC の前にボードの電源が入っていれば、すべてがうまく機能します。ただし、最初にコンピューターを予約してから FPGA ボードを予約すると、デバイスが認識されてモジュールがロードされるというかなり異常な動作が発生します (syslog で呼び出された「init」関数が表示されます)。呼び出されることはありません。
これは無効な BAR0 が原因だと思います。dmesg
ボードの電源を入れたときの出力:
[ 71.287587] pci 0000:3b:00.0: [0ae5:0001] type 00 class 0x000000
[ 71.287613] pci 0000:3b:00.0: reg 0x10: [mem 0x00000000-0x0000ffff]
[ 71.287821] pci 0000:3b:00.0: System wakeup disabled by ACPI
[ 71.328537] my_driver:
[ 71.328537] ****************************************************************
[ 71.328542] my_driver: init debug=2
その最初の reg は 0xb4000000-0xb400ffff のようなものである必要がありますが、代わりに 0 になっています。
このブロックを割り当てるために必要な追加の手順はありますか? または、これを行う必要があることをカーネルに示すにはどうすればよいですか?