将 64 位 Linux 主机上的地址分配给 64 位 pcie 卡



>我在 64 位 Linux 主机上使用 64 位 PCI Express 卡,问题是它的 bar 是 64 位的,但总是得到一个位于 32 位地址范围内的地址,即更高的 32 位 BAR 始终为零。

如何强制使用真正的 64 位地址?我试图通过覆盖 BIOS 枚举来强制执行它,并将启动时间参数添加到内核,以便内核可以枚举 pci 设备,但它的结果与 BIOS 相同。

Linux 不支持真正的 64 位地址吗?

您可以尝试以下操作。首先,在内核中启用PAE(物理地址扩展)。然后使用 setpci 命令或从驱动程序,将较高的 32 位条寄存器更改为非零值,如果您的端点设备位于 pci 桥接器下,则不要忘记适当地更改预取基本上限 32 位和预取限制上限 32 位寄存器。

最新更新