* [PATCH 1/2] KVM: selftests: Add default testfiles for KVM selftests runner
2025-02-22 0:59 [PATCH 0/2] Add KVM selftest runner Vipin Sharma
@ 2025-02-22 0:59 ` Vipin Sharma
2025-04-30 17:01 ` Sean Christopherson
2025-02-22 0:59 ` [PATCH 2/2] KVM: selftests: Create KVM selftest runner Vipin Sharma
1 sibling, 1 reply; 9+ messages in thread
From: Vipin Sharma @ 2025-02-22 0:59 UTC (permalink / raw)
To: kvm, kvmarm, kvm-riscv, linux-arm-kernel
Cc: seanjc, pbonzini, anup, borntraeger, frankja, imbrenda, maz,
oliver.upton, Vipin Sharma
Create a root "testcases" folder in KVM selftests directory. Add test
files for all of the KVM selftests across all of the supported
platforms. Write only default test execution command in the test files.
Commands written in the test files will be ran by KVM selftest runner.
Test files are organized based following rules:
1. All test files resides in "testcases" directory.
2. Test files should have .test extension. This is needed so that
git doesn't ignore the test file changes.
3. Each KVM selftest resides in a folder in "testcases" directory.
It follows the path of KVM selftests directory. For example,
kvm/x86_64/vmx_msrs_test.c will be in
kvm/testcases/x86_64/vmx_msrs_tests directory.
4. default.test name is reserved for the default command to execute the
test.
5. Different configuration of the tests should reside in their own test
files under the same test directory. For example dirty_log_perf_test
can have:
- testcases/dirty_log_perf_test/default.test
- testcases/dirty_log_perf_test/hugetlb1g.test
- testcases/dirty_log_perf_test/disable_dirty_log_manual.test
6. If there is an arch specific option of a common test then it should
be specified under an arch name directory in the test directory. This
will avoid test runner to execute the common test or its option on
unsupported machine. For example:
testcases/memslot_modification_stress_test/x86_64/disable_slot_zap_quirk.test
Signed-off-by: Vipin Sharma <vipinsh@google.com>
---
tools/testing/selftests/kvm/.gitignore | 3 ++-
.../kvm/testcases/aarch64/aarch32_id_regs/default.test | 1 +
.../selftests/kvm/testcases/aarch64/arch_timer/default.test | 1 +
.../kvm/testcases/aarch64/arch_timer_edge_cases/default.test | 1 +
.../kvm/testcases/aarch64/debug-exceptions/default.test | 1 +
.../selftests/kvm/testcases/aarch64/get-reg-list/default.test | 1 +
.../selftests/kvm/testcases/aarch64/hypercalls/default.test | 1 +
.../selftests/kvm/testcases/aarch64/no-vgic-v3/default.test | 1 +
.../kvm/testcases/aarch64/page_fault_test/default.test | 1 +
.../selftests/kvm/testcases/aarch64/psci_test/default.test | 1 +
.../selftests/kvm/testcases/aarch64/set_id_regs/default.test | 1 +
.../selftests/kvm/testcases/aarch64/smccc_filter/default.test | 1 +
.../kvm/testcases/aarch64/vcpu_width_config/default.test | 1 +
.../selftests/kvm/testcases/aarch64/vgic_init/default.test | 1 +
.../selftests/kvm/testcases/aarch64/vgic_irq/default.test | 1 +
.../kvm/testcases/aarch64/vgic_lpi_stress/default.test | 1 +
.../kvm/testcases/aarch64/vpmu_counter_access/default.test | 1 +
.../kvm/testcases/access_tracking_perf_test/default.test | 1 +
.../selftests/kvm/testcases/coalesced_io_test/default.test | 1 +
.../selftests/kvm/testcases/demand_paging_test/default.test | 1 +
.../selftests/kvm/testcases/dirty_log_perf_test/default.test | 1 +
.../selftests/kvm/testcases/dirty_log_test/default.test | 1 +
.../selftests/kvm/testcases/guest_memfd_test/default.test | 1 +
.../selftests/kvm/testcases/guest_print_test/default.test | 1 +
.../selftests/kvm/testcases/hardware_disable_test/default.test | 1 +
.../selftests/kvm/testcases/kvm_binary_stats_test/default.test | 1 +
.../selftests/kvm/testcases/kvm_create_max_vcpus/default.test | 1 +
.../selftests/kvm/testcases/kvm_page_table_test/default.test | 1 +
.../selftests/kvm/testcases/max_guest_memory_test/default.test | 1 +
.../testcases/memslot_modification_stress_test/default.test | 1 +
.../selftests/kvm/testcases/memslot_perf_test/default.test | 1 +
.../selftests/kvm/testcases/pre_fault_memory_test/default.test | 1 +
.../selftests/kvm/testcases/riscv/arch_timer/default.test | 1 +
.../selftests/kvm/testcases/riscv/ebreak_test/default.test | 1 +
.../selftests/kvm/testcases/riscv/get-reg-list/default.test | 1 +
.../selftests/kvm/testcases/riscv/sbi_pmu_test/default.test | 1 +
tools/testing/selftests/kvm/testcases/rseq_test/default.test | 1 +
.../selftests/kvm/testcases/s390x/cmma_test/default.test | 1 +
.../selftests/kvm/testcases/s390x/debug_test/default.test | 1 +
tools/testing/selftests/kvm/testcases/s390x/memop/default.test | 1 +
.../testing/selftests/kvm/testcases/s390x/resets/default.test | 1 +
.../kvm/testcases/s390x/shared_zeropage_test/default.test | 1 +
.../selftests/kvm/testcases/s390x/sync_regs_test/default.test | 1 +
tools/testing/selftests/kvm/testcases/s390x/tprot/default.test | 1 +
.../selftests/kvm/testcases/s390x/ucontrol_test/default.test | 1 +
.../kvm/testcases/set_memory_region_test/default.test | 1 +
tools/testing/selftests/kvm/testcases/steal_time/default.test | 1 +
.../kvm/testcases/system_counter_offset_test/default.test | 1 +
.../selftests/kvm/testcases/x86_64/amx_test/default.test | 1 +
.../kvm/testcases/x86_64/apic_bus_clock_test/default.test | 1 +
.../selftests/kvm/testcases/x86_64/cpuid_test/default.test | 1 +
.../kvm/testcases/x86_64/cr4_cpuid_sync_test/default.test | 1 +
.../selftests/kvm/testcases/x86_64/debug_regs/default.test | 1 +
.../x86_64/dirty_log_page_splitting_test/default.test | 1 +
.../x86_64/exit_on_emulation_failure_test/default.test | 1 +
.../kvm/testcases/x86_64/feature_msrs_test/default.test | 1 +
.../kvm/testcases/x86_64/fix_hypercall_test/default.test | 1 +
.../selftests/kvm/testcases/x86_64/hwcr_msr_test/default.test | 1 +
.../selftests/kvm/testcases/x86_64/hyperv_clock/default.test | 1 +
.../selftests/kvm/testcases/x86_64/hyperv_cpuid/default.test | 1 +
.../selftests/kvm/testcases/x86_64/hyperv_evmcs/default.test | 1 +
.../testcases/x86_64/hyperv_extended_hypercalls/default.test | 1 +
.../kvm/testcases/x86_64/hyperv_features/default.test | 1 +
.../selftests/kvm/testcases/x86_64/hyperv_ipi/default.test | 1 +
.../kvm/testcases/x86_64/hyperv_svm_test/default.test | 1 +
.../kvm/testcases/x86_64/hyperv_tlb_flush/default.test | 1 +
.../selftests/kvm/testcases/x86_64/kvm_clock_test/default.test | 1 +
.../selftests/kvm/testcases/x86_64/kvm_pv_test/default.test | 1 +
.../kvm/testcases/x86_64/max_vcpuid_cap_test/default.test | 1 +
.../kvm/testcases/x86_64/monitor_mwait_test/default.test | 1 +
.../kvm/testcases/x86_64/nested_exceptions_test/default.test | 1 +
.../kvm/testcases/x86_64/nx_huge_pages_test/default.test | 1 +
.../kvm/testcases/x86_64/platform_info_test/default.test | 1 +
.../kvm/testcases/x86_64/pmu_counters_test/default.test | 1 +
.../kvm/testcases/x86_64/pmu_event_filter_test/default.test | 1 +
.../testcases/x86_64/private_mem_conversions_test/default.test | 1 +
.../testcases/x86_64/private_mem_kvm_exits_test/default.test | 1 +
.../kvm/testcases/x86_64/recalc_apic_map_test/default.test | 1 +
.../kvm/testcases/x86_64/set_boot_cpu_id/default.test | 1 +
.../selftests/kvm/testcases/x86_64/set_sregs_test/default.test | 1 +
.../kvm/testcases/x86_64/sev_init2_tests/default.test | 1 +
.../kvm/testcases/x86_64/sev_migrate_tests/default.test | 1 +
.../selftests/kvm/testcases/x86_64/sev_smoke_test/default.test | 1 +
.../x86_64/smaller_maxphyaddr_emulation_test/default.test | 1 +
.../selftests/kvm/testcases/x86_64/smm_test/default.test | 1 +
.../selftests/kvm/testcases/x86_64/state_test/default.test | 1 +
.../kvm/testcases/x86_64/svm_int_ctl_test/default.test | 1 +
.../kvm/testcases/x86_64/svm_nested_shutdown_test/default.test | 1 +
.../testcases/x86_64/svm_nested_soft_inject_test/default.test | 1 +
.../kvm/testcases/x86_64/svm_vmcall_test/default.test | 1 +
.../selftests/kvm/testcases/x86_64/sync_regs_test/default.test | 1 +
.../kvm/testcases/x86_64/triple_fault_event_test/default.test | 1 +
.../selftests/kvm/testcases/x86_64/tsc_msrs_test/default.test | 1 +
.../kvm/testcases/x86_64/tsc_scaling_sync/default.test | 1 +
.../kvm/testcases/x86_64/ucna_injection_test/default.test | 1 +
.../kvm/testcases/x86_64/userspace_io_test/default.test | 1 +
.../kvm/testcases/x86_64/userspace_msr_exit_test/default.test | 1 +
.../kvm/testcases/x86_64/vmx_apic_access_test/default.test | 1 +
.../testcases/x86_64/vmx_close_while_nested_test/default.test | 1 +
.../kvm/testcases/x86_64/vmx_dirty_log_test/default.test | 1 +
.../x86_64/vmx_exception_with_invalid_guest_state/default.test | 1 +
.../x86_64/vmx_invalid_nested_guest_state/default.test | 1 +
.../selftests/kvm/testcases/x86_64/vmx_msrs_test/default.test | 1 +
.../testcases/x86_64/vmx_nested_tsc_scaling_test/default.test | 1 +
.../kvm/testcases/x86_64/vmx_pmu_caps_test/default.test | 1 +
.../testcases/x86_64/vmx_preemption_timer_test/default.test | 1 +
.../testcases/x86_64/vmx_set_nested_state_test/default.test | 1 +
.../kvm/testcases/x86_64/vmx_tsc_adjust_test/default.test | 1 +
.../selftests/kvm/testcases/x86_64/xapic_ipi_test/default.test | 1 +
.../kvm/testcases/x86_64/xapic_state_test/default.test | 1 +
.../kvm/testcases/x86_64/xcr0_cpuid_test/default.test | 1 +
.../kvm/testcases/x86_64/xen_shinfo_test/default.test | 1 +
.../kvm/testcases/x86_64/xen_vmcall_test/default.test | 1 +
.../selftests/kvm/testcases/x86_64/xss_msr_test/default.test | 1 +
114 files changed, 115 insertions(+), 1 deletion(-)
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/aarch32_id_regs/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/arch_timer/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/arch_timer_edge_cases/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/debug-exceptions/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/get-reg-list/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/hypercalls/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/no-vgic-v3/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/page_fault_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/psci_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/set_id_regs/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/smccc_filter/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/vcpu_width_config/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/vgic_init/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/vgic_irq/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/vgic_lpi_stress/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/aarch64/vpmu_counter_access/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/access_tracking_perf_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/coalesced_io_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/demand_paging_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/dirty_log_perf_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/dirty_log_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/guest_memfd_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/guest_print_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/hardware_disable_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/kvm_binary_stats_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/kvm_create_max_vcpus/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/kvm_page_table_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/max_guest_memory_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/memslot_modification_stress_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/memslot_perf_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/pre_fault_memory_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/riscv/arch_timer/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/riscv/ebreak_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/riscv/get-reg-list/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/riscv/sbi_pmu_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/rseq_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/s390x/cmma_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/s390x/debug_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/s390x/memop/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/s390x/resets/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/s390x/shared_zeropage_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/s390x/sync_regs_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/s390x/tprot/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/s390x/ucontrol_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/set_memory_region_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/steal_time/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/system_counter_offset_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/amx_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/apic_bus_clock_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/cpuid_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/cr4_cpuid_sync_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/debug_regs/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/dirty_log_page_splitting_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/exit_on_emulation_failure_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/feature_msrs_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/fix_hypercall_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/hwcr_msr_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/hyperv_clock/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/hyperv_cpuid/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/hyperv_evmcs/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/hyperv_extended_hypercalls/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/hyperv_features/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/hyperv_ipi/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/hyperv_svm_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/hyperv_tlb_flush/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/kvm_clock_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/kvm_pv_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/max_vcpuid_cap_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/monitor_mwait_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/nested_exceptions_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/nx_huge_pages_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/platform_info_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/pmu_counters_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/pmu_event_filter_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/private_mem_conversions_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/private_mem_kvm_exits_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/recalc_apic_map_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/set_boot_cpu_id/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/set_sregs_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/sev_init2_tests/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/sev_migrate_tests/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/sev_smoke_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/smaller_maxphyaddr_emulation_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/smm_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/state_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/svm_int_ctl_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/svm_nested_shutdown_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/svm_nested_soft_inject_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/svm_vmcall_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/sync_regs_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/triple_fault_event_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/tsc_msrs_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/tsc_scaling_sync/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/ucna_injection_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/userspace_io_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/userspace_msr_exit_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/vmx_apic_access_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/vmx_close_while_nested_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/vmx_dirty_log_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/vmx_exception_with_invalid_guest_state/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/vmx_invalid_nested_guest_state/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/vmx_msrs_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/vmx_nested_tsc_scaling_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/vmx_pmu_caps_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/vmx_preemption_timer_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/vmx_set_nested_state_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/vmx_tsc_adjust_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/xapic_ipi_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/xapic_state_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/xcr0_cpuid_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/xen_shinfo_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/xen_vmcall_test/default.test
create mode 100644 tools/testing/selftests/kvm/testcases/x86_64/xss_msr_test/default.test
diff --git a/tools/testing/selftests/kvm/.gitignore b/tools/testing/selftests/kvm/.gitignore
index 1d41a046a7bf..550b7c2b4a0c 100644
--- a/tools/testing/selftests/kvm/.gitignore
+++ b/tools/testing/selftests/kvm/.gitignore
@@ -9,4 +9,5 @@
!config
!settings
!Makefile
-!Makefile.kvm
\ No newline at end of file
+!Makefile.kvm
+!*.test
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/aarch32_id_regs/default.test b/tools/testing/selftests/kvm/testcases/aarch64/aarch32_id_regs/default.test
new file mode 100644
index 000000000000..5db8723f554f
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/aarch32_id_regs/default.test
@@ -0,0 +1 @@
+./aarch64/aarch32_id_regs
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/arch_timer/default.test b/tools/testing/selftests/kvm/testcases/aarch64/arch_timer/default.test
new file mode 100644
index 000000000000..4eabd25b1c88
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/arch_timer/default.test
@@ -0,0 +1 @@
+./aarch64/arch_timer
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/arch_timer_edge_cases/default.test b/tools/testing/selftests/kvm/testcases/aarch64/arch_timer_edge_cases/default.test
new file mode 100644
index 000000000000..c2c17884d6ff
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/arch_timer_edge_cases/default.test
@@ -0,0 +1 @@
+./aarch64/arch_timer_edge_cases
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/debug-exceptions/default.test b/tools/testing/selftests/kvm/testcases/aarch64/debug-exceptions/default.test
new file mode 100644
index 000000000000..3dd50672ea2a
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/debug-exceptions/default.test
@@ -0,0 +1 @@
+./aarch64/debug-exceptions
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/get-reg-list/default.test b/tools/testing/selftests/kvm/testcases/aarch64/get-reg-list/default.test
new file mode 100644
index 000000000000..a7656ab23faa
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/get-reg-list/default.test
@@ -0,0 +1 @@
+./aarch64/get-reg-list
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/hypercalls/default.test b/tools/testing/selftests/kvm/testcases/aarch64/hypercalls/default.test
new file mode 100644
index 000000000000..c206440ad0e4
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/hypercalls/default.test
@@ -0,0 +1 @@
+./aarch64/hypercalls
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/no-vgic-v3/default.test b/tools/testing/selftests/kvm/testcases/aarch64/no-vgic-v3/default.test
new file mode 100644
index 000000000000..2dc6002ec63b
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/no-vgic-v3/default.test
@@ -0,0 +1 @@
+./aarch64/no-vgic-v3
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/page_fault_test/default.test b/tools/testing/selftests/kvm/testcases/aarch64/page_fault_test/default.test
new file mode 100644
index 000000000000..90d59bf94b53
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/page_fault_test/default.test
@@ -0,0 +1 @@
+./aarch64/page_fault_test
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/psci_test/default.test b/tools/testing/selftests/kvm/testcases/aarch64/psci_test/default.test
new file mode 100644
index 000000000000..55342f569e9e
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/psci_test/default.test
@@ -0,0 +1 @@
+./aarch64/psci_test
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/set_id_regs/default.test b/tools/testing/selftests/kvm/testcases/aarch64/set_id_regs/default.test
new file mode 100644
index 000000000000..ffabfceae569
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/set_id_regs/default.test
@@ -0,0 +1 @@
+./aarch64/set_id_regs
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/smccc_filter/default.test b/tools/testing/selftests/kvm/testcases/aarch64/smccc_filter/default.test
new file mode 100644
index 000000000000..e4ae3145f15e
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/smccc_filter/default.test
@@ -0,0 +1 @@
+./aarch64/smccc_filter
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/vcpu_width_config/default.test b/tools/testing/selftests/kvm/testcases/aarch64/vcpu_width_config/default.test
new file mode 100644
index 000000000000..489c20dc6cf0
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/vcpu_width_config/default.test
@@ -0,0 +1 @@
+./aarch64/vcpu_width_config
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/vgic_init/default.test b/tools/testing/selftests/kvm/testcases/aarch64/vgic_init/default.test
new file mode 100644
index 000000000000..b8e1a8a7cfb6
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/vgic_init/default.test
@@ -0,0 +1 @@
+./aarch64/vgic_init
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/vgic_irq/default.test b/tools/testing/selftests/kvm/testcases/aarch64/vgic_irq/default.test
new file mode 100644
index 000000000000..308c12aa5f13
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/vgic_irq/default.test
@@ -0,0 +1 @@
+./aarch64/vgic_irq
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/vgic_lpi_stress/default.test b/tools/testing/selftests/kvm/testcases/aarch64/vgic_lpi_stress/default.test
new file mode 100644
index 000000000000..b33c45fb8998
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/vgic_lpi_stress/default.test
@@ -0,0 +1 @@
+./aarch64/vgic_lpi_stress
diff --git a/tools/testing/selftests/kvm/testcases/aarch64/vpmu_counter_access/default.test b/tools/testing/selftests/kvm/testcases/aarch64/vpmu_counter_access/default.test
new file mode 100644
index 000000000000..cd3ef4c21274
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/aarch64/vpmu_counter_access/default.test
@@ -0,0 +1 @@
+./aarch64/vpmu_counter_access
diff --git a/tools/testing/selftests/kvm/testcases/access_tracking_perf_test/default.test b/tools/testing/selftests/kvm/testcases/access_tracking_perf_test/default.test
new file mode 100644
index 000000000000..e940543be193
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/access_tracking_perf_test/default.test
@@ -0,0 +1 @@
+./access_tracking_perf_test
diff --git a/tools/testing/selftests/kvm/testcases/coalesced_io_test/default.test b/tools/testing/selftests/kvm/testcases/coalesced_io_test/default.test
new file mode 100644
index 000000000000..08dfcbb4fcd0
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/coalesced_io_test/default.test
@@ -0,0 +1 @@
+./coalesced_io_test
diff --git a/tools/testing/selftests/kvm/testcases/demand_paging_test/default.test b/tools/testing/selftests/kvm/testcases/demand_paging_test/default.test
new file mode 100644
index 000000000000..26043696d095
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/demand_paging_test/default.test
@@ -0,0 +1 @@
+./demand_paging_test
diff --git a/tools/testing/selftests/kvm/testcases/dirty_log_perf_test/default.test b/tools/testing/selftests/kvm/testcases/dirty_log_perf_test/default.test
new file mode 100644
index 000000000000..8968bf6eb881
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/dirty_log_perf_test/default.test
@@ -0,0 +1 @@
+./dirty_log_perf_test
diff --git a/tools/testing/selftests/kvm/testcases/dirty_log_test/default.test b/tools/testing/selftests/kvm/testcases/dirty_log_test/default.test
new file mode 100644
index 000000000000..87bc10443ff9
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/dirty_log_test/default.test
@@ -0,0 +1 @@
+./dirty_log_test
diff --git a/tools/testing/selftests/kvm/testcases/guest_memfd_test/default.test b/tools/testing/selftests/kvm/testcases/guest_memfd_test/default.test
new file mode 100644
index 000000000000..4bba43fcca8d
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/guest_memfd_test/default.test
@@ -0,0 +1 @@
+./guest_memfd_test
diff --git a/tools/testing/selftests/kvm/testcases/guest_print_test/default.test b/tools/testing/selftests/kvm/testcases/guest_print_test/default.test
new file mode 100644
index 000000000000..2b7d376d6b09
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/guest_print_test/default.test
@@ -0,0 +1 @@
+./guest_print_test
diff --git a/tools/testing/selftests/kvm/testcases/hardware_disable_test/default.test b/tools/testing/selftests/kvm/testcases/hardware_disable_test/default.test
new file mode 100644
index 000000000000..e960b290d00a
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/hardware_disable_test/default.test
@@ -0,0 +1 @@
+./hardware_disable_test
diff --git a/tools/testing/selftests/kvm/testcases/kvm_binary_stats_test/default.test b/tools/testing/selftests/kvm/testcases/kvm_binary_stats_test/default.test
new file mode 100644
index 000000000000..a8c0240251ce
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/kvm_binary_stats_test/default.test
@@ -0,0 +1 @@
+./kvm_binary_stats_test
diff --git a/tools/testing/selftests/kvm/testcases/kvm_create_max_vcpus/default.test b/tools/testing/selftests/kvm/testcases/kvm_create_max_vcpus/default.test
new file mode 100644
index 000000000000..a23226454cdc
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/kvm_create_max_vcpus/default.test
@@ -0,0 +1 @@
+./kvm_create_max_vcpus
diff --git a/tools/testing/selftests/kvm/testcases/kvm_page_table_test/default.test b/tools/testing/selftests/kvm/testcases/kvm_page_table_test/default.test
new file mode 100644
index 000000000000..0efb9a150562
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/kvm_page_table_test/default.test
@@ -0,0 +1 @@
+./kvm_page_table_test
diff --git a/tools/testing/selftests/kvm/testcases/max_guest_memory_test/default.test b/tools/testing/selftests/kvm/testcases/max_guest_memory_test/default.test
new file mode 100644
index 000000000000..85c43b0a0f74
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/max_guest_memory_test/default.test
@@ -0,0 +1 @@
+./max_guest_memory_test
diff --git a/tools/testing/selftests/kvm/testcases/memslot_modification_stress_test/default.test b/tools/testing/selftests/kvm/testcases/memslot_modification_stress_test/default.test
new file mode 100644
index 000000000000..4a4bb75db039
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/memslot_modification_stress_test/default.test
@@ -0,0 +1 @@
+./memslot_modification_stress_test
diff --git a/tools/testing/selftests/kvm/testcases/memslot_perf_test/default.test b/tools/testing/selftests/kvm/testcases/memslot_perf_test/default.test
new file mode 100644
index 000000000000..70889328cea3
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/memslot_perf_test/default.test
@@ -0,0 +1 @@
+./memslot_perf_test
diff --git a/tools/testing/selftests/kvm/testcases/pre_fault_memory_test/default.test b/tools/testing/selftests/kvm/testcases/pre_fault_memory_test/default.test
new file mode 100644
index 000000000000..2b7c896d7c54
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/pre_fault_memory_test/default.test
@@ -0,0 +1 @@
+./pre_fault_memory_test
diff --git a/tools/testing/selftests/kvm/testcases/riscv/arch_timer/default.test b/tools/testing/selftests/kvm/testcases/riscv/arch_timer/default.test
new file mode 100644
index 000000000000..c16ee2797869
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/riscv/arch_timer/default.test
@@ -0,0 +1 @@
+./riscv/arch_timer
diff --git a/tools/testing/selftests/kvm/testcases/riscv/ebreak_test/default.test b/tools/testing/selftests/kvm/testcases/riscv/ebreak_test/default.test
new file mode 100644
index 000000000000..8415f42d391a
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/riscv/ebreak_test/default.test
@@ -0,0 +1 @@
+./riscv/ebreak_test
diff --git a/tools/testing/selftests/kvm/testcases/riscv/get-reg-list/default.test b/tools/testing/selftests/kvm/testcases/riscv/get-reg-list/default.test
new file mode 100644
index 000000000000..0238b91deecd
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/riscv/get-reg-list/default.test
@@ -0,0 +1 @@
+./riscv/get-reg-list
diff --git a/tools/testing/selftests/kvm/testcases/riscv/sbi_pmu_test/default.test b/tools/testing/selftests/kvm/testcases/riscv/sbi_pmu_test/default.test
new file mode 100644
index 000000000000..efa41caabe3e
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/riscv/sbi_pmu_test/default.test
@@ -0,0 +1 @@
+./riscv/sbi_pmu_test
diff --git a/tools/testing/selftests/kvm/testcases/rseq_test/default.test b/tools/testing/selftests/kvm/testcases/rseq_test/default.test
new file mode 100644
index 000000000000..6098cd71bd56
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/rseq_test/default.test
@@ -0,0 +1 @@
+./rseq_test
diff --git a/tools/testing/selftests/kvm/testcases/s390x/cmma_test/default.test b/tools/testing/selftests/kvm/testcases/s390x/cmma_test/default.test
new file mode 100644
index 000000000000..b36736b053dc
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/s390x/cmma_test/default.test
@@ -0,0 +1 @@
+./s390x/cmma_test
diff --git a/tools/testing/selftests/kvm/testcases/s390x/debug_test/default.test b/tools/testing/selftests/kvm/testcases/s390x/debug_test/default.test
new file mode 100644
index 000000000000..56eadb53ff96
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/s390x/debug_test/default.test
@@ -0,0 +1 @@
+./s390x/debug_test
diff --git a/tools/testing/selftests/kvm/testcases/s390x/memop/default.test b/tools/testing/selftests/kvm/testcases/s390x/memop/default.test
new file mode 100644
index 000000000000..b80932431521
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/s390x/memop/default.test
@@ -0,0 +1 @@
+./s390x/memop
diff --git a/tools/testing/selftests/kvm/testcases/s390x/resets/default.test b/tools/testing/selftests/kvm/testcases/s390x/resets/default.test
new file mode 100644
index 000000000000..7e116efaf6e3
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/s390x/resets/default.test
@@ -0,0 +1 @@
+./s390x/resets
diff --git a/tools/testing/selftests/kvm/testcases/s390x/shared_zeropage_test/default.test b/tools/testing/selftests/kvm/testcases/s390x/shared_zeropage_test/default.test
new file mode 100644
index 000000000000..d7ed954a5d87
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/s390x/shared_zeropage_test/default.test
@@ -0,0 +1 @@
+./s390x/shared_zeropage_test
diff --git a/tools/testing/selftests/kvm/testcases/s390x/sync_regs_test/default.test b/tools/testing/selftests/kvm/testcases/s390x/sync_regs_test/default.test
new file mode 100644
index 000000000000..fb5a97dc1a60
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/s390x/sync_regs_test/default.test
@@ -0,0 +1 @@
+./s390x/sync_regs_test
diff --git a/tools/testing/selftests/kvm/testcases/s390x/tprot/default.test b/tools/testing/selftests/kvm/testcases/s390x/tprot/default.test
new file mode 100644
index 000000000000..16476e6f7fe7
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/s390x/tprot/default.test
@@ -0,0 +1 @@
+./s390x/tprot
diff --git a/tools/testing/selftests/kvm/testcases/s390x/ucontrol_test/default.test b/tools/testing/selftests/kvm/testcases/s390x/ucontrol_test/default.test
new file mode 100644
index 000000000000..1a9a32db0d99
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/s390x/ucontrol_test/default.test
@@ -0,0 +1 @@
+./s390x/ucontrol_test
diff --git a/tools/testing/selftests/kvm/testcases/set_memory_region_test/default.test b/tools/testing/selftests/kvm/testcases/set_memory_region_test/default.test
new file mode 100644
index 000000000000..356c31e88471
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/set_memory_region_test/default.test
@@ -0,0 +1 @@
+./set_memory_region_test
diff --git a/tools/testing/selftests/kvm/testcases/steal_time/default.test b/tools/testing/selftests/kvm/testcases/steal_time/default.test
new file mode 100644
index 000000000000..10a490246d2d
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/steal_time/default.test
@@ -0,0 +1 @@
+./steal_time
diff --git a/tools/testing/selftests/kvm/testcases/system_counter_offset_test/default.test b/tools/testing/selftests/kvm/testcases/system_counter_offset_test/default.test
new file mode 100644
index 000000000000..a35557a85f79
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/system_counter_offset_test/default.test
@@ -0,0 +1 @@
+./system_counter_offset_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/amx_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/amx_test/default.test
new file mode 100644
index 000000000000..9328a4997849
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/amx_test/default.test
@@ -0,0 +1 @@
+./x86_64/amx_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/apic_bus_clock_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/apic_bus_clock_test/default.test
new file mode 100644
index 000000000000..71dc5be7a4de
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/apic_bus_clock_test/default.test
@@ -0,0 +1 @@
+./x86_64/apic_bus_clock_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/cpuid_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/cpuid_test/default.test
new file mode 100644
index 000000000000..f9f518c76732
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/cpuid_test/default.test
@@ -0,0 +1 @@
+./x86_64/cpuid_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/cr4_cpuid_sync_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/cr4_cpuid_sync_test/default.test
new file mode 100644
index 000000000000..a7ebd6d37523
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/cr4_cpuid_sync_test/default.test
@@ -0,0 +1 @@
+./x86_64/cr4_cpuid_sync_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/debug_regs/default.test b/tools/testing/selftests/kvm/testcases/x86_64/debug_regs/default.test
new file mode 100644
index 000000000000..972e16d8ae80
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/debug_regs/default.test
@@ -0,0 +1 @@
+./x86_64/debug_regs
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/dirty_log_page_splitting_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/dirty_log_page_splitting_test/default.test
new file mode 100644
index 000000000000..5e5eedb125fb
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/dirty_log_page_splitting_test/default.test
@@ -0,0 +1 @@
+./x86_64/dirty_log_page_splitting_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/exit_on_emulation_failure_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/exit_on_emulation_failure_test/default.test
new file mode 100644
index 000000000000..5e8d932a985a
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/exit_on_emulation_failure_test/default.test
@@ -0,0 +1 @@
+./x86_64/exit_on_emulation_failure_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/feature_msrs_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/feature_msrs_test/default.test
new file mode 100644
index 000000000000..a7f2bbf4bf56
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/feature_msrs_test/default.test
@@ -0,0 +1 @@
+./x86_64/feature_msrs_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/fix_hypercall_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/fix_hypercall_test/default.test
new file mode 100644
index 000000000000..e14c80fa8f45
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/fix_hypercall_test/default.test
@@ -0,0 +1 @@
+./x86_64/fix_hypercall_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/hwcr_msr_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/hwcr_msr_test/default.test
new file mode 100644
index 000000000000..62edde1e311d
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/hwcr_msr_test/default.test
@@ -0,0 +1 @@
+./x86_64/hwcr_msr_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/hyperv_clock/default.test b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_clock/default.test
new file mode 100644
index 000000000000..f636d01c1c04
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_clock/default.test
@@ -0,0 +1 @@
+./x86_64/hyperv_clock
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/hyperv_cpuid/default.test b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_cpuid/default.test
new file mode 100644
index 000000000000..eafad0b1579e
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_cpuid/default.test
@@ -0,0 +1 @@
+./x86_64/hyperv_cpuid
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/hyperv_evmcs/default.test b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_evmcs/default.test
new file mode 100644
index 000000000000..851add3c6e81
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_evmcs/default.test
@@ -0,0 +1 @@
+./x86_64/hyperv_evmcs
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/hyperv_extended_hypercalls/default.test b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_extended_hypercalls/default.test
new file mode 100644
index 000000000000..f66c5faa362b
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_extended_hypercalls/default.test
@@ -0,0 +1 @@
+./x86_64/hyperv_extended_hypercalls
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/hyperv_features/default.test b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_features/default.test
new file mode 100644
index 000000000000..fbf677334f30
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_features/default.test
@@ -0,0 +1 @@
+./x86_64/hyperv_features
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/hyperv_ipi/default.test b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_ipi/default.test
new file mode 100644
index 000000000000..5e080d57c89a
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_ipi/default.test
@@ -0,0 +1 @@
+./x86_64/hyperv_ipi
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/hyperv_svm_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_svm_test/default.test
new file mode 100644
index 000000000000..4d10b12513cb
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_svm_test/default.test
@@ -0,0 +1 @@
+./x86_64/hyperv_svm_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/hyperv_tlb_flush/default.test b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_tlb_flush/default.test
new file mode 100644
index 000000000000..0eb679f846e7
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/hyperv_tlb_flush/default.test
@@ -0,0 +1 @@
+./x86_64/hyperv_tlb_flush
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/kvm_clock_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/kvm_clock_test/default.test
new file mode 100644
index 000000000000..7d448d089a65
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/kvm_clock_test/default.test
@@ -0,0 +1 @@
+./x86_64/kvm_clock_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/kvm_pv_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/kvm_pv_test/default.test
new file mode 100644
index 000000000000..fb71a5fd8544
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/kvm_pv_test/default.test
@@ -0,0 +1 @@
+./x86_64/kvm_pv_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/max_vcpuid_cap_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/max_vcpuid_cap_test/default.test
new file mode 100644
index 000000000000..cc83f9b0224a
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/max_vcpuid_cap_test/default.test
@@ -0,0 +1 @@
+./x86_64/max_vcpuid_cap_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/monitor_mwait_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/monitor_mwait_test/default.test
new file mode 100644
index 000000000000..b863c909f6c6
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/monitor_mwait_test/default.test
@@ -0,0 +1 @@
+./x86_64/monitor_mwait_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/nested_exceptions_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/nested_exceptions_test/default.test
new file mode 100644
index 000000000000..bc326f0a4607
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/nested_exceptions_test/default.test
@@ -0,0 +1 @@
+./x86_64/nested_exceptions_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/nx_huge_pages_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/nx_huge_pages_test/default.test
new file mode 100644
index 000000000000..7195b59fe8a5
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/nx_huge_pages_test/default.test
@@ -0,0 +1 @@
+./x86_64/nx_huge_pages_test.sh
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/platform_info_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/platform_info_test/default.test
new file mode 100644
index 000000000000..d8e9803516ae
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/platform_info_test/default.test
@@ -0,0 +1 @@
+./x86_64/platform_info_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/pmu_counters_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/pmu_counters_test/default.test
new file mode 100644
index 000000000000..08f30fffe000
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/pmu_counters_test/default.test
@@ -0,0 +1 @@
+./x86_64/pmu_counters_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/pmu_event_filter_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/pmu_event_filter_test/default.test
new file mode 100644
index 000000000000..58f0afe0af50
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/pmu_event_filter_test/default.test
@@ -0,0 +1 @@
+./x86_64/pmu_event_filter_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/private_mem_conversions_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/private_mem_conversions_test/default.test
new file mode 100644
index 000000000000..8bb591b63967
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/private_mem_conversions_test/default.test
@@ -0,0 +1 @@
+./x86_64/private_mem_conversions_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/private_mem_kvm_exits_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/private_mem_kvm_exits_test/default.test
new file mode 100644
index 000000000000..9c624949de95
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/private_mem_kvm_exits_test/default.test
@@ -0,0 +1 @@
+./x86_64/private_mem_kvm_exits_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/recalc_apic_map_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/recalc_apic_map_test/default.test
new file mode 100644
index 000000000000..441e3bea8b71
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/recalc_apic_map_test/default.test
@@ -0,0 +1 @@
+./x86_64/recalc_apic_map_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/set_boot_cpu_id/default.test b/tools/testing/selftests/kvm/testcases/x86_64/set_boot_cpu_id/default.test
new file mode 100644
index 000000000000..80d5156f0623
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/set_boot_cpu_id/default.test
@@ -0,0 +1 @@
+./x86_64/set_boot_cpu_id
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/set_sregs_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/set_sregs_test/default.test
new file mode 100644
index 000000000000..83531913d381
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/set_sregs_test/default.test
@@ -0,0 +1 @@
+./x86_64/set_sregs_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/sev_init2_tests/default.test b/tools/testing/selftests/kvm/testcases/x86_64/sev_init2_tests/default.test
new file mode 100644
index 000000000000..9c356b1d7717
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/sev_init2_tests/default.test
@@ -0,0 +1 @@
+./x86_64/sev_init2_tests
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/sev_migrate_tests/default.test b/tools/testing/selftests/kvm/testcases/x86_64/sev_migrate_tests/default.test
new file mode 100644
index 000000000000..f0e2742cf6b4
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/sev_migrate_tests/default.test
@@ -0,0 +1 @@
+./x86_64/sev_migrate_tests
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/sev_smoke_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/sev_smoke_test/default.test
new file mode 100644
index 000000000000..56733d3d47d5
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/sev_smoke_test/default.test
@@ -0,0 +1 @@
+./x86_64/sev_smoke_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/smaller_maxphyaddr_emulation_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/smaller_maxphyaddr_emulation_test/default.test
new file mode 100644
index 000000000000..52f6dcebe18e
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/smaller_maxphyaddr_emulation_test/default.test
@@ -0,0 +1 @@
+./x86_64/smaller_maxphyaddr_emulation_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/smm_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/smm_test/default.test
new file mode 100644
index 000000000000..bd50d1fe0e39
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/smm_test/default.test
@@ -0,0 +1 @@
+./x86_64/smm_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/state_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/state_test/default.test
new file mode 100644
index 000000000000..e2f261ecb141
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/state_test/default.test
@@ -0,0 +1 @@
+./x86_64/state_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/svm_int_ctl_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/svm_int_ctl_test/default.test
new file mode 100644
index 000000000000..51c2b1a4d7ea
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/svm_int_ctl_test/default.test
@@ -0,0 +1 @@
+./x86_64/svm_int_ctl_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/svm_nested_shutdown_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/svm_nested_shutdown_test/default.test
new file mode 100644
index 000000000000..aa1320afb235
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/svm_nested_shutdown_test/default.test
@@ -0,0 +1 @@
+./x86_64/svm_nested_shutdown_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/svm_nested_soft_inject_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/svm_nested_soft_inject_test/default.test
new file mode 100644
index 000000000000..75ffe38b0246
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/svm_nested_soft_inject_test/default.test
@@ -0,0 +1 @@
+./x86_64/svm_nested_soft_inject_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/svm_vmcall_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/svm_vmcall_test/default.test
new file mode 100644
index 000000000000..415f8112e873
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/svm_vmcall_test/default.test
@@ -0,0 +1 @@
+./x86_64/svm_vmcall_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/sync_regs_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/sync_regs_test/default.test
new file mode 100644
index 000000000000..26f1e3c00208
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/sync_regs_test/default.test
@@ -0,0 +1 @@
+./x86_64/sync_regs_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/triple_fault_event_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/triple_fault_event_test/default.test
new file mode 100644
index 000000000000..86709ec1af57
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/triple_fault_event_test/default.test
@@ -0,0 +1 @@
+./x86_64/triple_fault_event_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/tsc_msrs_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/tsc_msrs_test/default.test
new file mode 100644
index 000000000000..e7eca5c5425b
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/tsc_msrs_test/default.test
@@ -0,0 +1 @@
+./x86_64/tsc_msrs_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/tsc_scaling_sync/default.test b/tools/testing/selftests/kvm/testcases/x86_64/tsc_scaling_sync/default.test
new file mode 100644
index 000000000000..75cec395980e
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/tsc_scaling_sync/default.test
@@ -0,0 +1 @@
+./x86_64/tsc_scaling_sync
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/ucna_injection_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/ucna_injection_test/default.test
new file mode 100644
index 000000000000..991ab4b35376
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/ucna_injection_test/default.test
@@ -0,0 +1 @@
+./x86_64/ucna_injection_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/userspace_io_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/userspace_io_test/default.test
new file mode 100644
index 000000000000..3401aa68ec4f
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/userspace_io_test/default.test
@@ -0,0 +1 @@
+./x86_64/userspace_io_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/userspace_msr_exit_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/userspace_msr_exit_test/default.test
new file mode 100644
index 000000000000..25d34dbb542d
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/userspace_msr_exit_test/default.test
@@ -0,0 +1 @@
+./x86_64/userspace_msr_exit_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/vmx_apic_access_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/vmx_apic_access_test/default.test
new file mode 100644
index 000000000000..970ce4a87b69
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/vmx_apic_access_test/default.test
@@ -0,0 +1 @@
+./x86_64/vmx_apic_access_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/vmx_close_while_nested_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/vmx_close_while_nested_test/default.test
new file mode 100644
index 000000000000..97b5c9bc2385
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/vmx_close_while_nested_test/default.test
@@ -0,0 +1 @@
+./x86_64/vmx_close_while_nested_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/vmx_dirty_log_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/vmx_dirty_log_test/default.test
new file mode 100644
index 000000000000..dbbc6771830d
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/vmx_dirty_log_test/default.test
@@ -0,0 +1 @@
+./x86_64/vmx_dirty_log_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/vmx_exception_with_invalid_guest_state/default.test b/tools/testing/selftests/kvm/testcases/x86_64/vmx_exception_with_invalid_guest_state/default.test
new file mode 100644
index 000000000000..d9cb4e720d2b
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/vmx_exception_with_invalid_guest_state/default.test
@@ -0,0 +1 @@
+./x86_64/vmx_exception_with_invalid_guest_state
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/vmx_invalid_nested_guest_state/default.test b/tools/testing/selftests/kvm/testcases/x86_64/vmx_invalid_nested_guest_state/default.test
new file mode 100644
index 000000000000..396253417646
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/vmx_invalid_nested_guest_state/default.test
@@ -0,0 +1 @@
+./x86_64/vmx_invalid_nested_guest_state
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/vmx_msrs_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/vmx_msrs_test/default.test
new file mode 100644
index 000000000000..5eb96a67bc3a
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/vmx_msrs_test/default.test
@@ -0,0 +1 @@
+./x86_64/vmx_msrs_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/vmx_nested_tsc_scaling_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/vmx_nested_tsc_scaling_test/default.test
new file mode 100644
index 000000000000..9ffd06d52cce
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/vmx_nested_tsc_scaling_test/default.test
@@ -0,0 +1 @@
+./x86_64/vmx_nested_tsc_scaling_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/vmx_pmu_caps_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/vmx_pmu_caps_test/default.test
new file mode 100644
index 000000000000..e7bbc34d0d98
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/vmx_pmu_caps_test/default.test
@@ -0,0 +1 @@
+./x86_64/vmx_pmu_caps_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/vmx_preemption_timer_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/vmx_preemption_timer_test/default.test
new file mode 100644
index 000000000000..08432fd3071a
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/vmx_preemption_timer_test/default.test
@@ -0,0 +1 @@
+./x86_64/vmx_preemption_timer_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/vmx_set_nested_state_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/vmx_set_nested_state_test/default.test
new file mode 100644
index 000000000000..58b2bc65f767
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/vmx_set_nested_state_test/default.test
@@ -0,0 +1 @@
+./x86_64/vmx_set_nested_state_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/vmx_tsc_adjust_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/vmx_tsc_adjust_test/default.test
new file mode 100644
index 000000000000..3ec7560cab11
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/vmx_tsc_adjust_test/default.test
@@ -0,0 +1 @@
+./x86_64/vmx_tsc_adjust_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/xapic_ipi_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/xapic_ipi_test/default.test
new file mode 100644
index 000000000000..2cbd6b12f6e3
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/xapic_ipi_test/default.test
@@ -0,0 +1 @@
+./x86_64/xapic_ipi_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/xapic_state_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/xapic_state_test/default.test
new file mode 100644
index 000000000000..649e0268d6fd
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/xapic_state_test/default.test
@@ -0,0 +1 @@
+./x86_64/xapic_state_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/xcr0_cpuid_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/xcr0_cpuid_test/default.test
new file mode 100644
index 000000000000..d5ea6a4e2b20
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/xcr0_cpuid_test/default.test
@@ -0,0 +1 @@
+./x86_64/xcr0_cpuid_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/xen_shinfo_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/xen_shinfo_test/default.test
new file mode 100644
index 000000000000..79423b5a11e1
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/xen_shinfo_test/default.test
@@ -0,0 +1 @@
+./x86_64/xen_shinfo_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/xen_vmcall_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/xen_vmcall_test/default.test
new file mode 100644
index 000000000000..32ba7eb9d7e9
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/xen_vmcall_test/default.test
@@ -0,0 +1 @@
+./x86_64/xen_vmcall_test
diff --git a/tools/testing/selftests/kvm/testcases/x86_64/xss_msr_test/default.test b/tools/testing/selftests/kvm/testcases/x86_64/xss_msr_test/default.test
new file mode 100644
index 000000000000..c61ac639825b
--- /dev/null
+++ b/tools/testing/selftests/kvm/testcases/x86_64/xss_msr_test/default.test
@@ -0,0 +1 @@
+./x86_64/xss_msr_test
--
2.48.1.601.g30ceb7b040-goog
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/2] KVM: selftests: Create KVM selftest runner
2025-02-22 0:59 [PATCH 0/2] Add KVM selftest runner Vipin Sharma
2025-02-22 0:59 ` [PATCH 1/2] KVM: selftests: Add default testfiles for KVM selftests runner Vipin Sharma
@ 2025-02-22 0:59 ` Vipin Sharma
2025-04-30 21:31 ` Sean Christopherson
1 sibling, 1 reply; 9+ messages in thread
From: Vipin Sharma @ 2025-02-22 0:59 UTC (permalink / raw)
To: kvm, kvmarm, kvm-riscv, linux-arm-kernel
Cc: seanjc, pbonzini, anup, borntraeger, frankja, imbrenda, maz,
oliver.upton, Vipin Sharma
Create KVM selftest runner to run selftests and provide various options
for execution.
Provide following features in the runner:
1. --timeout/-t: Max time each test should finish in before killing it.
2. --jobs/-j: Run these many tests in parallel.
3. --tests: Provide space separated path of tests to execute.
4. --test_dirs: Directories to search for test files and run them.
5. --output/-o: Create the folder with given name and dump output of
each test in a hierarchical way.
6. Add summary at the end.
Runner needs testcase files which are provided in the previous patch.
Following are the examples to start the runner (cwd is
tools/testing/selftests/kvm)
- Basic run:
python3 runner --test_dirs testcases
- Run specific test
python3 runner --tests ./testcases/dirty_log_perf_test/default.test
- Run tests parallel
python3 runner --test_dirs testcases -j 10
- Run 5 tests parallely at a time, with the timeout of 10 seconds and
dump output in "result" directory
python3 runner --test_dirs testcases -j 5 -t 10 --output result
Sample output from the above command:
python3_binary runner --test_dirs testcases -j 5 -t 10 --output result
2025-02-21 16:45:46,774 | 16809 | INFO | [Passed] testcases/guest_print_test/default.test
2025-02-21 16:45:47,040 | 16809 | INFO | [Passed] testcases/kvm_create_max_vcpus/default.test
2025-02-21 16:45:49,244 | 16809 | INFO | [Passed] testcases/dirty_log_perf_test/default.test
...
2025-02-21 16:46:07,225 | 16809 | INFO | [Passed] testcases/x86_64/pmu_event_filter_test/default.test
2025-02-21 16:46:08,020 | 16809 | INFO | [Passed] testcases/x86_64/vmx_preemption_timer_test/default.test
2025-02-21 16:46:09,734 | 16809 | INFO | [Timed out] testcases/x86_64/pmu_counters_test/default.test
2025-02-21 16:46:10,202 | 16809 | INFO | [Passed] testcases/hardware_disable_test/default.test
2025-02-21 16:46:10,203 | 16809 | INFO | Tests ran: 85 tests
2025-02-21 16:46:10,204 | 16809 | INFO | Passed: 61
2025-02-21 16:46:10,204 | 16809 | INFO | Failed: 4
2025-02-21 16:46:10,204 | 16809 | INFO | Skipped: 17
2025-02-21 16:46:10,204 | 16809 | INFO | Timed out: 3
2025-02-21 16:46:10,204 | 16809 | INFO | No run: 0
Output dumped in result directory
$ tree result/
result/
├── log
└── testcases
├── access_tracking_perf_test
│ └── default.test
│ ├── stderr
│ └── stdout
├── coalesced_io_test
│ └── default.test
│ ├── stderr
│ └── stdout
...
results/log file will have the status of each test like the one printed
on console. Each stderr and stdout will have data based on the
execution.
Runner is implemented in python and needs at least 3.6 version.
Signed-off-by: Vipin Sharma <vipinsh@google.com>
---
tools/testing/selftests/kvm/.gitignore | 1 +
.../testing/selftests/kvm/runner/__main__.py | 96 +++++++++++++++++++
tools/testing/selftests/kvm/runner/command.py | 42 ++++++++
.../testing/selftests/kvm/runner/selftest.py | 49 ++++++++++
.../selftests/kvm/runner/test_runner.py | 40 ++++++++
5 files changed, 228 insertions(+)
create mode 100644 tools/testing/selftests/kvm/runner/__main__.py
create mode 100644 tools/testing/selftests/kvm/runner/command.py
create mode 100644 tools/testing/selftests/kvm/runner/selftest.py
create mode 100644 tools/testing/selftests/kvm/runner/test_runner.py
diff --git a/tools/testing/selftests/kvm/.gitignore b/tools/testing/selftests/kvm/.gitignore
index 550b7c2b4a0c..a23fd4b2cb5f 100644
--- a/tools/testing/selftests/kvm/.gitignore
+++ b/tools/testing/selftests/kvm/.gitignore
@@ -11,3 +11,4 @@
!Makefile
!Makefile.kvm
!*.test
+!*.py
diff --git a/tools/testing/selftests/kvm/runner/__main__.py b/tools/testing/selftests/kvm/runner/__main__.py
new file mode 100644
index 000000000000..008d862757f2
--- /dev/null
+++ b/tools/testing/selftests/kvm/runner/__main__.py
@@ -0,0 +1,96 @@
+# SPDX-License-Identifier: GPL-2.0
+import pathlib
+import argparse
+import platform
+import logging
+import os
+import enum
+import test_runner
+
+
+def cli():
+ parser = argparse.ArgumentParser(
+ prog="KVM Selftests Runner",
+ description="Run KVM selftests with different configurations",
+ formatter_class=argparse.RawTextHelpFormatter
+ )
+
+ parser.add_argument("--tests",
+ nargs="*",
+ default=[],
+ help="Test cases to run. Provide the space separated test case file paths")
+
+ parser.add_argument("--test_dirs",
+ nargs="*",
+ default=[],
+ help="Run tests in the given directory and all its sub directories. Provide the space separated paths to add multiple directories.")
+
+ parser.add_argument("-j",
+ "--jobs",
+ default=1,
+ type=int,
+ help="Number of parallel test runners to start")
+
+ parser.add_argument("-t",
+ "--timeout",
+ default=120,
+ type=int,
+ help="How long to wait for a single test to finish before killing it")
+
+ parser.add_argument("-o",
+ "--output",
+ nargs='?',
+ help="Output directory for test results.")
+
+ return parser.parse_args()
+
+
+def setup_logging(args):
+ output = args.output
+ if output == None:
+ logging.basicConfig(level=logging.INFO,
+ format="%(asctime)s | %(process)d | %(levelname)8s | %(message)s")
+ else:
+ logging_file = os.path.join(output, "log")
+ pathlib.Path(output).mkdir(parents=True, exist_ok=True)
+ logging.basicConfig(level=logging.INFO,
+ format="%(asctime)s | %(process)d | %(levelname)8s | %(message)s",
+ handlers=[
+ logging.FileHandler(logging_file, mode='w'),
+ logging.StreamHandler()
+ ])
+
+
+def fetch_tests_from_dirs(scan_dirs, exclude_dirs):
+ test_files = []
+ for scan_dir in scan_dirs:
+ for root, dirs, files in os.walk(scan_dir):
+ dirs[:] = [dir for dir in dirs if dir not in exclude_dirs]
+ for file in files:
+ test_files.append(os.path.join(root, file))
+ return test_files
+
+
+def fetch_test_files(args):
+ exclude_dirs = ["aarch64", "x86_64", "riscv", "s390x"]
+ # Don't exclude tests of the current platform
+ exclude_dirs.remove(platform.machine())
+
+ test_files = args.tests
+ test_files.extend(fetch_tests_from_dirs(args.test_dirs, exclude_dirs))
+ # Remove duplicates
+ test_files = list(dict.fromkeys(test_files))
+ return test_files
+
+
+def main():
+ args = cli()
+ setup_logging(args)
+ test_files = fetch_test_files(args)
+ tr = test_runner.TestRunner(
+ test_files, args.output, args.timeout, args.jobs)
+ tr.start()
+
+
+if __name__ == "__main__":
+ main()
diff --git a/tools/testing/selftests/kvm/runner/command.py b/tools/testing/selftests/kvm/runner/command.py
new file mode 100644
index 000000000000..a58f16fe4542
--- /dev/null
+++ b/tools/testing/selftests/kvm/runner/command.py
@@ -0,0 +1,42 @@
+# SPDX-License-Identifier: GPL-2.0
+import contextlib
+import subprocess
+import os
+import pathlib
+
+
+class Command:
+ """Executes a command
+
+ Just execute a command. Dump output to the directory if provided.
+
+ Returns the exit code of the command.
+ """
+
+ def __init__(self, command, timeout=None, output_dir=None):
+ self.command = command
+ self.timeout = timeout
+ self.output_dir = output_dir
+
+ def __run(self, output=None, error=None):
+ proc = subprocess.run(self.command, stdout=output,
+ stderr=error, universal_newlines=True,
+ shell=True, timeout=self.timeout)
+ return proc.returncode
+
+ def run(self):
+ if self.output_dir is not None:
+ pathlib.Path(self.output_dir).mkdir(parents=True, exist_ok=True)
+
+ output = None
+ error = None
+ with contextlib.ExitStack() as stack:
+ if self.output_dir is not None:
+ output_path = os.path.join(self.output_dir, "stdout")
+ output = stack.enter_context(
+ open(output_path, encoding="utf-8", mode="w"))
+
+ error_path = os.path.join(self.output_dir, "stderr")
+ error = stack.enter_context(
+ open(error_path, encoding="utf-8", mode="w"))
+ return self.__run(output, error)
diff --git a/tools/testing/selftests/kvm/runner/selftest.py b/tools/testing/selftests/kvm/runner/selftest.py
new file mode 100644
index 000000000000..cdf5d1085c08
--- /dev/null
+++ b/tools/testing/selftests/kvm/runner/selftest.py
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: GPL-2.0
+import subprocess
+import command
+import pathlib
+import enum
+import os
+import logging
+
+
+class SelftestStatus(str, enum.Enum):
+ PASSED = "Passed"
+ FAILED = "Failed"
+ SKIPPED = "Skipped"
+ TIMED_OUT = "Timed out"
+ NO_RUN = "No run"
+
+ def __str__(self):
+ return str.__str__(self)
+
+
+class Selftest:
+ """A single test.
+
+ A test which can be run on its own.
+ """
+
+ def __init__(self, test_path, output_dir=None, timeout=None,):
+ test_command = pathlib.Path(test_path).read_text().strip()
+ if not test_command:
+ raise ValueError("Empty test command in " + test_path)
+
+ if output_dir is not None:
+ output_dir = os.path.join(output_dir, test_path)
+ self.test_path = test_path
+ self.command = command.Command(test_command, timeout, output_dir)
+ self.status = SelftestStatus.NO_RUN
+
+ def run(self):
+ try:
+ ret = self.command.run()
+ if ret == 0:
+ self.status = SelftestStatus.PASSED
+ elif ret == 4:
+ self.status = SelftestStatus.SKIPPED
+ else:
+ self.status = SelftestStatus.FAILED
+ except subprocess.TimeoutExpired as e:
+ # logging.error(type(e).__name__ + str(e))
+ self.status = SelftestStatus.TIMED_OUT
diff --git a/tools/testing/selftests/kvm/runner/test_runner.py b/tools/testing/selftests/kvm/runner/test_runner.py
new file mode 100644
index 000000000000..b9d34c20bf88
--- /dev/null
+++ b/tools/testing/selftests/kvm/runner/test_runner.py
@@ -0,0 +1,40 @@
+# SPDX-License-Identifier: GPL-2.0
+import queue
+import concurrent.futures
+import logging
+import time
+import selftest
+
+
+class TestRunner:
+ def __init__(self, test_files, output_dir, timeout, parallelism):
+ self.parallelism = parallelism
+ self.tests = []
+
+ for test_file in test_files:
+ self.tests.append(selftest.Selftest(
+ test_file, output_dir, timeout))
+
+ def _run(self, test):
+ test.run()
+ return test
+
+ def start(self):
+
+ status = {x: 0 for x in selftest.SelftestStatus}
+ count = 0
+ with concurrent.futures.ProcessPoolExecutor(max_workers=self.parallelism) as executor:
+ all_futures = []
+ for test in self.tests:
+ future = executor.submit(self._run, test)
+ all_futures.append(future)
+
+ for future in concurrent.futures.as_completed(all_futures):
+ test = future.result()
+ logging.info(f"[{test.status}] {test.test_path}")
+ status[test.status] += 1
+ count += 1
+
+ logging.info(f"Tests ran: {count} tests")
+ for result, count in status.items():
+ logging.info(f"{result}: {count}")
--
2.48.1.601.g30ceb7b040-goog
^ permalink raw reply related [flat|nested] 9+ messages in thread