I was playing around with a small DOS program that goes through vmlaunch -> vmcall (vmexit) -> vmxoff sequence. I got that working but noticed after vmexit that the abort-indicator in the vmcs was 1 (offset 0x4). Upon some debug, I realized that when i initialized the vmcs-revision-id (offset 0) , I also wrote a 1 to the next dword. The question I have is if the processor should clear the abort-indicator field at the end of vmexit (if the vmexit did not cause an abort)?
For more complete information about compiler optimizations, see our Optimization Notice.