Enable Resizable BAR On Unsupported Motherboards

Recently [Rod Burlamaqui] released the arc-rebar project on GitHub, enabling Intel GPUs to work significantly more efficiently if the system’s mainboard does not support resizable BAR. It does require a Debian or Ubuntu installation and of course a supported Intel GPU.

Although the resizable base address register (ReBAR) feature has been part of the PCIe specification for a while, its use was quite limited until Intel released its Arc series of graphic cards. These use this feature to map much more of the GPU’s video RAM (VRAM) into the PC’s address space than the standard 256 MB, assuming that the system is capable of decoding addresses above 4 GB, i.e. allow for 64-bit BARs.

For GPU manufacturers like AMD and Nvidia this wasn’t so much of an issue as their GPU designs developed in a world where ReBAR didn’t exist, while Intel’s new GPU generations were designed with ReBAR as a core feature, which naturally cripples performance if the mainboard does not have it enabled during PCIe bus enumeration.

This initramfs-based fix runs before the GPU driver loads and performs the requisite BAR configuration. In testing with an Intel Arc B580 GPU on a 2015-era Intel Xeon mainboard the difference between the default and the fixed bandwidth was a bump from a pitiful 15 GB/s to a respectable 392 GB/s, showing how this one fix can breathe new life into older systems.

3 thoughts on “Enable Resizable BAR On Unsupported Motherboards”

  1. The article title here isn’t quite right.
    The problem as described in the actual (LLM-assisted/authored :/) ReadMe is that these specific Arc GPUs have an internal PCIe bridge whose BAR size is fixed to 8MB and which are automatically tied to the pcieport Linux kernel driver. When the xe kernel driver tries to set the GPU’s BAR size, it can’t do it because the PCIe bridge happens to be in an overlapping address range.
    This script addresses the problem by removing the pcieport kernel driver from that bridge, setting the GPU BAR size manually, and then having the kernel re-probe for devices, at which point it now sees the larger-BAR GPU.

    It’s a very slick hack, but it’s very Arc-specific and does not at all substitute for the prior art in this field which generically enables ReBAR by injecting DXE modules into the UEFI (i.e. what we usually call the BIOS).

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.