Third GPU fails BAR allocation, PCIe root 64-bit MMIO window too small for 3 large-BAR cards (O6, SystemReady firmware)

Hardware: Radxa Orion O6, 64GB. Three NVIDIA RTX 3060 (12GB) connected via the x16/x8 slot through a PCIe switch.

OS: Ubuntu 26.04, kernel 7.0.0-22-generic (aarch64), NVIDIA driver 595.71.05, booting via ACPI.

Problem: Only two of the three GPUs initialize. The third (bus c6) fails with BAR0 is 0M @ 0x0 and probe with driver nvidia failed with error -1. All three GPUs were working previously on this same hardware; the problem appeared after a fresh OS install.

Root cause (as far as I can tell): It’s not the NVIDIA driver and not a per-bridge _CRS problem. The PCIe root bridge’s 64-bit prefetchable window is too small to hold three large-BAR cards. From dmesg:

pci 0000:c0:00.0: bridge window [mem 0x1800000000-0x1851ffffff 64bit pref]

That root window is ~1.28GB total, shared by all three GPUs under it. Each RTX 3060 requests a ~256MB prefetchable BAR (Resizable BAR). Two cards fit; the third is refused:

pci 0000:c2:07.0: bridge window [mem size 0x12000000 64bit pref]: can't assign; no space
pci 0000:c6:00.0: BAR 1 [mem size 0x10000000 64bit pref]: can't assign; no space
pci 0000:c6:00.0: BAR 0 [mem size 0x01000000]: can't assign; no space

The DSDT QWordMemory descriptors advertise large per-segment ranges (16GB each), but the programmed root-port window above is only ~1.28GB, which is the actual constraint. pci=realloc=on is already set and cannot help, since it can only redistribute within the existing root window, not enlarge it.

Questions:

  1. Is there a BIOS setting to enlarge the PCIe root 64-bit MMIO window (an “Above 4G Decoding” / aperture-size equivalent)? I haven’t found one in the menus.

  2. Failing that, is the root window size fixed in the EDK2 platform source, and can it be increased in a firmware rebuild?

  3. Is there a way to disable Resizable BAR (in firmware) so each card requests a smaller BAR and three fit in the current window?

  4. Since this worked before a reinstall — did a firmware version or default change affect the root MMIO window sizing?

I can provide the full dmesg PCI enumeration log and the decompiled DSDT on request.

I love the support from the vendor. Matches the quality of the product

I bricked my orion trying to patch this myself. Then snapped pins on the chip trying to flash it back to vendor. Now after getting replacement chips, i’m still having issues. Boot to blackscreen, no CPU fan spinning. Try to flash another version, snap another pin

This has been a horrible experience. Almost two years and we’re still waiting for the functionality we were promised. What a joke.