Skip to content

Latest commit

 

History

History
15 lines (11 loc) · 2.25 KB

File metadata and controls

15 lines (11 loc) · 2.25 KB

23.8 VMX操作的限制

处理器对VMX操作有如下限制:

  • 在VMX操作中,处理器可能将CR0和CR4中的某些位固定为特定值,而不支持其他值。如果这些位中的任何一个包含不支持的值,VMXON就会失败(参见第30章中的 "VMXON-进入VMX操作")。在VMX操作中(包括VMX根操作),使用任何CLTS、LMSW或MOV CR指令试图将这些位之一设置为不支持的值,都会引起一般保护异常。VM进入或VM退出不能将这些位中的任何一个设置为不支持的值。软件应该查阅VMX能力MSR IA32_VMX_CR0_FIXED0和IA32_VMX_CR0_FIXED1,以确定CR0中的位如何被固定(见附录A.7)。对于CR4,软件应该参考VMX能力MSR IA32_VMX_CR4_FIXED0和IA32_VMX_CR4_FIXED1(见附录A.8)。

注意 :

第一批支持VMX操作的处理器要求在VMX操作中以下位为1。CR0.PE,CR0.NE,CR0.PG,和CR4.VMXE。对CR0.PE和CR0.PG的限制意味着只有在分页保护模式(包括IA-32e模式)下才支持VMX操作。因此,客户软件不能在非分页保护模式或实地址模式下运行。

后来的处理器支持一种叫做 "非限制性客体 "的VM执行控制(见第24.6.2节)。如果这个控制是1,CR0.PE和CR0.PG在VMX非root操作中可能是0(即使能力MSR IA32_VMX_CR0_FIXED0另有报告)1,这样的处理器允许客户软件在非分页保护模式或实地址模式下运行。

  • 如果逻辑处理器处于A20M模式,VMXON就会失败(参见第30章中的 "VMXON-进入VMX操作")。一旦处理器进入VMX操作,A20M中断就会被阻止。因此,在VMX操作中不可能处于A20M模式。
  • 只要逻辑处理器处于VMX根操作,INIT信号就会被阻止。在VMX非根操作中,它不会被阻止。相反,INIT会导致虚拟机退出(参见第25.2节,"虚拟机退出的其他原因")。
  • 只有当IA32_VMX_MISC[14]被读作1时,英特尔®处理器跟踪(Intel PT)才能在VMX操作中使用(见附录A.6)。在支持英特尔PT但不允许在VMX操作中使用的处理器上,执行VMXON会清除IA32_RTIT_CTL.TraceEn(参见第30章中的 "VMXON-进入VMX操作");在VMX操作(包括VMX根操作)中试图写入IA32_RTIT_CTL会引起一般保护异常。