Linux 内核 4.7 (Arch ARM64) 不会在 /sys/bus/pci/devices/*/ 中为 PCI BAR0 创建 "resource0" 文件

Linux Kernel 4.7 (Arch ARM64) does not create "resource0" file in /sys/bus/pci/devices/*/ for PCI BAR0

我正在做一个项目,我需要从用户空间通过 PCI BAR0 访问 FPGA 内存。

我以前在旧内核中所做的是打开名为 resource0 的文件,它位于 /sys/bus/pci/devices/my_device/ 和然后使用 mmap() 函数将 FPGA 内存暴露给用户空间。

不幸的是,在内核版本 4.7(架构 ARM64)中,似乎由于某种原因没有创建 resource0 文件。

当我使用lspci时,我可以看到系统识别了FPGA的PCI BAR。 此外,当我搜索 /sys/bus/pci/devices/my_device/ 目录时,我可以看到有一个名为 resource 的文件,其中包含地址其中写入的 PCI BAR。

有没有人熟悉类似情况? 如何让 linux 创建 resource0 文件?

我理解你的担心,你可以从上游不接受的树补丁中尝试这个。

https://patchwork.codeaurora.org/patch/2059/

http://lists.infradead.org/pipermail/linux-arm-kernel/2015-July/359435.html

这将帮助您映射用户 space 中的 PCI 资源文件。