amd文档上有个vmrun指令 执行过后的检查 Canonicalization and Consistency Checks. The VMRUN instruction performs consistency checks on guest state and #VMEXIT performs the appropriate subset of these consistency checks on host state. Illegal guest state combinations cause a #VMEXIT with error code VMEXIT_INVALID. The following conditions are considered illegal state combinations:
• EFER.SVME is zero.
• CR0.CD is zero and CR0.NW is set.
• CR0[63:32] are not zero.
• Any MBZ bit of CR3 is set.
• Any MBZ bit of CR4 is set.
• DR6[63:32] are not zero.
• DR7[63:32] are not zero.
• Any MBZ bit of EFER is set.
• EFER.LMA or EFER.LME is non-zero and this processor does not support long mode. //这句的意思 是不是只能在long mode 也就是64位下执行。 • EFER.LME and CR0.PG are both set and CR4.PAE is zero.
• EFER.LME and CR0.PG are both non-zero and CR0.PE is zero.
• EFER.LME, CR0.PG, CR4.PAE, CS.L, and CS.D are all non-zero.
• The VMRUN intercept bit is clear.
• The MSR or IOIO intercept tables extend to a physical address that is greater than or equal to the maximum supported physical address. • Illegal event injection (see Section 15.20 on page 479).