首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Userspace PCI BAR访问在每个偏移量处返回0xFF

Userspace PCI BAR访问在每个偏移量处返回0xFF
EN

Stack Overflow用户
提问于 2013-03-20 23:53:51
回答 2查看 2.8K关注 0票数 3

我试图从用户空间访问PCIe SATA桥的PCI (#5),但是每当我通过/sys/bus/pci/devices/.../resource5从BAR访问mmap()时,我在文件中的每个偏移量都得到0xFF。其他设备(如Intel SATA控制器)会使用敏感数据进行响应。

栏在lspci -vv中的显示与英特尔控制器的显示完全相同(只是地址不同)。

代码语言:javascript
复制
Region 5: Memory at f7b10000 (32-bit, non-prefetchable) [size=2K]

两个设备都由ahci驱动程序匹配,否则SATA控制器将正常工作-我可以访问连接的磁盘。

我尝试从用户空间访问,因为我现在只想实验性地访问寄存器。为此,我使用了一种修改过的pcimem形式,更改为访问我关心的寄存器。但是,任何偏移量都会返回0xFF,因此即使使用普通的pcimem:

代码语言:javascript
复制
pcimem /sys/bus/pci/devices/0000\:01\:00.0/resource5 0 w

返回0xFFFFFFFFF ("w“表示"word”读取,因此为4字节)。

当其他设备可以访问时,是什么原因导致此设备的BAR5无法访问?让这种用户空间访问PCI BARs有意义吗?

EN

回答 2

Stack Overflow用户

发布于 2013-03-21 20:44:15

不确定这会有多大帮助,但我在为新的PCIe FPGA设备编写驱动程序时也看到了同样的情况。

当设备上出现错误时,MMAP-ed PCI BAR内存空间将返回0xFFFFFFFF (-1)。我能够解决这个问题的唯一方法是通过计算机的完全电源重置来重置该卡。

票数 2
EN

Stack Overflow用户

发布于 2017-07-25 18:39:54

我在调试NVMe硬盘热插拔时也遇到过同样的问题。如果在GRUB提示之前PCIe插槽中有硬盘,您可以热插拔该插槽中的其他驱动器,如果没有,pci_ioremap_bar()将返回内存区域,读取所有0xffffffff。奇怪的狗屎。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15528469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档