修改带有错误 BIOS 的 Asus Z170 主板上的 ia32 功能控制寄存器

Modifying the ia32 feature control register on Asus Z170 board with buggy BIOS

我很不幸,我需要使用 BIOS 尚未在 ia32 功能控制 MSR 寄存器中启用的 CPU 功能。 BIOS 确实设置了锁定位,所以我无法自己设置该位。 BIOS(华硕 UEFI BIOS)没有更改行为的选项。问题是,有什么办法可以设置这个位吗?我在想是否可以编写一个 UEFI 扩展或一些我可以从 UEFI shell 执行的程序。但是我不确定在执行之前寄存器是否被锁定(我对 UEFI 及其编程环境知之甚少)。或者,是否可以使用标准工具修补 BIOS 更新映像或修改它?有人听说过这个地区的成功商店吗?

相关功能是 SGX(软件保护扩展)。主板是华硕Z170-K。一切都支持 SGX,除了 BIOS 无法设置此位。

5 月 22 日更新:我刚刚将华硕 Z170-K 更新为新发布的 BIOS 1803(5 月 20 日发布)。版本号有了很大的飞跃,所以我充满希望。遗憾的是,SGX 支持仍然不存在。我现在已经向华硕提出了新的请求,这次我打算不被拒绝。我认为这完全是业余的,从一开始就不支持 - 它是支持 Skylake CPU 的重要组成部分,所以我认为所有需要这个的客户都应该尝试退款(我知道我会这样做).

如果不修改 BIOS ROM 和 re-flashing 它可能是不可行的。 CPU 初始化是引导的最早部分之一。锁定位将在 SEC or PEI phase 中设置。您编写的任何扩展都将用于稍后发生的 DXE 阶段。

您最好联系华硕技术支持。他们可能会发布 BIOS 更新来解决此问题。

如果您还没有,请检查 BIOS 更新。

SGX 支持需要的不仅仅是在 MSR 中设置一些位。 UEFI必须为SGX预留一个特殊的内存块(Enclave Page Cache)才能正常工作,所以如果华硕没有从UEFI端支持SGX,你要么需要自己实现它(即使有足够的UEFI编程经验也很难,因为需要固件二进制修改)或等待华硕赶上。

华硕Z170-A好像不支持Intel SGX。处理器是英特尔酷睿 i7 6700K。 我尝试安装 Intel SGX PSW,但它说该平台不支持 Intel SGX。我在 BIOS 设置中搜索了 Intel SGX 设置,没有找到这样的选项。 然后我更新了BIOS,此时实际版本是1602..它仍然不支持Intel SGX。非常遗憾的是,Intel 并没有公布支持 SGX 的主板列表。

现已在 Asus 网站上发布 beta BIOS 版本 3107。此版本是第一个启用 SGX 的版本(它在 BIOS 菜单中引入了一个新的 SGX 选项)。我还没有证实它确实有效,但至少这是进步。似乎 Z170 系列中的其他主板正在升级以“3”开头的 BIOS,因此也可能为这些主板添加 SGX。