1

我正在尝试了解 Intel VMX/VT-x 如何工作的基础知识。在英特尔软件开发人员手册中,它对 VMCS 这么说:

VMCS 数据被组织成六个逻辑组:
Guest-state area。处理器状态在 VM 退出时保存到来宾状态区域,并从那里加载到 VM 条目上。
主机状态区。处理器状态从 VM 退出时的主机状态区域加载。
...

对我来说,CPU 状态在 VM 退出时保存到来宾区域并在 VM 条目上加载是有意义的。从VM退出时的主机状态区域加载CPU状态也是有道理的......但是CPU状态何时保存在主机状态区域中?直觉上我会说它保存在VM条目中,但手册没有这么说......有人可以帮我澄清一下吗?

谢谢

4

1 回答 1

3

CPU 从不保存主机状态。
VMM(又名:管理程序)控制何时执行vmlaunch/vmresume,因此可以在执行之前相应地设置主机状态区域。

当 VM-entry 由于无效的 VMCS 而失败时,执行会落到 . 之后的下一条指令vmlaunch/vmresume
当VM-entry由于无效的guest状态而失败时,执行从 RIP主机状态区域中的集合恢复(就像VM-exit发生一样)。
如果 CPU 设置主机状态区,这两种情况是相同的。

这也是 CPU在进入 VMX 非 root 模式(即启动 VM)之前检查主机状态区域的原因。

于 2021-05-10T13:56:34.217 回答