On 23/08/2017 23:25, Jim Mattson wrote: >> + if (from_vmentry) { >> + vmcs12->launch_state = 1; > Because we defer most guest state validity checks to the hardware > vmlaunch of the vmcs02, it is too early to set the vmcs12 launched > state here. If the exit reason has the high bit set, > vmcs12->launch_state should not be modified. Thanks---I'll do my homework and add a testcase then. :) The launched state cannot be discovered with VMREAD, but I can test that a VMLAUNCH;VMLAUNCH works and a VMLAUNCH;VMRESUME fails. The same applies for the next instruction, which is part of step 6 of the vmentry ("An event may be injected in the guest context"). This one can be tested with VMREAD. Paolo >> + >> + /* vm_entry_intr_info_field is cleared on exit. Emulate this >> + * instead of reading the real value. */ >> + vmcs12->vm_entry_intr_info_field &= ~INTR_INFO_VALID_MASK;