Linux kernel 正在获取PCI区域的“结构页”

Linux kernel 正在获取PCI区域的“结构页”,linux-kernel,linux-device-driver,Linux Kernel,Linux Device Driver,我正在编写一个内核模块(VirtualBox中的2.6.32-358.el6.x86_64)。 我尝试获取与物理地址相对应的0xf0000000,该地址似乎位于PCI区域(/proc/iomem显示f0000000-f001ffff:0000:00:03.0) 但是,它似乎不是有效的指针,因为每次尝试访问p字段都会导致系统崩溃(完全冻结) 上面的代码有什么问题?PCI地址范围是否具有适当的结构页?此区域没有结构页,如LDD3中所述: unsigned long phys = 0xf000000

我正在编写一个内核模块(VirtualBox中的2.6.32-358.el6.x86_64)。 我尝试获取与物理地址相对应的
0xf0000000
,该地址似乎位于PCI区域(
/proc/iomem
显示
f0000000-f001ffff:0000:00:03.0

但是,它似乎不是有效的指针,因为每次尝试访问
p
字段都会导致系统崩溃(完全冻结)


上面的代码有什么问题?PCI地址范围是否具有适当的
结构页

此区域没有
结构页
,如LDD3中所述:

unsigned long phys = 0xf0000000;
struct page *p = pfn_to_page(phys >> PAGE_SHIFT);
printk(KERN_NOTICE "page %p", p); // shows ffffea0003480000