[PATCH v3 00/10] KVM: selftests: Fix and clean up emulator_error_test

David Matlack
2022-10-31T18:00:55Z

Miscellaneous fixes and cleanups to emulator_error_test. The reason I
started looking at this test is because it fails when TDP is disabled,
which pollutes my test results wheneveer I am testing a new series for
upstream.

v3:
- Collect R-b tags from Sean.
- Drop ModR/M decoding in favor of hard-coded instruction [Sean]
- Fix gspurious gcc warning about using uninitialized variable [Sean]
- Drop assert_ucall_done() helper [Sean]
- Spelling fixes [Sean]
- Use kvm_asm_safe*() to check #PF(RSVD) instead of an exception
handler [Sean]

v2:
- Split emulator_error_test into 2 separate tests to ensure continued
test coverage of KVM emulation in response to EPT violations when
"allow_smaller_maxphyaddr && guest.MAXPHYADDR < host.MAXPHADDR". [Sean]
- Test that flds generates #PF(RSVD) when TDP is disabled [Sean]

v1: https://lore.kernel.org/kvm/20220929204708.2548375-1-dmatlack@google.com/

David Matlack (8):
KVM: selftests: Rename emulator_error_test to
smaller_maxphyaddr_emulation_test
KVM: selftests: Explicitly require instructions bytes
KVM: selftests: Delete dead ucall code
KVM: selftests: Move flds instruction emulation failure handling to
header
KVM: x86/mmu: Use BIT{,_ULL}() for PFERR masks
KVM: selftests: Copy KVM PFERR masks into selftests
KVM: selftests: Expect #PF(RSVD) when TDP is disabled
KVM: selftests: Add a test for KVM_CAP_EXIT_ON_EMULATION_FAILURE

Sean Christopherson (2):
KVM: selftests: Avoid JMP in non-faulting path of KVM_ASM_SAFE()
KVM: selftests: Provide error code as a KVM_ASM_SAFE() output

arch/x86/include/asm/kvm_host.h | 20 +-
tools/testing/selftests/kvm/.gitignore | 3 +-
tools/testing/selftests/kvm/Makefile | 3 +-
.../selftests/kvm/include/x86_64/processor.h | 66 ++++--
.../selftests/kvm/lib/x86_64/processor.c | 1 +
.../kvm/x86_64/emulator_error_test.c | 193 ------------------
.../x86_64/exit_on_emulation_failure_test.c | 42 ++++
.../selftests/kvm/x86_64/flds_emulation.h | 59 ++++++
.../selftests/kvm/x86_64/hyperv_features.c | 3 +-
.../smaller_maxphyaddr_emulation_test.c | 107 ++++++++++
10 files changed, 276 insertions(+), 221 deletions(-)
delete mode 100644 tools/testing/selftests/kvm/x86_64/emulator_error_test.c
create mode 100644 tools/testing/selftests/kvm/x86_64/exit_on_emulation_failure_test.c
create mode 100644 tools/testing/selftests/kvm/x86_64/flds_emulation.h
create mode 100644 tools/testing/selftests/kvm/x86_64/smaller_maxphyaddr_emulation_test.c

base-commit: d5af637323dd156bad071a3f8fc0d7166cca1276
--
2.38.1.273.g43a17bfeac-goog