我正在尝试从用户空间访问 PCIe SATA 桥的 PCI BAR (#5),但是每当我mmap()
通过 BAR 从 BAR/sys/bus/pci/devices/.../resource5
时,文件中的每个偏移量都会得到 0xFF。其他设备(例如 Intel SATA 控制器)以敏感数据响应。
BAR 的显示lspci -vv
与 Intel 控制器相同(只是地址不同)。
Region 5: Memory at f7b10000 (32-bit, non-prefetchable) [size=2K]
两个设备都与ahci
驱动程序匹配,否则 SATA 控制器工作 - 我可以访问附加的磁盘。
我正在尝试从用户空间访问,因为我现在只想通过实验戳一下寄存器。为此,我使用了pciem的修改形式,更改为访问我关心的寄存器。但是,任何偏移量都会返回 0xFF,因此即使使用普通 pciem:
pcimem /sys/bus/pci/devices/0000\:01\:00.0/resource5 0 w
返回 0xFFFFFFFF(“w”表示读取的“字”,因此是 4 个字节)。
当其他设备可以访问时,是什么阻止了此设备的 BAR5?让这种用户空间访问 PCI BAR 是否有意义?