【问题标题】:Failed to change VM's activity state to HLT in VMX无法在 VMX 中将 VM 的活动状态更改为 HLT
【发布时间】:2018-05-23 05:31:31
【问题描述】:

我正在研究 Intel VMX,并编写了一个 Linux 内核模块来运行 VM。
虚拟机将执行 'hlt' 指令,并且发生 12 的 VMExit。
但是在VMExit之后,'activity state'是0,而不是1。我查看了0x485的MSR,是0x401E0,也就是说bit[6:8]都是1,支持HLT状态。
为什么当VM运行'hlt'指令时活动状态不是NOT 1?

【问题讨论】:

    标签: linux x86 virtualization


    【解决方案1】:

    vm 退出发生在 停止指令执行之前。如果要让guest进入暂停状态,设置activity状态并恢复guest。

    如果您关闭停止退出,来宾将进入停止状态。如果您启用了中断退出,当由于下一次中断而发生 vm 退出时,您将看到活动状态为“暂停”。

    【讨论】:

    • 优秀的答案。正如你所说,我在两个方面验证了它。 1.关闭停止退出。并且 ext int exiting 将检查活动状态是否为 1,如果是,则打印并退出。 2.从1退出后重新运行guest。正常情况下,此运行将在第一条指令时失败,因为活动状态为'1'。它需要在VM的每个开始时将活动状态设置为'0',来宾可以很好地启动。我可以再问一个关于“活动状态”的问题吗?如何将逻辑处理器设置为 3 (Wait-IPI) 状态,只需将 3 设置为活动状态还是需要其他特殊方式?
    猜你喜欢
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 2021-10-27
    • 2019-04-13
    • 1970-01-01
    • 2016-03-21
    • 2013-02-28
    • 1970-01-01
    相关资源
    最近更新 更多