主机 CPU 状态如何以及何时保存在 VMCS 主机状态区域中?
How and when host CPU state is saved in the VMCS host-state area?
我正在尝试了解英特尔 VMX/VT-x 工作原理的基础知识。在 Intel Software Developer Manual 中,它是这样描述 VMCS 的:
The VMCS data are organized into six logical groups:
Guest-state area. Processor state is saved into the guest-state area
on VM exits and loaded from there on VM entries.
Host-state area. Processor state is loaded from the host-state area on
VM exits.
...
CPU 状态在 VM 退出时保存到访客区并在 VM 入口加载,这对我来说很有意义。 CPU 状态从 VM 退出时的主机状态区域加载也是有道理的......但是 CPU 状态何时保存在主机状态区域中?直觉上我会说它保存在 VM 条目中,但手册没有这么说......有人可以帮我澄清一下吗?
谢谢
CPU 从不保存主机状态。
VMM(又名:管理程序)控制何时执行vmlaunch/vmresume
,因此可以在执行前相应地设置主机状态区域。
当 VM 条目因 VMCS 无效而失败时,执行将继续执行 vmlaunch/vmresume
之后的下一条指令。
当 VM-entry 由于无效的 guest 状态而失败时,执行从主机状态区域中设置的 RIP
恢复(就像发生 VM-exit 一样)。
如果 CPU 设置主机状态区域,则这两种情况是相同的。
这也是 CPU 在进入 VMX 非根模式(即启动 VM)之前检查 主机状态区域的原因。
我正在尝试了解英特尔 VMX/VT-x 工作原理的基础知识。在 Intel Software Developer Manual 中,它是这样描述 VMCS 的:
The VMCS data are organized into six logical groups:
Guest-state area. Processor state is saved into the guest-state area on VM exits and loaded from there on VM entries.
Host-state area. Processor state is loaded from the host-state area on VM exits.
...
CPU 状态在 VM 退出时保存到访客区并在 VM 入口加载,这对我来说很有意义。 CPU 状态从 VM 退出时的主机状态区域加载也是有道理的......但是 CPU 状态何时保存在主机状态区域中?直觉上我会说它保存在 VM 条目中,但手册没有这么说......有人可以帮我澄清一下吗?
谢谢
CPU 从不保存主机状态。
VMM(又名:管理程序)控制何时执行vmlaunch/vmresume
,因此可以在执行前相应地设置主机状态区域。
当 VM 条目因 VMCS 无效而失败时,执行将继续执行 vmlaunch/vmresume
之后的下一条指令。
当 VM-entry 由于无效的 guest 状态而失败时,执行从主机状态区域中设置的 RIP
恢复(就像发生 VM-exit 一样)。
如果 CPU 设置主机状态区域,则这两种情况是相同的。
这也是 CPU 在进入 VMX 非根模式(即启动 VM)之前检查 主机状态区域的原因。