Wat is arc-rebar?
arc-rebar is een tool die is ontworpen voor gebruikers van Intel Arc GPU's op oudere moederborden waarbij de BIOS geen Resizable BAR (ReBAR) ondersteunt. Zonder ReBAR ontstaat het "Small BAR"-probleem, waardoor de CPU slechts toegang heeft tot 256 MB van het VRAM, wat leidt tot enorme prestatieverliezen en beperkingen in applicaties.
Werking
De tool lost dit probleem op door tijdens het bootproces, via de initramfs, een PCI-register aan te passen met setpci en de PCIe-rootport te her-enumereren. Dit gebeurt voordat de GPU-driver wordt geladen. Hierdoor kan de GPU zijn volledige VRAM-bereik beschikbaar stellen aan het systeem zonder dat de BIOS-firmware of de kernel-mainline aangepast hoeft te worden.
Belangrijkste resultaten en vereisten
- Prestaties: Testen tonen een enorme sprong in VRAM-bandbreedte (van 15 GB/s naar 392 GB/s) en een significante verbetering in Vulkan-prestaties.
- Systeemeisen: De tool is bedoeld voor Debian en Ubuntu, vereist kernel 6.12 of nieuwer, en de BIOS-instelling "Above 4G Decoding" moet ingeschakeld zijn.
- Veiligheid: Er is een uitgebreid diagnose-systeem en een rollback-mechanisme ingebouwd zodat het bootproces nooit faalt.
Licentie
Let op dat dit project geen open-source software is; het is gratis voor persoonlijk gebruik, maar commercieel gebruik vereist een aparte licentie.
arc-rebar — Resizable BAR voor Intel Arc GPU's op firmware zonder ReBAR-ondersteuning
GEBRUIK OP EIGEN RISICO. GEEN GARANTIE. Wordt verstrekt "as is". De auteur aanvaardt geen aansprakelijkheid voor gegevensverlies, hardwarebeschadiging, downtime of enig ander verlies dat voortvloeit uit het gebruik. De tool schrijft één PCI-register en her-enumereert één PCIe-rootport tijdens het opstarten; het is ontworpen om geen effect te hebben in plaats van een schadelijk effect, maar dat kan niet worden gegarandeerd op hardware die de auteur nooit heeft gezien. Lees DISCLAIMER.md volledig door voordat u iets uitvoert. Maak eerst een back-up.
Wat is het?
arc-rebar is een tool die tijdens het opstarten wordt uitgevoerd en ervoor zorgt dat een discrete Intel Arc GPU zijn volledige VRAM beschikbaar stelt op moederborden waarvan de BIOS geen Resizable BAR-optie heeft — zonder de firmware, de kernel of de drivers van Intel aan te passen. Het draait vanuit de initramfs bij elke boot, voordat de GPU-driver wordt geladen, en bevat diagnostische tools die aangeven of u het probleem heeft en bewijzen dat de fix heeft gewerkt.
Testresultaten
Getest op een Supermicro X9DRH-7TF (Intel C602, twee Xeon E5-2670 v2, AMI BIOS 3.2 uit 2015 — geen ReBAR-optie) met een Intel Arc B580 12 GB, Debian 13, kernel 7.1.8, xe-driver. De fix is persistent over reboots.
| Kenmerk | Voor | Na |
| CPU-zichtbare VRAM (BAR2) | 256 MiB | 16 GiB window — alle 12 GB VRAM bereikbaar |
| Vulkan device heap | 11,68 GiB device-only + 256 MiB host-visible scrap | één 11,93 GiB heap |
| Grootste enkele OpenCL-allocatie | 256 MiB | 1 GiB (limiet van de runtime zelf) |
| Gemeten VRAM-bandbreedte (saxpy) | 15 GB/s | 392 GB/s |
| 4K Vulkan filter (ffmpeg gblur) | stutters, 0 frames | 39–50 fps |
| Media encode/decode (VAAPI) | werkt | werkt (werd nooit beïnvloed) |
---
1. Heeft u dit probleem?
Uw kernel-log geeft dit direct aan:
sudo dmesg | grep -E 'resize bar|Small BAR'
Indien u de volgende regels ziet, is er sprake van een probleem: xe 0000:86:00.0: [drm] Attempting to resize bar from 256MiB -> 16384MiB xe 0000:86:00.0: [drm] Failed to resize BAR2 to 16384MiB (-ENOSPC). Consider enabling 'Resizable BAR' support in your BIOS xe 0000:86:00.0: [drm] Small BAR device
Small BAR device betekent dat slechts 256 MB van uw VRAM toegankelijk is voor de CPU. Elke enkele allocatie groter dan 256 MB mislukt; alles wat data via dat venster streamt, wordt extreem traag. Om te zien of dit specifiek de oorzaak is die deze tool oplost:
sudo dmesg | grep 'was not released'
De regel pcieport 0000:80:03.0: bridge window [...]: was not released (still contains assigned resources) is het kenmerkende signaal. De eigen check van de tool voert dit en meer uit:
- Via de .deb:
sudo arc-rebar diagnose
- Vanuit de broncode:
sudo ./diagnose.sh
De laatste regel is dan: YES: pinned window, all safety checks pass (de tool is toepasbaar), BAR already at full size (niet nodig), of NOT SAFE / NOT APPLICABLE here: skip reason=... (zie §5).
---
2. Wat is er precies aan de hand?
Het is niet simpelweg een kwestie van "uw BIOS is te oud". Intel Arc-kaarten hebben een geïntegreerde PCIe-switch op de kaart. De upstream-poort van de switch heeft zijn eigen kleine BAR (8 MB), en de firmware plaatst deze in hetzelfde prefetchable memory-venster als de VRAM BAR van de GPU:
root port → prefetchable window 264 MB (vastgepind door de regel hieronder) $\quad \downarrow$ switch upstream → BAR0 8 MB (eigendom van pcieport, ongebruikt, nooit vrijgegeven) $\quad \downarrow$ switch downstream $\quad \downarrow$ Arc GPU → BAR2 256 MB (wil 16 GB worden)
Wanneer de xe-driver de kernel vraagt om BAR2 te vergroten, geeft de kernel de bridge-vensters in de keten vrij — maar nooit de BAR van een bridge zelf. Bij de rootport ziet de kernel dat de BAR0 van de switch nog steeds is toegewezen binnen het venster, weigert deze vrij te geven, en de aanvraag van 16 GB kan nergens heen: -ENOSPC. De hoeveelheid vrije adresruimte is irrelevant; de testmachine had 63 GB vrij boven de 4 GB.
Intel's eigen ingenieurs identificeerden hetzelfde en stelden een kernel-quirk voor ("PCI: Release BAR0 of an integrated bridge to allow GPU BAR resize", 2025, device ID's 0x4fa0 / 0x4fa1 / 0xe2ff). Deze is echter blijven steken in de review en zit niet in de mainline kernel (tot versie 7.1). Deze tool doet het equivalent vanuit de userspace.
- Volledig onderzoek met alle logregels:
docs/ROOT-CAUSE.md.
- Alle testcommando's met voor/na cijfers:
docs/TESTS.md.
---
3. Wat doet de tool precies?
Het boot-script scripts/init-premount/arc-rebar draait één keer per boot vanuit de initramfs, nadat udev PCI heeft geënumereerd en voordat het root-bestandssysteem is gemount.
| Stap | Actie | Stopt/weigert indien |
| 0 | Leest de kernel command line | norebar aanwezig → doet niets |
| 1 | Zoekt de GPU (vendor 8086, klasse VGA, met ReBAR capability) | Geen gevonden → doet niets |
| 2 | Zoekt de rootport (eerste hop onder de host bridge) | Pad is niet exact root port → switch upstream → switch downstream → GPU → skip unexpected-topology |
| 3 | Controleert of de rootport alleen deze kaart bevat | Andere apparaten aanwezig (NVMe, NIC...) → skip shared-root-port |
| 4 | Leest ReBAR-capaciteit van de kaart (doel = grootste ondersteunde maat) | — |
| 5 | Meet MMIO-ruimte via /proc/iomem boven 4 GB | Geen venster boven 4 GB → skip no-mmio-window-above-4g; niets $\ge$ 512 MB past → skip mmio-window-too-small |
| 6 | Vergelijkt huidige maat met doelmaat | Al op doelmaat → geen actie (no-op) |
| 7 | Koppel drivers (unbind) die al verbonden zijn onder de rootport (xe, sndhdaintel) | — |
| 8 | Schrijft het ReBAR-controlregister (via setpci) naar de doelmaat | Schrijven mislukt → skip setpci-write-failed |
| 9 | Verwijdert de rootport (echo 1 > /sys/bus/pci/devices/<rootport>/remove) | — |
| 10 | Rescan (echo 1 > /sys/bus/pci/rescan) | — |
| 11 | Verifieert of BAR2 een adres heeft gekregen. Zo niet: rollback naar oude maat | Rollback mislukt → FAILED (boot gaat door; gebruik norebar) |
Elke exit-path geeft 0 terug — de boot mislukt nooit. Het resultaat staat altijd in de kernel-log als arc-rebar: PLAN: <verdict>. De optie pci=realloc op de kernel command line is vereist zodat de rescan de bridge-vensters mag dimensioneren.
Voorbeeld van een succesvolle boot-log:
[ 3.241] xe 0000:86:00.0: [drm] Attempting to resize bar from 256MiB -> 16384MiB
[ 3.242] xe 0000:86:00.0: [drm] Failed to resize BAR2 to 16384MiB (-ENOSPC). Consider enabling 'Resizable BAR' support in your BIOS
[ 3.244] xe 0000:86:00.0: [drm] Small BAR device <-- Eerste probe van xe, vóór de fix
[ 4.182] arc-rebar: gpu=0000:86:00.0 rootport=0000:80:03.0 cap=0x0007f000 ctl=0x00000822 size_field current=8 target=14
[ 4.695] arc-rebar: unbound xe from 0000:86:00.0
[ 5.753] arc-rebar: wrote ECAP_REBAR ctl=0x00000e22; removing 0000:80:03.0 and rescanning
[ 7.861] xe 0000:86:00.0: [drm] VISIBLE VRAM: 0x0000381000000000, 0x0000000400000000 <-- Re-probe op het 16G venster
[ 11.209] arc-rebar: PLAN: done gpu=0000:86:00.0 bar2=16384M
De xe-driver laadt vanuit de initramfs voordat dit script draait, dus de eerste poging mislukt altijd en logt "Small BAR device". Dit is verwacht. Beoordeel het resultaat aan de hand van de VISIBLE VRAM regel, arc-rebar verify, of vulkaninfo.
Wat verandert er op uw systeem?
De installatie raakt uitsluitend de volgende zaken aan (alles is omkeerbaar):
| Wat | Locatie | Back-up |
| Initramfs hook en boot-script | /etc/initramfs-tools/hooks/arc-rebar, /etc/initramfs-tools/scripts/init-premount/arc-rebar | — |
| Herbouwde initramfs | /boot/initrd.img-<kernel> | /boot/initrd.img-<kernel>.arc-rebar.bak |
pci=realloc toegevoegd aan kernel command line | /etc/default/grub | /etc/default/grub.arc-rebar.bak |
| Marker van de installatie | /var/lib/arc-rebar/hook-origin | — |
Wat de tool NIET doet
- Geen wijzigingen aan firmware of BIOS: Niets wat geschreven wordt overleeft een power cycle op de GPU; het register wordt bij elke boot opnieuw geprogrammeerd.
- Maakt VRAM niet groter: Een 12 GB kaart krijgt een 16 GB venster omdat BAR-maten machten van twee zijn. 12 GB wordt daarin gemapt; de rest van het venster wijst naar niets.
- Wijzigt de PCIe-linksnelheid niet.
- Lost de VAAPI SIGBUS crash niet op: Dit is een apart probleem in de Intel media driver (zie §10).
Het updaten van de GPU-firmware is geen alternatief. Testen met FWCODE 21.1137 → 21.1182 en OptionROM 23.1051.0.0 → 23.1066.0.0 veranderde niets; de BAR bleef op 256 MB steken en de kernel resize mislukte nog steeds met -ENOSPC. De beperking ligt aan de kant van de host.
---
4. Vereisten
- OS: Debian of Ubuntu (
initramfs-tools).
- Kernel: 6.12 of nieuwer aanbevolen (voor ReBAR-ondersteuning in de
xe driver).
- Software:
pciutils.
- BIOS: "Above 4G Decoding" moet ingeschakeld zijn, en er moet een MMIO-venster boven 4 GB zijn dat minstens zo groot is als uw VRAM (afgerond naar een macht van twee).
diagnose controleert dit.
- Hardware: De GPU moet direct in een slot op een eigen rootport zitten (geen externe PCIe-switch, riser of Thunderbolt ertussen).
diagnose controleert dit.
- Toegang: Een tweede toegangsweg naar de machine (SSH) als u de optionele live-test uitvoert, aangezien het lokale scherm ongeveer tien seconden uitgaat.
- Andere initramfs systemen (dracut, mkinitcpio): Het boot-script is plain POSIX sh en heeft alleen
setpci nodig; porting hiervan wordt beschouwd als een "Modification" onder de licentie — vraag eerst toestemming.
---
5. Toepasbaarheid — wanneer weigert de tool?
diagnose voert de checks van het boot-script uit in dry-run modus. De installer weigert de installatie tenzij het antwoord "act" is.
| Situatie | Verdict |
| Intel Arc (Battlemage of Alchemist) direct in slot, small BAR, ruimte boven 4 GB | acts — dit is het scenario dat gefixt wordt |
| Firmware ondersteunt al ReBAR / BAR is al op maximum | none — no-op |
| Geen Intel GPU met ReBAR-capaciteit (AMD, NVIDIA, Intel iGPU) | none — no-op |
| GPU achter externe switch, riser of Thunderbolt | skip unexpected-topology |
| Andere apparaten delen de rootport van de GPU | skip shared-root-port |
| Geen MMIO-venster boven 4 GB (Above 4G Decoding uit) | skip no-mmio-window-above-4g |
| Venster boven 4 GB te klein voor zelfs 512 MB | skip mmio-window-too-small |
| Venster past een kleinere BAR dan het maximum van de kaart | acts met de kleinere maat, logt de step-down |
| BAR2 niet toegewezen na de rescan | rolls back naar originele maat; rolled-back |
norebar op de kernel command line | skip norebar |
---
6. Installatie
Debian / Ubuntu, via de .deb
- Download de
.deb en SHA256SUMS van de Releases-pagina.
- Controleer de checksum:
sha256sum -c --ignore-missing SHA256SUMS.
- Installeer de tool:
sudo apt install ./arc-rebar1.0.3all.deb (stelt nog niets in).
- Diagnose:
sudo arc-rebar diagnose (laatste regel moet zijn: "YES: pinned window, all safety checks pass").
- Installatie:
sudo arc-rebar install (bevestig met ACCEPT).
- Herstart:
sudo reboot.
- Verificatie:
sudo arc-rebar verify (verwacht: "RESULT: PASS").
Vanuit de broncode
git clone https://github.com/RodBurlamaqui/Intel-ARC-Rebar.git
cd Intel-ARC-Rebar
sudo ./diagnose.sh → controleer op "YES...".
sudo ./install.sh → bevestig met ACCEPT.
sudo reboot.
sudo ./verify.sh → verwacht: "RESULT: PASS".
Voorzichtige methode (aanbevolen): Bewijs dat het werkt voordat u het bij de boot activeert. Gebruik sudo arc-rebar prepare om alleen pci=realloc toe te voegen, herstart, en voer sudo arc-rebar live-test uit via SSH. Dit voert de fix één keer uit zonder permanente wijzigingen.
---
7. Na installatie
Bij elke boot voert de hook de fix uit en bindt de xe driver opnieuw op het volledige venster (duurt ongeveer 8 seconden). Controleer dit met: sudo arc-rebar verify.
Een succesvolle verificatie toont:
[ok] pci=realloc active
[ok] hook installed
[ok] boot verdict: done gpu=... bar2=16384M
[ok] 0000:86:00.0 BAR2 = 16384 MiB
[ok] 0000:86:00.0 driver: xe
[ok] vulkan: memoryHeaps: count = 2 ... 11.93 GiB
- RESULT: PASS
---
8. Diagnostiek
De map diag/ bevat tools die de status analyseren:
| Commando | Wat het vertelt |
sudo arc-rebar diag bar-pin-check | BAR2 maat vs maximum, rootport venster, welke bridge BAR0 het pinnt, MMIO ruimte, kernel signatuur en verdict. |
sudo arc-rebar diag pcie-link-truth | Welke PCIe-link fysiek is (de GPU-functie zelf rapporteert vaak een virtuele 2.5 GT/s x1 poort). |
arc-rebar diag vulkan-heaps | Een aparte 256 MiB heap = small BAR; één gemengde heap = full aperture. |
arc-rebar diag ocl-alloc-ceiling | De werkelijke limiet voor enkele allocaties en gemeten bandbreedte. |
sudo arc-rebar diag gpu-health | PCIe error bits, AER reports, hangs/resets, temperaturen, clocks en throttle redenen. |
---
9. Veiligheid, nooduitgang en instellingen
- Nooduitgang: Druk in het GRUB-menu op
e, voeg norebar toe aan de linux-regel en boot. Het script doet dan niets en u keert terug naar de 256 MB BAR.
- Veiligheid: De tool faalt nooit de boot. Elke fout wordt gelogd en het proces gaat door.
- No-op: Als firmware of een toekomstige kernel de BAR zelf vergroot, ziet het script "already at target" en stopt het direct.
- Rollback: Als de nieuwe BAR niet geplaatst kan worden, herstelt de tool de oude maat in plaats van de GPU zonder adres achter te laten.
- Kernel parameters:
norebar: schakelt de tool uit.
rebar.dev=0000:86:00.0: kiest een specifieke GPU.
rebar.size=N: dwingt een maat af ($2^{N+20}$ bytes: $14 = 16\text{ GB}, 13 = 8\text{ GB}, 12 = 4\text{ GB}$).
---
10. Gerelateerd project
Intel-ARC-B580-vaapi-sigbus-fix Dit is de andere helft van het verhaal. Voordat de BAR vergroot kon worden, crashte de Intel media driver (SIGBUS in vaInitialize) op elke small-BAR kaart. Dat project backport de fix van Intel naar een Debian 13 .deb. Het stopt de crash; arc-rebar verwijdert de oorzaak. Houd beide geïnstalleerd.
---
11. Verwijderen
- Via
.deb: sudo apt purge arc-rebar (verwijdert tool en boot-hook).
- Via broncode:
sudo ./uninstall.sh.
apt remove (zonder purge) laat de boot-hook staan. Beide laten pci=realloc in GRUB staan, wat ongevaarlijk is. Om dit volledig ongedaan te maken:
sudo cp /etc/default/grub.arc-rebar.bak /etc/default/grub
sudo update-grub
---
12. Structuur van de repository
scripts/init-premount/arc-rebar: De boot-time fix (POSIX sh).
hooks/arc-rebar: Initramfs-tools hook.
diagnose.sh, prepare.sh, live-test.sh, install.sh, verify.sh, uninstall.sh: Beheerscripts.
bin/arc-rebar: Het arc-rebar commando.
diag/: Diagnostische tools (binaries, source code en Makefile).
debian/, build-deb.sh: Build-bestanden voor de .deb.
docs/: Documentatie, inclusief ROOT-CAUSE.md en TESTS.md.
---
13. Bijdragen
Bug-rapporten zijn welkom. Open een issue met de output van sudo arc-rebar diagnose en journalctl -k -b | grep -E 'arc-rebar|was not released|Small BAR'.
Modificaties en ports vereisen voorafgaande schriftelijke goedkeuring van de copyright-houder (LICENSE §3.2). Open een issue om wijzigingen voor te stellen.
---
14. Licentie
Copyright (c) 2026 Rod Burlamaqui. Gelicentieerd onder de arc-rebar Software License Agreement:
- Persoonlijk gebruik: Gratis voor privé, niet-commercieel gebruik door een individu.
- Commercieel en zakelijk gebruik: Een aparte licentie is vereist voor elk gebruik door of voor een bedrijf, instelling, hardware- of softwareleverancier.
- Modificatie: Geen afgeleide werken, ports of gemodificeerde distributies zonder voorafgaande schriftelijke toestemming.
- Wederverkoop: Verboden zonder goedkeuring. Gratis redistributie van volledige, ongewijzigde kopieën is toegestaan.
- Geen garantie: Zie LICENSE §5–6 en DISCLAIMER.md.
Let op: Dit is geen open-source licentie.
---
15. Credits
- andersevenrud — voor de
setpci + remove/rescan methode.
- Ilpo Järvinen en Lucas De Marchi (Intel) — voor de kernel-side analyse en de quirk die het mechanisme bevestigde.
- De kernel-log — specifiek de regel
was not released (still contains assigned resources), die het volledige antwoord was zodra iemand deze las.
arc-rebar — Resizable BAR voor Intel Arc GPU's op firmware zonder ReBAR-ondersteuning
GEBRUIK OP EIGEN RISICO. GEEN GARANTIE. Wordt verstrekt "as is". De auteur aanvaardt geen aansprakelijkheid voor gegevensverlies, hardwarebeschadiging, downtime of enig ander verlies dat voortvloeit uit het gebruik. De tool schrijft één PCI-register en her-enumereert één PCIe-rootport tijdens het opstarten; het is ontworpen om geen effect te hebben in plaats van een schadelijk effect, maar dat kan niet worden gegarandeerd op hardware die de auteur nooit heeft gezien. Lees DISCLAIMER.md volledig door voordat u iets uitvoert. Maak eerst een back-up.
Wat is het?
arc-rebar is een tool die tijdens het opstarten wordt uitgevoerd en ervoor zorgt dat een discrete Intel Arc GPU zijn volledige VRAM beschikbaar stelt op moederborden waarvan de BIOS geen Resizable BAR-optie heeft — zonder de firmware, de kernel of de drivers van Intel aan te passen. Het draait vanuit de initramfs bij elke boot, voordat de GPU-driver wordt geladen, en bevat diagnostische tools die aangeven of u het probleem heeft en bewijzen dat de fix heeft gewerkt.
Testresultaten
Getest op een Supermicro X9DRH-7TF (Intel C602, twee Xeon E5-2670 v2, AMI BIOS 3.2 uit 2015 — geen ReBAR-optie) met een Intel Arc B580 12 GB, Debian 13, kernel 7.1.8, xe-driver. De fix is persistent over reboots.
| Kenmerk | Voor | Na |
| CPU-zichtbare VRAM (BAR2) | 256 MiB | 16 GiB window — alle 12 GB VRAM bereikbaar |
| Vulkan device heap | 11,68 GiB device-only + 256 MiB host-visible scrap | één 11,93 GiB heap |
| Grootste enkele OpenCL-allocatie | 256 MiB | 1 GiB (limiet van de runtime zelf) |
| Gemeten VRAM-bandbreedte (saxpy) | 15 GB/s | 392 GB/s |
| 4K Vulkan filter (ffmpeg gblur) | stutters, 0 frames | 39–50 fps |
| Media encode/decode (VAAPI) | werkt | werkt (werd nooit beïnvloed) |
---
1. Heeft u dit probleem?
Uw kernel-log geeft dit direct aan:
sudo dmesg | grep -E 'resize bar|Small BAR'
Indien u de volgende regels ziet, is er sprake van een probleem: xe 0000:86:00.0: [drm] Attempting to resize bar from 256MiB -> 16384MiB xe 0000:86:00.0: [drm] Failed to resize BAR2 to 16384MiB (-ENOSPC). Consider enabling 'Resizable BAR' support in your BIOS xe 0000:86:00.0: [drm] Small BAR device
Small BAR device betekent dat slechts 256 MB van uw VRAM toegankelijk is voor de CPU. Elke enkele allocatie groter dan 256 MB mislukt; alles wat data via dat venster streamt, wordt extreem traag. Om te zien of dit specifiek de oorzaak is die deze tool oplost:
sudo dmesg | grep 'was not released'
De regel pcieport 0000:80:03.0: bridge window [...]: was not released (still contains assigned resources) is het kenmerkende signaal. De eigen check van de tool voert dit en meer uit:
- Via de .deb:
sudo arc-rebar diagnose
- Vanuit de broncode:
sudo ./diagnose.sh
De laatste regel is dan: YES: pinned window, all safety checks pass (de tool is toepasbaar), BAR already at full size (niet nodig), of NOT SAFE / NOT APPLICABLE here: skip reason=... (zie §5).
---
2. Wat is er precies aan de hand?
Het is niet simpelweg een kwestie van "uw BIOS is te oud". Intel Arc-kaarten hebben een geïntegreerde PCIe-switch op de kaart. De upstream-poort van de switch heeft zijn eigen kleine BAR (8 MB), en de firmware plaatst deze in hetzelfde prefetchable memory-venster als de VRAM BAR van de GPU:
root port → prefetchable window 264 MB (vastgepind door de regel hieronder) $\quad \downarrow$ switch upstream → BAR0 8 MB (eigendom van pcieport, ongebruikt, nooit vrijgegeven) $\quad \downarrow$ switch downstream $\quad \downarrow$ Arc GPU → BAR2 256 MB (wil 16 GB worden)
Wanneer de xe-driver de kernel vraagt om BAR2 te vergroten, geeft de kernel de bridge-vensters in de keten vrij — maar nooit de BAR van een bridge zelf. Bij de rootport ziet de kernel dat de BAR0 van de switch nog steeds is toegewezen binnen het venster, weigert deze vrij te geven, en de aanvraag van 16 GB kan nergens heen: -ENOSPC. De hoeveelheid vrije adresruimte is irrelevant; de testmachine had 63 GB vrij boven de 4 GB.
Intel's eigen ingenieurs identificeerden hetzelfde en stelden een kernel-quirk voor ("PCI: Release BAR0 of an integrated bridge to allow GPU BAR resize", 2025, device ID's 0x4fa0 / 0x4fa1 / 0xe2ff). Deze is echter blijven steken in de review en zit niet in de mainline kernel (tot versie 7.1). Deze tool doet het equivalent vanuit de userspace.
- Volledig onderzoek met alle logregels:
docs/ROOT-CAUSE.md.
- Alle testcommando's met voor/na cijfers:
docs/TESTS.md.
---
3. Wat doet de tool precies?
Het boot-script scripts/init-premount/arc-rebar draait één keer per boot vanuit de initramfs, nadat udev PCI heeft geënumereerd en voordat het root-bestandssysteem is gemount.
| Stap | Actie | Stopt/weigert indien |
| 0 | Leest de kernel command line | norebar aanwezig → doet niets |
| 1 | Zoekt de GPU (vendor 8086, klasse VGA, met ReBAR capability) | Geen gevonden → doet niets |
| 2 | Zoekt de rootport (eerste hop onder de host bridge) | Pad is niet exact root port → switch upstream → switch downstream → GPU → skip unexpected-topology |
| 3 | Controleert of de rootport alleen deze kaart bevat | Andere apparaten aanwezig (NVMe, NIC...) → skip shared-root-port |
| 4 | Leest ReBAR-capaciteit van de kaart (doel = grootste ondersteunde maat) | — |
| 5 | Meet MMIO-ruimte via /proc/iomem boven 4 GB | Geen venster boven 4 GB → skip no-mmio-window-above-4g; niets $\ge$ 512 MB past → skip mmio-window-too-small |
| 6 | Vergelijkt huidige maat met doelmaat | Al op doelmaat → geen actie (no-op) |
| 7 | Koppel drivers (unbind) die al verbonden zijn onder de rootport (xe, sndhdaintel) | — |
| 8 | Schrijft het ReBAR-controlregister (via setpci) naar de doelmaat | Schrijven mislukt → skip setpci-write-failed |
| 9 | Verwijdert de rootport (echo 1 > /sys/bus/pci/devices/<rootport>/remove) | — |
| 10 | Rescan (echo 1 > /sys/bus/pci/rescan) | — |
| 11 | Verifieert of BAR2 een adres heeft gekregen. Zo niet: rollback naar oude maat | Rollback mislukt → FAILED (boot gaat door; gebruik norebar) |
Elke exit-path geeft 0 terug — de boot mislukt nooit. Het resultaat staat altijd in de kernel-log als arc-rebar: PLAN: <verdict>. De optie pci=realloc op de kernel command line is vereist zodat de rescan de bridge-vensters mag dimensioneren.
Voorbeeld van een succesvolle boot-log:
[ 3.241] xe 0000:86:00.0: [drm] Attempting to resize bar from 256MiB -> 16384MiB
[ 3.242] xe 0000:86:00.0: [drm] Failed to resize BAR2 to 16384MiB (-ENOSPC). Consider enabling 'Resizable BAR' support in your BIOS
[ 3.244] xe 0000:86:00.0: [drm] Small BAR device <-- Eerste probe van xe, vóór de fix
[ 4.182] arc-rebar: gpu=0000:86:00.0 rootport=0000:80:03.0 cap=0x0007f000 ctl=0x00000822 size_field current=8 target=14
[ 4.695] arc-rebar: unbound xe from 0000:86:00.0
[ 5.753] arc-rebar: wrote ECAP_REBAR ctl=0x00000e22; removing 0000:80:03.0 and rescanning
[ 7.861] xe 0000:86:00.0: [drm] VISIBLE VRAM: 0x0000381000000000, 0x0000000400000000 <-- Re-probe op het 16G venster
[ 11.209] arc-rebar: PLAN: done gpu=0000:86:00.0 bar2=16384M
De xe-driver laadt vanuit de initramfs voordat dit script draait, dus de eerste poging mislukt altijd en logt "Small BAR device". Dit is verwacht. Beoordeel het resultaat aan de hand van de VISIBLE VRAM regel, arc-rebar verify, of vulkaninfo.
Wat verandert er op uw systeem?
De installatie raakt uitsluitend de volgende zaken aan (alles is omkeerbaar):
| Wat | Locatie | Back-up |
| Initramfs hook en boot-script | /etc/initramfs-tools/hooks/arc-rebar, /etc/initramfs-tools/scripts/init-premount/arc-rebar | — |
| Herbouwde initramfs | /boot/initrd.img-<kernel> | /boot/initrd.img-<kernel>.arc-rebar.bak |
pci=realloc toegevoegd aan kernel command line | /etc/default/grub | /etc/default/grub.arc-rebar.bak |
| Marker van de installatie | /var/lib/arc-rebar/hook-origin | — |
Wat de tool NIET doet
- Geen wijzigingen aan firmware of BIOS: Niets wat geschreven wordt overleeft een power cycle op de GPU; het register wordt bij elke boot opnieuw geprogrammeerd.
- Maakt VRAM niet groter: Een 12 GB kaart krijgt een 16 GB venster omdat BAR-maten machten van twee zijn. 12 GB wordt daarin gemapt; de rest van het venster wijst naar niets.
- Wijzigt de PCIe-linksnelheid niet.
- Lost de VAAPI SIGBUS crash niet op: Dit is een apart probleem in de Intel media driver (zie §10).
Het updaten van de GPU-firmware is geen alternatief. Testen met FWCODE 21.1137 → 21.1182 en OptionROM 23.1051.0.0 → 23.1066.0.0 veranderde niets; de BAR bleef op 256 MB steken en de kernel resize mislukte nog steeds met -ENOSPC. De beperking ligt aan de kant van de host.
---
4. Vereisten
- OS: Debian of Ubuntu (
initramfs-tools).
- Kernel: 6.12 of nieuwer aanbevolen (voor ReBAR-ondersteuning in de
xe driver).
- Software:
pciutils.
- BIOS: "Above 4G Decoding" moet ingeschakeld zijn, en er moet een MMIO-venster boven 4 GB zijn dat minstens zo groot is als uw VRAM (afgerond naar een macht van twee).
diagnose controleert dit.
- Hardware: De GPU moet direct in een slot op een eigen rootport zitten (geen externe PCIe-switch, riser of Thunderbolt ertussen).
diagnose controleert dit.
- Toegang: Een tweede toegangsweg naar de machine (SSH) als u de optionele live-test uitvoert, aangezien het lokale scherm ongeveer tien seconden uitgaat.
- Andere initramfs systemen (dracut, mkinitcpio): Het boot-script is plain POSIX sh en heeft alleen
setpci nodig; porting hiervan wordt beschouwd als een "Modification" onder de licentie — vraag eerst toestemming.
---
5. Toepasbaarheid — wanneer weigert de tool?
diagnose voert de checks van het boot-script uit in dry-run modus. De installer weigert de installatie tenzij het antwoord "act" is.
| Situatie | Verdict |
| Intel Arc (Battlemage of Alchemist) direct in slot, small BAR, ruimte boven 4 GB | acts — dit is het scenario dat gefixt wordt |
| Firmware ondersteunt al ReBAR / BAR is al op maximum | none — no-op |
| Geen Intel GPU met ReBAR-capaciteit (AMD, NVIDIA, Intel iGPU) | none — no-op |
| GPU achter externe switch, riser of Thunderbolt | skip unexpected-topology |
| Andere apparaten delen de rootport van de GPU | skip shared-root-port |
| Geen MMIO-venster boven 4 GB (Above 4G Decoding uit) | skip no-mmio-window-above-4g |
| Venster boven 4 GB te klein voor zelfs 512 MB | skip mmio-window-too-small |
| Venster past een kleinere BAR dan het maximum van de kaart | acts met de kleinere maat, logt de step-down |
| BAR2 niet toegewezen na de rescan | rolls back naar originele maat; rolled-back |
norebar op de kernel command line | skip norebar |
---
6. Installatie
Debian / Ubuntu, via de .deb
- Download de
.deb en SHA256SUMS van de Releases-pagina.
- Controleer de checksum:
sha256sum -c --ignore-missing SHA256SUMS.
- Installeer de tool:
sudo apt install ./arc-rebar1.0.3all.deb (stelt nog niets in).
- Diagnose:
sudo arc-rebar diagnose (laatste regel moet zijn: "YES: pinned window, all safety checks pass").
- Installatie:
sudo arc-rebar install (bevestig met ACCEPT).
- Herstart:
sudo reboot.
- Verificatie:
sudo arc-rebar verify (verwacht: "RESULT: PASS").
Vanuit de broncode
git clone https://github.com/RodBurlamaqui/Intel-ARC-Rebar.git
cd Intel-ARC-Rebar
sudo ./diagnose.sh → controleer op "YES...".
sudo ./install.sh → bevestig met ACCEPT.
sudo reboot.
sudo ./verify.sh → verwacht: "RESULT: PASS".
Voorzichtige methode (aanbevolen): Bewijs dat het werkt voordat u het bij de boot activeert. Gebruik sudo arc-rebar prepare om alleen pci=realloc toe te voegen, herstart, en voer sudo arc-rebar live-test uit via SSH. Dit voert de fix één keer uit zonder permanente wijzigingen.
---
7. Na installatie
Bij elke boot voert de hook de fix uit en bindt de xe driver opnieuw op het volledige venster (duurt ongeveer 8 seconden). Controleer dit met: sudo arc-rebar verify.
Een succesvolle verificatie toont:
[ok] pci=realloc active
[ok] hook installed
[ok] boot verdict: done gpu=... bar2=16384M
[ok] 0000:86:00.0 BAR2 = 16384 MiB
[ok] 0000:86:00.0 driver: xe
[ok] vulkan: memoryHeaps: count = 2 ... 11.93 GiB
- RESULT: PASS
---
8. Diagnostiek
De map diag/ bevat tools die de status analyseren:
| Commando | Wat het vertelt |
sudo arc-rebar diag bar-pin-check | BAR2 maat vs maximum, rootport venster, welke bridge BAR0 het pinnt, MMIO ruimte, kernel signatuur en verdict. |
sudo arc-rebar diag pcie-link-truth | Welke PCIe-link fysiek is (de GPU-functie zelf rapporteert vaak een virtuele 2.5 GT/s x1 poort). |
arc-rebar diag vulkan-heaps | Een aparte 256 MiB heap = small BAR; één gemengde heap = full aperture. |
arc-rebar diag ocl-alloc-ceiling | De werkelijke limiet voor enkele allocaties en gemeten bandbreedte. |
sudo arc-rebar diag gpu-health | PCIe error bits, AER reports, hangs/resets, temperaturen, clocks en throttle redenen. |
---
9. Veiligheid, nooduitgang en instellingen
- Nooduitgang: Druk in het GRUB-menu op
e, voeg norebar toe aan de linux-regel en boot. Het script doet dan niets en u keert terug naar de 256 MB BAR.
- Veiligheid: De tool faalt nooit de boot. Elke fout wordt gelogd en het proces gaat door.
- No-op: Als firmware of een toekomstige kernel de BAR zelf vergroot, ziet het script "already at target" en stopt het direct.
- Rollback: Als de nieuwe BAR niet geplaatst kan worden, herstelt de tool de oude maat in plaats van de GPU zonder adres achter te laten.
- Kernel parameters:
norebar: schakelt de tool uit.
rebar.dev=0000:86:00.0: kiest een specifieke GPU.
rebar.size=N: dwingt een maat af ($2^{N+20}$ bytes: $14 = 16\text{ GB}, 13 = 8\text{ GB}, 12 = 4\text{ GB}$).
---
10. Gerelateerd project
Intel-ARC-B580-vaapi-sigbus-fix Dit is de andere helft van het verhaal. Voordat de BAR vergroot kon worden, crashte de Intel media driver (SIGBUS in vaInitialize) op elke small-BAR kaart. Dat project backport de fix van Intel naar een Debian 13 .deb. Het stopt de crash; arc-rebar verwijdert de oorzaak. Houd beide geïnstalleerd.
---
11. Verwijderen
- Via
.deb: sudo apt purge arc-rebar (verwijdert tool en boot-hook).
- Via broncode:
sudo ./uninstall.sh.
apt remove (zonder purge) laat de boot-hook staan. Beide laten pci=realloc in GRUB staan, wat ongevaarlijk is. Om dit volledig ongedaan te maken:
sudo cp /etc/default/grub.arc-rebar.bak /etc/default/grub
sudo update-grub
---
12. Structuur van de repository
scripts/init-premount/arc-rebar: De boot-time fix (POSIX sh).
hooks/arc-rebar: Initramfs-tools hook.
diagnose.sh, prepare.sh, live-test.sh, install.sh, verify.sh, uninstall.sh: Beheerscripts.
bin/arc-rebar: Het arc-rebar commando.
diag/: Diagnostische tools (binaries, source code en Makefile).
debian/, build-deb.sh: Build-bestanden voor de .deb.
docs/: Documentatie, inclusief ROOT-CAUSE.md en TESTS.md.
---
13. Bijdragen
Bug-rapporten zijn welkom. Open een issue met de output van sudo arc-rebar diagnose en journalctl -k -b | grep -E 'arc-rebar|was not released|Small BAR'.
Modificaties en ports vereisen voorafgaande schriftelijke goedkeuring van de copyright-houder (LICENSE §3.2). Open een issue om wijzigingen voor te stellen.
---
14. Licentie
Copyright (c) 2026 Rod Burlamaqui. Gelicentieerd onder de arc-rebar Software License Agreement:
- Persoonlijk gebruik: Gratis voor privé, niet-commercieel gebruik door een individu.
- Commercieel en zakelijk gebruik: Een aparte licentie is vereist voor elk gebruik door of voor een bedrijf, instelling, hardware- of softwareleverancier.
- Modificatie: Geen afgeleide werken, ports of gemodificeerde distributies zonder voorafgaande schriftelijke toestemming.
- Wederverkoop: Verboden zonder goedkeuring. Gratis redistributie van volledige, ongewijzigde kopieën is toegestaan.
- Geen garantie: Zie LICENSE §5–6 en DISCLAIMER.md.
Let op: Dit is geen open-source licentie.
---
15. Credits
- andersevenrud — voor de
setpci + remove/rescan methode.
- Ilpo Järvinen en Lucas De Marchi (Intel) — voor de kernel-side analyse en de quirk die het mechanisme bevestigde.
- De kernel-log — specifiek de regel
was not released (still contains assigned resources), die het volledige antwoord was zodra iemand deze las.