X86 VMX模式是否能够检测以前不可捕获的敏感指令?

X86 VMX模式是否能够检测以前不可捕获的敏感指令?,x86,intel,cpu-architecture,processor,X86,Intel,Cpu Architecture,Processor,VMX模式是否为虚拟化系统架构师提供了检测以前不可捕获的敏感指令的能力?否,并非在所有情况下。相反,VMX模式会更改其中一些指令的行为,使其不敏感 以下是几个示例,说明了在VMX非根模式下敏感指令的行为: SMSW:它在VMX模式下不会陷波,但会替代 VMM为某些位的实际值指定的值 POPF:指令的行为不会改变,但控制 中断可由VMCS中的控件覆盖,以防止 来宾更改为IF不会影响VMM或其他来宾 此参考在第28页有敏感x86指令的列表:。《英特尔SDM》第三卷第25章详细描述了每条指令行为的

VMX模式是否为虚拟化系统架构师提供了检测以前不可捕获的敏感指令的能力?

否,并非在所有情况下。相反,VMX模式会更改其中一些指令的行为,使其不敏感

以下是几个示例,说明了在VMX非根模式下敏感指令的行为:

  • SMSW
    :它在VMX模式下不会陷波,但会替代 VMM为某些位的实际值指定的值
  • POPF
    :指令的行为不会改变,但控制 中断可由VMCS中的控件覆盖,以防止 来宾更改为IF不会影响VMM或其他来宾

此参考在第28页有敏感x86指令的列表:。《英特尔SDM》第三卷第25章详细描述了每条指令行为的变化。

我同意。根据的第13页到第17页,硬件虚拟化似乎是解决这个问题的一种尝试

幻灯片45中还显示:

如果来宾内核运行敏感指令,则硬件会将“VM退出”返回VMM,指示捕获的指令


你是说像CPUID?“我想是的。”普列夫特:我觉得不错。这篇文章并不是说“在这里寻找答案”,而是直接回答了这个问题。奇怪的是,它甚至包括了所提供链接中的重要部分。是的,硬件虚拟化是专门用来解决这个问题的,但它并不能通过捕获所有敏感指令来解决这个问题,正如我在回答中的示例所示。我引用的幻灯片集只是一个概述,而不是一个精确的描述或规范。