为什么启用 VMX 后 PS2 重置不起作用?

问题描述 投票:0回答:0

我最近正在为英特尔 CPU 编写一个微型管理程序。我的微管理程序在启用 VMX 时运行。但是,我在尝试重启机器时遇到了问题。

我决定按照 https://wiki.osdev.org/Reboot 执行 PS/2 8042 重置(即写入命令 0xfe 到 IO 端口 0x64)。但是,我发现启用VMX后,8042重置不成功(我必须使用电源按钮重新启动机器)。但是,如果我使用 VMXOFF 禁用 VMX,然后执行 8042 重置,则重置成功(然后我看到 BIOS 闪屏等)

我的问题是:为什么我不能在启用 VMX 的情况下执行 8042 重置?OSDev 说 8042 控制器将脉冲重置线。我假设这意味着断言 RESET# 引脚。 Intel的SDM并没有说VMX会导致RESET#被忽略。

此外,在谷歌搜索时,我在Linux的重启代码中看到了这个评论

禁用虚拟化,即 VMX 或 SVM,以确保在期间识别 INIT 重启。如果 CPU 是后 VMXON,则 VMX 阻塞 INIT,如果 GIF=0,即如果崩溃发生在 CLGI 和 STGI 之间。

Intel 的 SDM 确实说当启用 VMX 时,INIT 中断被阻止。 INIT 中断与 8042 复位有关吗?或者 Linux 是否使用 8042 reset 以外的方法重新启动?一般情况下,硬件是如何复位CPU的?

x86 intel hardware ps2
© www.soinside.com 2019 - 2024. All rights reserved.