GRUB/实模式与 Linux 中的 SMI 生成/检测

GRUB/实模式与 Linux 中的 SMI 生成/检测

我试图了解带有 E3-1245v3 Haswell CPU 的 Supermicro X10SAE C226 主板(2.0a BIOS)上 SMI 事件的频率和持续时间。

英特尔 BIOS 实施测试套件 (BITS)SMI 延迟测试报告在每次 15 秒的测试中出现 935 个 SMI。无论 BITS 是从 USB 闪存驱动器启动,还是从 SATA 连接的 CD(在 BIOS 中禁用 USB)启动,测试都会报告相同数量的 SMI。

另一方面,当机器启动到 Linux(Ubuntu 14.04)时,turbostat 始终在 SMI 列中报告 0。同样,rdmsr 0x34(MSR_SMI_COUNT)从未改变。

这种差异让我很困惑。我浏览了 BITS 和 turbostat 的源代码,它们都只读取了 MSR_SMI_COUNT。有人知道为什么报告的 SMI 率如此不同吗?是否有某种原因导致硬件在 GRUB/实模式下比在 Linux 中生成更多的 SMI?是否有什么东西阻止了 MSR_SMI_COUNT 在 Linux 中正常工作?(我用 Google 找到的每个 turbostat 输出的 SMI 列中都是 0。)

感谢您的帮助!

坦率

答案1

可以说,在实模式下发生系统管理中断 (SMI) 的原因比在成熟的操作系统运行时要多得多。

BIOS 实现测试套件 (BITS) 甚至警告

print "Warning: touching the keyboard can affect the results of this test."

例如,在实模式下,可能需要 SMI 来执行诸如模拟旧式键盘硬件(在固件中实现的 USB 堆栈之上)之类的普通操作。相比之下,任何严肃的操作系统都会自行驱动尽可能多的硬件。当然,它带有自己的 USB 堆栈和 USB 键盘驱动程序。

相关内容