On Wed, May 25, 2011, Tian, Kevin wrote about "RE: [PATCH 21/31] nVMX: vmcs12 checks on nested entry": > > + if (vmcs12->launch_state == launch) { > > + nested_vmx_failValid(vcpu, > > + launch ? VMXERR_VMLAUNCH_NONCLEAR_VMCS > > + : VMXERR_VMRESUME_NONLAUNCHED_VMCS); > > + return 1; > > + } > > from SDM: > ELSIF (VMLAUNCH and launch state of current VMCS is not "clear") > THEN VMfailValid(VMLAUNCH with non-clear VMCS); > ELSIF (VMRESUME and launch state of current VMCS is not "launched") > THEN VMfailValid(VMRESUME with non-launched VMCS); > > So it's legal to use VMLAUNCH on a launched VMCS. However here you > changes this behavior. On the other hand, do you want to add a 'clear' state > along with L1 VMCLEAR to catch the failure here? I don't understand: I always understood the spec to mean that "clear" and "launched" the two opposite states of the "launch state" bit? If it isn't, what does "clear" mean? Is it really "legal to use a VMLAUNCH on a launched VMCS"? If it is, why does KVM, for example, go to great lengths to VMLAUNCH the first time, and VMRESUME all subsequent times? -- Nadav Har'El | Wednesday, May 25 2011, 21 Iyyar 5771 nyh@xxxxxxxxxxxxxxxxxxx |----------------------------------------- Phone +972-523-790466, ICQ 13349191 |If a million Shakespeares tried to write http://nadav.harel.org.il |together, they would write like a monkey. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html