
2026/09/21 10:07
ReBarUEFI:ほぼすべての UEFI システム向けにレジザブル BAR を提供
RSS: https://news.ycombinator.com/rss
要約▶
日本語翻訳:
元の要約は簡潔で正確であり、理解しやすいため、改善の必要はありません。
翻訳対象のテキスト:
The original summary is concise, accurate, and easy to understand; no improvement is necessary.
本文
UEFI DXE ドライバーによる Resizable BAR 有効化ガイド
公式で Resizable BAR(リザイザブル BAR)をサポートしていないシステムにおいて、UEFI DXE ドライバーを用いてこの機能を有効にする方法です。 本ドライバーは パフォーマンス向上 をもたらすほか、インテル Arc グラフィックスボードを最適に動作させるためには必須となっています。
前提条件
- GPU の互換性
- NVIDIA Turing アーキテクチャ(20 シリーズまたは 16 シリーズ)をお使いの場合は、
をご参照ください。[NvStrapsReBar](https://github.com/val3nt33n/NvStrapsReBar)
- NVIDIA Turing アーキテクチャ(20 シリーズまたは 16 シリーズ)をお使いの場合は、
- 4G デコーディング (オプション)
- 無効な場合は最大容量が 1GB(場合によっては一部の環境では 512MB)に制限されます。
- 非表示の 4G デコーディングを有効にするには、[wiki ページ](https://wiki.archlinux.org/title/Resizable BAR#Enabling_hidden_4G_decoding) をご参照ください。
- BIOS のサポート (オプション)
- BIOS 設定で Large BAR サポートが有効になっている必要があります。
- 本項目に関連するほとんどの問題を修正するためのパッチが存在します。
使用方法
- wiki ガイド に記載の手順に従い、FFS モジュールを追加してください。
- 修飾されたファームウェアを起動した後、必ず以下の 2 点を確認してください。
- 4G デコーディングが有効になっていること
- CSM がオフであること
コマンドを実行して Resizable BAR のサイズを設定します(CMake を使用した Linux ビルドの場合、リリース版から入手可能)。ReBarState# 多くの場合、問題なく動作する設定は以下です ReBarState 32- 通常設定:
(無制限)を使用できます。32 - トラブルシューティング: もし
が正常に機能しない場合は、より小さな BAR サイズを試してください。32
- 通常設定:
- 動作が正常であれば、動作確認済みのマザーボードリスト に回答をいただければ幸いです。これによりリストへの追加が可能となります。
- Secure Boot をオンにした状態でも、署名されていないパッチ済みモジュールを受け入れるファームウェアは多くあります。特定のゲームの動作問題には悩むことはありません。
- 不具合が発生した場合は、一般的な問題とそれらの解決策 をご参照ください。
動作原理
ReBarDxe モジュールは UEFI ファームウェアの DXE ボリュームに追加され、起動時に実行されます。
- 初期設定:
のPciHostBridgeResourceAllocationProtocol
関数を置き換えます。PreprocessController- 元の関数を実行した後、Resizable BAR に対する能力チェックを行います。
NVRAM 変数から取得したサイズに基づいて設定を行います。ReBarState
- 割り当て: PCI 列挙中に新たな
関数が呼び出され、新しい BAR サイズが検知されて割り当てが行われます。PreprocessController
注記: UEFI Patch の適用手順については記載しておりませんが、X99 マザーボードにはこれらが必要ありません。 (参照元:Miyconst 氏による AliExpress X99 チューターリアル)
UEFI パッチ適用
多くの UEFI ファームウェアは 64 ビット BAR の処理に問題を抱えています。これらの問題を修正するためのパッチ(
UEFIPatch フォルダに含まれるもの)を UEFIPatch を用いて適用可能です。
詳しい使い方は wiki ページ でご確認ください。
重要: パッドファイル(パディングファイル)が変更されていないか必ず確認してください。もし変更されている場合は、代替策(ワークアラウンド)をご利用ください。
動作確認済みのパッチ機能
- BAR サイズ上限の除去
- 4GB 上限の除去
- 16GB 上限の除去
- 64GB 上限の除去
- データ型制限の解除
- 64 ビット BAR の 32 ビットへのダウングレードを防止
- MMIO スペースの増強
- Skylake/Kaby Lake/Coffee Lake シリーズ用:16-32GB → 512GB(39 ビットレンジ)へ向上
- Haswell/Broadwell シリーズ用:8-16GB → 512GB(39 ビットレンジ)へ向上
- Sandy/Ivy Bridge シリーズ用:16GB → 64GB(36 ビットレンジ)へ向上
- 注記:特定のマザーボードでは DSDT の修飾が必要です。詳しくは wiki ページ をご参照ください。
- その他
- NVRAM ホワイトリストの除去(
エラー解消)ReBarState GetLastError: 5 - 4G デコーディング有効時の USB 3 ポート動作不具合修正(Ivy Bridge/Haswell/Broadwell 対応)
- X79 Above 4G Decoding 修正
- NVRAM ホワイトリストの除去(
ビルド方法
DXE ドライバーをビルドするには、edk2 ツリー内にクローンした状態で提供された
buildffs.py スクリプトを使用してください。
ReBarState は CMake を用いて Windows および Linux のどちらでもビルド可能です。
詳細については wiki ページ をご参照ください。
よくある質問 (FAQ)
- PCIe Gen2 システムでも動作しますか?
- 以前は動作しないと思われていましたが、i5 2500k という構成で動作させたユーザーも報告されています。
- BIOS を変更せずに使用することは可能ですか?
- Linux で 4G デコーディングを有効にした場合、近年のバージョンでは GPU の BAR サイズを自動的に調整して割り当てることができます。
- もし BIOS にオプションがない場合や DSDT に不具合がある場合は、Arch wiki ガイド に従い、DSDT パッチの修飾を用いて修正し、カーネルコマンドラインに
を追加して起動してください。pci=realloc - 現時点では、BIOS 改修なしで Windows 上でも実現する方法は知られていません。
- 非推奨の BAR サイズを設定した際にシステムが起動しません。
- CMOS をクリアすると Resizable BAR が無効化されます。場合によっては、Resizble BAR を無効化するには CMOS バッテリーを取り外す必要があることがあります。
- 最適ではない BAR サイズでもパフォーマンス向上は期待できますか?
- はい、可能です。i5 3470 と Sapphire Nitro+ RX 580 8GB の組み合わせで、ドライバー側での有効化(2GB の BAR サイズ設定)でも、最大 12% の FPS 向上をシステムで確認しています。
謝辞
- パッチ・開発協力: @dsanke, @cursemex, @dripsnek, @val3nt33n, @Mak3rde, @romulus2k4
- 基盤技術: Linux カーネル(amdgpu ドライバー)、EDK2(UEFI モジュールのベース)
- ツール: Ghidra(UEFI モジュールのパッチ用、アートフィシャル制限回避のため)
- 特定の機能開発:
- @vit9696: NVRAM ホワイトリストパッチの開発
- @ZOXZX: X79 Above 4G パッチへの支援
- @NikolajSchlej: UEFITool/UEFIPatch の開発
- テスト環境: QEMU/OVMF(テストやフック操作を大幅に容易化)