arc-rebar - Resizable BAR for Intel Arc GPUs on firmware without ReBAR support
BIOS에 ReBAR 옵션이 없는 Intel Arc GPU에서 BAR 크기를 늘리는 arc-rebar
arc-rebar는 BIOS에 Resizable BAR 설정이 없는 시스템에서 Intel Arc GPU의 VRAM 접근 창을 부팅 때 확장하는 도구입니다. B580과 특정 Debian 시스템에서 BAR2가 256MiB에서 16GiB로 커졌고, VRAM 대역폭과 Vulkan 처리 성능도 개선됐다고 보고합니다. 지원 조건과 하드웨어 검증 범위는 제한적이며 상업적 사용에는 별도 라이선스가 필요합니다.
- 주제
에디터 노트
보고된 성능 변화는 단순히 VRAM 창 크기만 바뀐 것이 아니라 Vulkan 힙 구성과 대역폭, 필터 실행 결과까지 함께 제시해 한 장비에서 효과를 확인한 자료로 읽힙니다. 다만 실제 하드웨어 검증은 B580 한 시스템뿐이며 Alchemist와 여러 실패 경로는 검증 범위가 좁습니다. 댓글의 유지보수와 실제 동작에 대한 의문에 답할 장기 사용 결과나 독립 재현 자료는 제공되지 않습니다. 또한 개인용 무료 도구로 배포하지만 상업적 사용과 수정, 포팅에는 별도 허가가 필요하다고 명시합니다. 따라서 적용 가능성을 판단할 때는 진단 결과와 하드웨어 조건뿐 아니라 라이선스도 확인해야 합니다. 저자는 부팅 전 진단과 롤백 절차를 제시하지만, 루트 포트 재검색 과정이 모든 칩셋에서 안전하다는 검증까지 제공하지는 않습니다.
AI 요약
Intel Arc GPU의 BAR2가 256MiB로 제한되면 CPU가 VRAM에 직접 접근하는 범위도 제한됩니다. arc-rebar는 initramfs에서 GPU 드라이버가 로드되기 전에 PCIe 설정을 조정해 BAR2를 더 큰 크기로 다시 열거합니다. BIOS나 GPU 펌웨어, 커널, Intel 드라이버는 수정하지 않습니다.
원인과 해결 방식
저자는 GPU 카드 내부 PCIe 스위치의 upstream 포트에 있는 BAR0가 루트 포트의 prefetchable 메모리 창 안에 배정된 채 해제되지 않아, 커널이 GPU의 BAR2를 확장할 공간을 확보하지 못한다고 설명합니다. 테스트 시스템에서는 커널 로그에 was not released가 남았고, BAR2 확장 시도는 -ENOSPC로 실패했습니다. 이 도구는 ReBAR 제어 레지스터의 크기 필드를 바꾼 뒤 루트 포트를 제거하고 PCIe 장치를 재검색합니다. 재열거 과정에서 스위치 BAR0와 GPU BAR2를 새 메모리 창에 함께 배정합니다.
부팅 스크립트는 GPU의 PCIe 연결 구조와 루트 포트 아래 장치, 카드가 지원하는 BAR 크기, 4GB 위 MMIO 공간을 확인합니다. 외부 스위치나 riser, Thunderbolt가 끼어 있거나 루트 포트를 다른 장치와 공유하면 실행을 건너뜁니다. 공간이 부족하면 가능한 작은 크기를 선택하고, 재검색 뒤 BAR2 배정에 실패하면 기존 크기로 되돌립니다. 모든 종료 경로는 부팅을 계속하며 norebar 커널 인수로 비활성화할 수 있습니다. pci=realloc 설정이 필요합니다.
테스트 결과와 적용 범위
저자는 Supermicro X9DRH-7TF, Intel C602, Xeon E5-2670 v2 두 개, 2015년 AMI BIOS, Intel Arc B580 12GB, Debian 13, 7.1.8 커널과 xe 드라이버 조합에서 시험했습니다. BAR2는 256MiB에서 16GiB 창으로 바뀌었고, Vulkan 메모리 힙은 11.68GiB와 256MiB로 나뉜 상태에서 11.93GiB 단일 힙으로 바뀌었습니다. saxpy로 측정한 VRAM 대역폭은 15GB/s에서 392GB/s로 증가했고, 4K Vulkan 필터는 멈추던 상태에서 초당 39~50프레임을 처리했습니다. 12GB VRAM이 16GB 창으로 바뀌어도 실제 VRAM 용량은 늘지 않습니다.
하드웨어 테스트는 이 B580 시스템에 한정됩니다. Alchemist는 시험하지 않았으며, 일부 실패 경로는 실제 장비가 아니라 모의 입력이나 코드 검토로 확인했습니다. 도구는 Debian 또는 Ubuntu의 initramfs-tools를 요구하고, 4GB 위 MMIO 공간과 GPU 전용 루트 포트가 필요합니다. 작성자는 사용 전 진단과 백업을 권하며, 라이선스는 개인 비상업적 사용만 무료로 허용합니다. 사업체나 기관의 사용, 수정과 포팅에는 별도 허가가 필요합니다.
Reddit 반응
- @MMORPGDev — /u/MMORPGDev가 제출했습니다. [링크] [댓글]
- @yawara25 — 이게 1년 뒤에도 유지보수될까요?
- @Super_Management_949 — 실제로 작동하는 건지, 작동하는 것처럼 보이게만 하는 건지 궁금합니다.
원문: GitHub / 번역·요약: Trawling