3

ユーザー空間から PCIe SATA ブリッジの PCI BAR (#5) にアクセスしようとしていますが、をmmap()介して BAR からアクセスする/sys/bus/pci/devices/.../resource5と、ファイル内のすべてのオフセットで 0xFF が返されます。Intel SATA コントローラなどの他のデバイスは、適切なデータで応答します。

BAR はlspci -vvIntel コントローラと同じように表示されます (アドレスのみが異なります)。

Region 5: Memory at f7b10000 (32-bit, non-prefetchable) [size=2K]

両方のデバイスはahciドライバーによって一致しており、SATA コントローラーは別の方法で動作します - 接続されたディスクにアクセスできます。

今のところ実験的にレジスタを突っ込みたいだけなので、ユーザー空間からアクセスしようとしています。これを行うために、気になるレジスターにアクセスするように変更されたpcimemの変更された形式を使用しています。ただし、任意のオフセットは 0xFF を返すため、単純な pcimem を使用した場合でも:

pcimem /sys/bus/pci/devices/0000\:01\:00.0/resource5 0 w

0xFFFFFFFF を返します (「w」は「ワード」読み取りを示し、したがって 4 バイトです)。

他のデバイスがアクセス可能であるのに、このデバイスの BAR5 へのアクセスを妨げているのは何ですか? この種のユーザー空間から PCI BAR にアクセスすることは理にかなっていますか?

4

2 に答える 2

2

これがどれほど役立つかは定かではありませんが、新しい PCIe FPGA デバイスのドライバーを作成していたときに同じことを見ました。

デバイスでエラーが発生した場合、MMAP-ed PCI BAR メモリ空間は 0xFFFFFFFF (-1) を返します。これを解決できた唯一の方法は、コンピュータの電源を完全にリセットしてカードをリセットすることでした。

于 2013-03-21T12:44:14.523 に答える