欢迎光临散文网 会员登陆 & 注册

ReBarUEFI - ReBarDxe.ffs介绍

2023-08-14 22:14 作者:谈起哥  | 我要投稿

UEFI DXE 驱动程序,用于在官方不支持可调整大小的 BAR 的系统上启用它。这提供了性能优势,甚至是英特尔 Arc GPU 发挥最佳功能 所必需的。

要求

    A:(可选)启用 4G 解码。如果您找不到相应的选项,请参阅 wiki 页面启用隐藏 4G 解码。如果没有 4G 解码,您将被限制为 1GB BAR,在某些情况下为 512MB,您可以尝试通过减少 TOLUD 将其增加到 2GB

    B: (可选)BIOS 支持大型 BAR。存在补丁可以解决与此相关的大多数问题

用法

1,看我视频

2,运行修改后的固件后,请确保启用 4G 解码并且关闭 CSM。

原理

该模块被添加到 UEFI 固件的 DXE 卷中,以便在每次启动时执行。ReBarDxe 模块将 的 函数替换为检查可调整大小的 BAR 功能PreprocessController的函数,然后在运行原始函数后将PciHostBridgeResourceAllocationProtocol其设置为 NVRAM 变量的大小。ReBarStatePreprocessController模块稍后在 PCI 枚举期间调用新函数PciBus,该模块将检测新的 BAR 大小并相应地分配它。

UEFI 补丁

大多数 UEFI 固件在处理 64 位 BAR 时都存在问题,因此创建了多个补丁来解决这些问题。您可以使用UEFIPatch应用位于 UEFIPatch 文件夹中的这些补丁。

工作补丁

<4GB BAR 大小限制移除

<16GB BAR 大小限制移除

<64GB BAR 大小限制移除

防止 64 位 BAR 降级为 32 位

将 MMIO 空间增加到 64GB (Haswell/Broadwell)。完整的 512GB/39 位尚不可能。

将 MMIO 空间从 16GB 增加到充分利用 64GB/36 位范围 (Sandy/Ivy Bridge)。需要在某些主板上进行 DSDT 修改。有关详细信息,请参阅 wiki 页面DSDT 修补。

移除NVRAM白名单解决ReBarStateGetLastError: 5

修复 USB 3 端口在启用 4G 解码的 BIOS 中无法工作的问题 (Ivy Bridge/Haswell/Broadwell)


问答

1,它可以在 PCIe Gen2 系统上工作吗?

      此前人们认为它无法在 PCIe Gen2 系统上工作,但一位用户让它在 i5 2500k 上工作。

2,我可以在不修改 BIOS 的情况下在我的系统上使用可调整大小的 BAR 吗?

      您可以在 Linux 上使用4G 解码,最新版本将自动调整大小并分配 GPU BAR。如果您的 BIOS 没有 4G 解码选项(请务必选中隐藏)或 DSDT 有故障,您可以按照Arch wiki 指南进行 DSDT 修改,使用DSDT 修补中的修改并pci=realloc在内核命令行中启动。目前没有已知的方法可以在不修改 BIOS 的情况下在 Windows 上获取它。


3,我设置了不受支持的 BAR 大小,并且我的系统无法启动

      应禁用清除 CMOS 和可调整大小的 BAR。在某些情况下,可能需要取出 CMOS 电池才能禁用可调整大小的 BAR。


4,小于最佳 BAR 大小是否仍会提高性能?

     在我的配备 i5 3470 和 Sapphire Nitro+ RX 580 8GB 且在驱动程序中启用可调整大小 BAR 的系统上,当 BAR 大小为 2GB 时,FPS 提高了高达 12%。


感谢

@dsanke、@cursemex、@val3nt33n、@Mak3rde和@romulus2k4用于测试/帮助开发补丁

Linux内核尤其是amdgpu驱动程序

EDK2为所有 OEM UEFI 遵循的基础

Ghidra用于修补 UEFI 模块以解决人为限制

@vit9696用于 NVRAM 白名单补丁

@NikolajSchlej用于开发 UEFITool/UEFIPatch

QEMU /OVMF 使测试挂钩变得更容易,尽管它没有任何可调整大小的 BAR 设备,所以我可以测试它的唯一方法是在我的实际 PC 上。


ReBarUEFI - ReBarDxe.ffs介绍的评论 (共 条)

分享到微博请遵守国家法律