Linux 7.0 如何搞砸了六张显卡的 BAR 分配?

Fitting Four 32 GB Resizable Bars Behind a PCIe Switch on Linux

Linux 7.0 如何搞砸了六张显卡的 BAR 分配?

我在 Linux 上尝试将四块 AMD Radeon AI PRO R9700 和两块 RTX 3090 塞进一个 PCIe 交换机后,遇到了令人头疼的地址空间问题。BIOS 无法一次性映射六块 32 GB 的 Resizable BAR,而 Linux 7.0 内核在计算桥接窗口大小时存在一个回归 bug,导致部分显卡无法分配内存。为了解决这个问题,我编写了一个名为 gpu-rebar-layout 的内核模块,在 initramfs 阶段手动调整 BAR 对齐并强制重新扫描。最终,所有显卡都成功获得了完整的 32 GB 映射,实现了高达 54.7 GB/s 的 P2P 传输速度。

Linux 7.0 的布局方式导致四个窗口跨越了 224 GB,结果只有两块 R9700 获得了 BAR,交换机其余部分一无所获。

同日更多故事

2026-11-12