27

Linuxカーネルが最初のPCIeバススキャンと列挙を行った後に構成されるFPGA(この質問をしているほとんどの人たちと同様)があります。ご想像のとおり、FPGA は PCIe エンドポイントを実装しています。

FPGA が表示され、ドライバー モジュールをロードできるように、PCIe コアに PCIe バス全体を再列挙させたいと考えています。また、FPGA ロードアウトを別の構成にスワップする機能も必要です。これにより、次のことができるようになりたいと考えています。

  1. Linux を起動する
  2. FPGA を構成する
  3. PCIe エンドポイントとロード モジュールを列挙する
  4. PCIe エンドポイントを削除する
  5. FPGA を再構成する
  6. PCIe エンドポイントを再列挙する

Linuxを再起動することなくすべて

他の場所で提案されているが、問題を解決しない解決策を次に示します。

echo 1 > /sys/bus/pci/rescanこれは機能しているように見えますが (時々のみ)、最初に列挙された後に FPGA ロードをホットスワップしたい場合は機能しません。

PCIe のホットプラグ/電源管理機能を使用してこれを機能させることはできますか? その場合、PCIe で Hotplug システムを使用する方法に関する適切なリソースはありますか? (LDD では十分にカバーされていません)

4

3 に答える 3

0

ドクターから

Windows のリセットと同じようにベガスをリセットする方法は次のとおりです。これは、ベンダー ID に基づいています。

lspci -n | grep 1002: | egrep -v ".1"| awk '{print "find /sys | grep ""$1"/rescan" -| tac -;"}' | sh - | sed s/^/echo\ 1\ >\ "&/g | sed s/$/"/g

その出力は/etc/rc.local、devcon 再起動スクリプトと同様に、起動後に Vegas をリセットするために使用されます。

echo 1 > "/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/rescan"
echo 1 > "/sys/devices/pci0000:00/0000:00:1c.5/0000:03:00.0/rescan"
echo 1 > "/sys/devices/pci0000:00/0000:00:1d.0/0000:06:00.0/rescan"
echo 1 > "/sys/devices/pci0000:00/0000:00:1d.1/0000:07:00.0/rescan"
于 2018-07-16T21:13:56.030 に答える