Start chipping away at the crustiness in the nVMX tests by refactoring "struct vmentry_failure" into "struct vmentry_result", with the full VM-Exit stored in vmentry_result. Capturing the exit reason allows for a variety of cleanups and consolidations. This series really only dives into the v1 tests. I'd like to also clean up the v2 tests, e.g. take the expected exit reason in enter_guest() so that the expected behavior is more obvious, but that's a more invasive cleanup for another day. Sean Christopherson (8): nVMX: Eliminate superfluous entry_failure_handler() wrapper nVMX: Refactor VM-Entry "failure" struct into "result" nVMX: Consolidate non-canonical code in test_canonical() nVMX: Drop redundant check for guest termination nVMX: Expose __enter_guest() and consolidate guest state test code nVMX: Pass exit reason union to v1 exit handlers nVMX: Pass exit reason union to is_hypercall() nVMX: Pass exit reason enum to print_vmexit_info() x86/vmx.c | 191 +++++++++++-------------- x86/vmx.h | 50 +++++-- x86/vmx_tests.c | 366 +++++++++++++++++++----------------------------- 3 files changed, 263 insertions(+), 344 deletions(-) -- 2.24.1