+ -
当前位置:首页 → 问答吧 → 疑问: PCIe BAR 只有32bit, 怎么在64bit kernel上使用??

疑问: PCIe BAR 只有32bit, 怎么在64bit kernel上使用??

时间:2010-08-31

来源:互联网

本帖最后由 gaoping561 于 2010-08-31 22:19 编辑

有个帖子讨论过IOMMU, IOMMU解决了32bit设备在64bit系统中使用的问题, 主要是DMA的问题.
http://linux.chinaunix.net/bbs/v ... p;extra=&page=1

但是, 如果PCIe设备的BAR寄存器大小只有32bit,  能否在64bit kernel上使用呢?  我的系统物理内存为16G, 完全可能给这个32bit 的BAR分配一个64位的地址, 这样岂不是不能在64位系统中使用?

望高人指点. x86_64 Linux是否有这样的机制, 给32位的BAR分配4G空间内的resource?

作者: gaoping561   发布时间: 2010-08-31

本帖最后由 epegasus 于 2010-09-01 03:18 编辑

PCIe配置头好象也是32位的.这意味着PCIe 设备也只能使用4G的地址.
当然范围只4G,并不意味着物理地址就是0-4G,可能存在偏移.

作者: epegasus   发布时间: 2010-09-01