2017-08-03 69 views
1

我想从用户区访问PCIe IO。关于powerpc的io_remap_pfn_range问​​题

在模块驱动程序中,我可以使用ioremap()返回的指针进行写入/读取,没有任何问题。

从userland,我想使用mmap()返回的指针,但主机挂起我在PCIe总线上写入或读取的任何内容。 我在调用io_remap_pfn_range(vma, vma->vm_start, start >> PAGE_SHIFT, vma->vm_end - vma->vm_start, vma->vm_page_prot);的文件操作结构中实现了mmap调用,其中start是由pci_resource_start()返回的值。

我错过了什么?

请注意,我的模块在x86上正常工作。

谢谢,

佛瑞德

+0

您是否试图访问PCIe * IO *空间或PCIe内存空间? –

+0

嗨,我试图访问PCIe IO空间。 – Fred

回答

1

POWER(电源)体系结构不支持的PCIe IO存取;您需要改用PCIe内存循环。很可能您的PCIe设备具有用于MMIO空间的相应资源,也许您可​​以使用它。

此外,根据您的使用情况,您可能希望对位于/sys/bus/pci/devices/<id>下的sysfs中的resource<N>文件执行访问。这可能意味着你根本不需要任何内核代码。

+0

好的,谢谢。我已经实现了读/写方法,所以我可以从设备执行I/O访问。这不是太糟糕。 – Fred