【发布时间】:2020-04-19 03:55:09
【问题描述】:
从 Windows 10 1809 开始,操作系统会生成大量软件 SMI。
我们在单独的处理器内核上运行我们的实时应用程序,每个 SMI 都会产生不可预测的延迟。在 1809 年之前,始终可以在 BIOS 中禁用 SMI。
Windows 中的调用堆栈如下所示:
hal!HalEfiGetEnvironmentVariable+0x56
hal!HalGetEnvironmentVariableEx+0xb572
nt!IopGetEnvironmentVariableHal+0x2a
nt!IoGetEnvironmentVariableEx+0x85
nt!ExpGetFirmwareEnvironmentVariable+0x91
nt!ExGetFirmwareEnvironmentVariable+0x110ce3
nt!NtQuerySystemEnvironmentValueEx+0x6e
SMI 由 OUT 指令生成到端口 0xb2。需要从 NVRAM 中读取 UEFI 变量。当 BIOS 处于传统模式时,没有 SMI。
是否可以配置 Windows,使其不会使用 SMI 访问 UEFI 变量?
【问题讨论】:
-
我不认为你可以,因为它是 UEFI\BIOS 流程的一部分