* [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls
@ 2024-11-28 0:55 Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 01/16] KVM: Move KVM_REG_SIZE() definition to common uAPI header Sean Christopherson
` (17 more replies)
0 siblings, 18 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Two separate series (mmu_stress_test[1] and $ARCH[2]), posted as one to
avoid unpleasant conflicts, and because I hope to land both in kvm/next
shortly after 6.12-rc1 since they impact all of KVM selftests.
mmu_stress_test
---------------
Convert the max_guest_memory_test into a more generic mmu_stress_test.
The basic gist of the "conversion" is to have the test do mprotect() on
guest memory while vCPUs are accessing said memory, e.g. to verify KVM
and mmu_notifiers are working as intended.
The original plan was that patch 3 would be a single patch, but things
snowballed in order to rework vcpu_get_reg() to return a value instead
of using an out-param. Having to define a variable just to bump the
program counter on arm64 annoyed me.
$ARCH
-----
Play nice with treewrite builds of unsupported architectures, e.g. arm
(32-bit), as KVM selftests' Makefile doesn't do anything to ensure the
target architecture is actually one KVM selftests supports.
The last two patches are opportunistic changes (since the above Makefile
change will generate conflicts everywhere) to switch to using $(ARCH)
instead of the target triple for arch specific directories, e.g. arm64
instead of aarch64, mainly so as not to be different from the rest of
the kernel.
Compile tested on all architectures, runtime tested on x86 and arm64.
v4:
- Rebase and squash the series.
- Exclude Makefile.kvm from .gitignore. [kernel test bot]
v3 (of mmu_stress_test):
- Rebased onto v6.12-rc2.
- Disable strict aliasing to fix the PMCR snafu.
- Collect reviews. [Drew]
- Minor changelog fixes. [Drew]
- Include ucall_common.h to prep for RISC-V. [Drew]
v2:
- Rebase onto kvm/next.
- Add the aforementioned vcpu_get_reg() changes/disaster.
- Actually add arm64 support for the fancy mprotect() testcase (I did this
before v1, but managed to forget to include the changes when posting).
- Emit "mov %rax, (%rax)" on x86. [James]
- Add a comment to explain the fancy mprotect() vs. vCPUs logic.
- Drop the KVM x86 patches (applied and/or will be handled separately).
v1: https://lore.kernel.org/all/20240809194335.1726916-1-seanjc@google.com
[1] https://lore.kernel.org/all/20241009154953.1073471-1-seanjc@google.com
[2] https://lore.kernel.org/all/20240826190116.145945-1-seanjc@google.com
Sean Christopherson (16):
KVM: Move KVM_REG_SIZE() definition to common uAPI header
KVM: selftests: Return a value from vcpu_get_reg() instead of using an
out-param
KVM: selftests: Assert that vcpu_{g,s}et_reg() won't truncate
KVM: selftests: Check for a potential unhandled exception iff KVM_RUN
succeeded
KVM: selftests: Rename max_guest_memory_test to mmu_stress_test
KVM: selftests: Only muck with SREGS on x86 in mmu_stress_test
KVM: selftests: Compute number of extra pages needed in
mmu_stress_test
KVM: sefltests: Explicitly include ucall_common.h in mmu_stress_test.c
KVM: selftests: Enable mmu_stress_test on arm64
KVM: selftests: Use vcpu_arch_put_guest() in mmu_stress_test
KVM: selftests: Precisely limit the number of guest loops in
mmu_stress_test
KVM: selftests: Add a read-only mprotect() phase to mmu_stress_test
KVM: selftests: Verify KVM correctly handles mprotect(PROT_READ)
KVM: selftests: Provide empty 'all' and 'clean' targets for
unsupported ARCHs
KVM: selftests: Use canonical $(ARCH) paths for KVM selftests
directories
KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR
MAINTAINERS | 12 +-
arch/arm64/include/uapi/asm/kvm.h | 3 -
arch/riscv/include/uapi/asm/kvm.h | 3 -
include/uapi/linux/kvm.h | 4 +
tools/testing/selftests/kvm/.gitignore | 1 +
tools/testing/selftests/kvm/Makefile | 345 +-----------------
tools/testing/selftests/kvm/Makefile.kvm | 330 +++++++++++++++++
.../kvm/{aarch64 => arm64}/aarch32_id_regs.c | 10 +-
.../kvm/{aarch64 => arm64}/arch_timer.c | 0
.../arch_timer_edge_cases.c | 0
.../kvm/{aarch64 => arm64}/debug-exceptions.c | 4 +-
.../kvm/{aarch64 => arm64}/get-reg-list.c | 0
.../kvm/{aarch64 => arm64}/hypercalls.c | 6 +-
.../kvm/{aarch64 => arm64}/mmio_abort.c | 0
.../kvm/{aarch64 => arm64}/no-vgic-v3.c | 2 +-
.../kvm/{aarch64 => arm64}/page_fault_test.c | 0
.../kvm/{aarch64 => arm64}/psci_test.c | 6 +-
.../kvm/{aarch64 => arm64}/set_id_regs.c | 18 +-
.../kvm/{aarch64 => arm64}/smccc_filter.c | 0
.../{aarch64 => arm64}/vcpu_width_config.c | 0
.../kvm/{aarch64 => arm64}/vgic_init.c | 0
.../kvm/{aarch64 => arm64}/vgic_irq.c | 0
.../kvm/{aarch64 => arm64}/vgic_lpi_stress.c | 0
.../{aarch64 => arm64}/vpmu_counter_access.c | 19 +-
.../selftests/kvm/dirty_log_perf_test.c | 2 +-
.../include/{aarch64 => arm64}/arch_timer.h | 0
.../kvm/include/{aarch64 => arm64}/delay.h | 0
.../kvm/include/{aarch64 => arm64}/gic.h | 0
.../kvm/include/{aarch64 => arm64}/gic_v3.h | 0
.../include/{aarch64 => arm64}/gic_v3_its.h | 0
.../{aarch64 => arm64}/kvm_util_arch.h | 0
.../include/{aarch64 => arm64}/processor.h | 0
.../kvm/include/{aarch64 => arm64}/spinlock.h | 0
.../kvm/include/{aarch64 => arm64}/ucall.h | 0
.../kvm/include/{aarch64 => arm64}/vgic.h | 0
.../testing/selftests/kvm/include/kvm_util.h | 10 +-
.../kvm/include/{s390x => s390}/debug_print.h | 0
.../{s390x => s390}/diag318_test_handler.h | 0
.../kvm/include/{s390x => s390}/facility.h | 0
.../include/{s390x => s390}/kvm_util_arch.h | 0
.../kvm/include/{s390x => s390}/processor.h | 0
.../kvm/include/{s390x => s390}/sie.h | 0
.../kvm/include/{s390x => s390}/ucall.h | 0
.../kvm/include/{x86_64 => x86}/apic.h | 2 -
.../kvm/include/{x86_64 => x86}/evmcs.h | 3 -
.../kvm/include/{x86_64 => x86}/hyperv.h | 3 -
.../include/{x86_64 => x86}/kvm_util_arch.h | 0
.../kvm/include/{x86_64 => x86}/mce.h | 2 -
.../kvm/include/{x86_64 => x86}/pmu.h | 0
.../kvm/include/{x86_64 => x86}/processor.h | 2 -
.../kvm/include/{x86_64 => x86}/sev.h | 0
.../kvm/include/{x86_64 => x86}/svm.h | 6 -
.../kvm/include/{x86_64 => x86}/svm_util.h | 3 -
.../kvm/include/{x86_64 => x86}/ucall.h | 0
.../kvm/include/{x86_64 => x86}/vmx.h | 2 -
.../kvm/lib/{aarch64 => arm64}/gic.c | 0
.../kvm/lib/{aarch64 => arm64}/gic_private.h | 0
.../kvm/lib/{aarch64 => arm64}/gic_v3.c | 0
.../kvm/lib/{aarch64 => arm64}/gic_v3_its.c | 0
.../kvm/lib/{aarch64 => arm64}/handlers.S | 0
.../kvm/lib/{aarch64 => arm64}/processor.c | 8 +-
.../kvm/lib/{aarch64 => arm64}/spinlock.c | 0
.../kvm/lib/{aarch64 => arm64}/ucall.c | 0
.../kvm/lib/{aarch64 => arm64}/vgic.c | 0
tools/testing/selftests/kvm/lib/kvm_util.c | 3 +-
.../selftests/kvm/lib/riscv/processor.c | 66 ++--
.../{s390x => s390}/diag318_test_handler.c | 0
.../kvm/lib/{s390x => s390}/facility.c | 0
.../kvm/lib/{s390x => s390}/processor.c | 0
.../selftests/kvm/lib/{s390x => s390}/ucall.c | 0
.../selftests/kvm/lib/{x86_64 => x86}/apic.c | 0
.../kvm/lib/{x86_64 => x86}/handlers.S | 0
.../kvm/lib/{x86_64 => x86}/hyperv.c | 0
.../kvm/lib/{x86_64 => x86}/memstress.c | 2 +-
.../selftests/kvm/lib/{x86_64 => x86}/pmu.c | 0
.../kvm/lib/{x86_64 => x86}/processor.c | 2 -
.../selftests/kvm/lib/{x86_64 => x86}/sev.c | 0
.../selftests/kvm/lib/{x86_64 => x86}/svm.c | 1 -
.../selftests/kvm/lib/{x86_64 => x86}/ucall.c | 0
.../selftests/kvm/lib/{x86_64 => x86}/vmx.c | 2 -
..._guest_memory_test.c => mmu_stress_test.c} | 162 +++++++-
.../testing/selftests/kvm/riscv/arch_timer.c | 2 +-
.../testing/selftests/kvm/riscv/ebreak_test.c | 2 +-
.../selftests/kvm/riscv/sbi_pmu_test.c | 2 +-
.../selftests/kvm/{s390x => s390}/cmma_test.c | 0
.../selftests/kvm/{s390x => s390}/config | 0
.../{s390x => s390}/cpumodel_subfuncs_test.c | 0
.../kvm/{s390x => s390}/debug_test.c | 0
.../selftests/kvm/{s390x => s390}/memop.c | 0
.../selftests/kvm/{s390x => s390}/resets.c | 2 +-
.../{s390x => s390}/shared_zeropage_test.c | 0
.../kvm/{s390x => s390}/sync_regs_test.c | 0
.../selftests/kvm/{s390x => s390}/tprot.c | 0
.../kvm/{s390x => s390}/ucontrol_test.c | 0
.../selftests/kvm/set_memory_region_test.c | 6 +-
tools/testing/selftests/kvm/steal_time.c | 3 +-
.../selftests/kvm/{x86_64 => x86}/amx_test.c | 0
.../kvm/{x86_64 => x86}/apic_bus_clock_test.c | 0
.../kvm/{x86_64 => x86}/cpuid_test.c | 0
.../kvm/{x86_64 => x86}/cr4_cpuid_sync_test.c | 0
.../kvm/{x86_64 => x86}/debug_regs.c | 0
.../dirty_log_page_splitting_test.c | 0
.../exit_on_emulation_failure_test.c | 0
.../kvm/{x86_64 => x86}/feature_msrs_test.c | 0
.../kvm/{x86_64 => x86}/fix_hypercall_test.c | 0
.../kvm/{x86_64 => x86}/flds_emulation.h | 0
.../kvm/{x86_64 => x86}/hwcr_msr_test.c | 0
.../kvm/{x86_64 => x86}/hyperv_clock.c | 0
.../kvm/{x86_64 => x86}/hyperv_cpuid.c | 0
.../kvm/{x86_64 => x86}/hyperv_evmcs.c | 0
.../hyperv_extended_hypercalls.c | 0
.../kvm/{x86_64 => x86}/hyperv_features.c | 0
.../kvm/{x86_64 => x86}/hyperv_ipi.c | 0
.../kvm/{x86_64 => x86}/hyperv_svm_test.c | 0
.../kvm/{x86_64 => x86}/hyperv_tlb_flush.c | 0
.../kvm/{x86_64 => x86}/kvm_clock_test.c | 0
.../kvm/{x86_64 => x86}/kvm_pv_test.c | 0
.../kvm/{x86_64 => x86}/max_vcpuid_cap_test.c | 0
.../kvm/{x86_64 => x86}/monitor_mwait_test.c | 0
.../{x86_64 => x86}/nested_exceptions_test.c | 0
.../kvm/{x86_64 => x86}/nx_huge_pages_test.c | 0
.../kvm/{x86_64 => x86}/nx_huge_pages_test.sh | 0
.../kvm/{x86_64 => x86}/platform_info_test.c | 0
.../kvm/{x86_64 => x86}/pmu_counters_test.c | 0
.../{x86_64 => x86}/pmu_event_filter_test.c | 0
.../private_mem_conversions_test.c | 0
.../private_mem_kvm_exits_test.c | 0
.../{x86_64 => x86}/recalc_apic_map_test.c | 0
.../kvm/{x86_64 => x86}/set_boot_cpu_id.c | 0
.../kvm/{x86_64 => x86}/set_sregs_test.c | 0
.../kvm/{x86_64 => x86}/sev_init2_tests.c | 0
.../kvm/{x86_64 => x86}/sev_migrate_tests.c | 0
.../kvm/{x86_64 => x86}/sev_smoke_test.c | 0
.../smaller_maxphyaddr_emulation_test.c | 0
.../selftests/kvm/{x86_64 => x86}/smm_test.c | 0
.../kvm/{x86_64 => x86}/state_test.c | 0
.../kvm/{x86_64 => x86}/svm_int_ctl_test.c | 0
.../svm_nested_shutdown_test.c | 0
.../svm_nested_soft_inject_test.c | 0
.../kvm/{x86_64 => x86}/svm_vmcall_test.c | 0
.../kvm/{x86_64 => x86}/sync_regs_test.c | 0
.../{x86_64 => x86}/triple_fault_event_test.c | 0
.../kvm/{x86_64 => x86}/tsc_msrs_test.c | 0
.../kvm/{x86_64 => x86}/tsc_scaling_sync.c | 0
.../kvm/{x86_64 => x86}/ucna_injection_test.c | 0
.../kvm/{x86_64 => x86}/userspace_io_test.c | 0
.../{x86_64 => x86}/userspace_msr_exit_test.c | 0
.../{x86_64 => x86}/vmx_apic_access_test.c | 0
.../vmx_close_while_nested_test.c | 0
.../kvm/{x86_64 => x86}/vmx_dirty_log_test.c | 0
.../vmx_exception_with_invalid_guest_state.c | 0
.../vmx_invalid_nested_guest_state.c | 0
.../kvm/{x86_64 => x86}/vmx_msrs_test.c | 0
.../vmx_nested_tsc_scaling_test.c | 0
.../kvm/{x86_64 => x86}/vmx_pmu_caps_test.c | 0
.../vmx_preemption_timer_test.c | 0
.../vmx_set_nested_state_test.c | 0
.../kvm/{x86_64 => x86}/vmx_tsc_adjust_test.c | 0
.../kvm/{x86_64 => x86}/xapic_ipi_test.c | 0
.../kvm/{x86_64 => x86}/xapic_state_test.c | 0
.../kvm/{x86_64 => x86}/xcr0_cpuid_test.c | 0
.../kvm/{x86_64 => x86}/xen_shinfo_test.c | 0
.../kvm/{x86_64 => x86}/xen_vmcall_test.c | 0
.../kvm/{x86_64 => x86}/xss_msr_test.c | 0
164 files changed, 584 insertions(+), 477 deletions(-)
create mode 100644 tools/testing/selftests/kvm/Makefile.kvm
rename tools/testing/selftests/kvm/{aarch64 => arm64}/aarch32_id_regs.c (95%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer_edge_cases.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/debug-exceptions.c (99%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/get-reg-list.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/hypercalls.c (98%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/mmio_abort.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/no-vgic-v3.c (98%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/page_fault_test.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/psci_test.c (97%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/set_id_regs.c (97%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/smccc_filter.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vcpu_width_config.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_init.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_irq.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_lpi_stress.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vpmu_counter_access.c (97%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/arch_timer.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/delay.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3_its.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/kvm_util_arch.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/processor.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/spinlock.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/ucall.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/vgic.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/debug_print.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/diag318_test_handler.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/facility.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/kvm_util_arch.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/processor.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/sie.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/ucall.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/apic.h (98%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/evmcs.h (99%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/hyperv.h (99%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/kvm_util_arch.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/mce.h (94%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/pmu.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/processor.h (99%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/sev.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/svm.h (98%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/svm_util.h (94%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/ucall.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/vmx.h (99%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_private.h (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3_its.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/handlers.S (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/processor.c (98%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/spinlock.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/ucall.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/vgic.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/diag318_test_handler.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/facility.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/processor.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/ucall.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/apic.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/handlers.S (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/hyperv.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/memstress.c (98%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/pmu.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/processor.c (99%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/sev.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/svm.c (99%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/ucall.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/vmx.c (99%)
rename tools/testing/selftests/kvm/{max_guest_memory_test.c => mmu_stress_test.c} (60%)
rename tools/testing/selftests/kvm/{s390x => s390}/cmma_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/config (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/cpumodel_subfuncs_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/debug_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/memop.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/resets.c (99%)
rename tools/testing/selftests/kvm/{s390x => s390}/shared_zeropage_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/sync_regs_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/tprot.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/ucontrol_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/amx_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/apic_bus_clock_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/cpuid_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/cr4_cpuid_sync_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/debug_regs.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/dirty_log_page_splitting_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/exit_on_emulation_failure_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/feature_msrs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/fix_hypercall_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/flds_emulation.h (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hwcr_msr_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_clock.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_cpuid.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_evmcs.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_extended_hypercalls.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_features.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_ipi.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_svm_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_tlb_flush.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/kvm_clock_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/kvm_pv_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/max_vcpuid_cap_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/monitor_mwait_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/nested_exceptions_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.sh (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/platform_info_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/pmu_counters_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/pmu_event_filter_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_conversions_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_kvm_exits_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/recalc_apic_map_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/set_boot_cpu_id.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/set_sregs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_init2_tests.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_migrate_tests.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_smoke_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/smaller_maxphyaddr_emulation_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/smm_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/state_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_int_ctl_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_shutdown_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_soft_inject_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_vmcall_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sync_regs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/triple_fault_event_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/tsc_msrs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/tsc_scaling_sync.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/ucna_injection_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/userspace_io_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/userspace_msr_exit_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_apic_access_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_close_while_nested_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_dirty_log_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_exception_with_invalid_guest_state.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_invalid_nested_guest_state.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_msrs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_nested_tsc_scaling_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_pmu_caps_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_preemption_timer_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_set_nested_state_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_tsc_adjust_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xapic_ipi_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xapic_state_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xcr0_cpuid_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xen_shinfo_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xen_vmcall_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xss_msr_test.c (100%)
base-commit: 4d911c7abee56771b0219a9fbf0120d06bdc9c14
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH v4 01/16] KVM: Move KVM_REG_SIZE() definition to common uAPI header
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 8:14 ` Muhammad Usama Anjum
2024-11-28 0:55 ` [PATCH v4 02/16] KVM: selftests: Return a value from vcpu_get_reg() instead of using an out-param Sean Christopherson
` (16 subsequent siblings)
17 siblings, 1 reply; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Define KVM_REG_SIZE() in the common kvm.h header, and delete the arm64 and
RISC-V versions. As evidenced by the surrounding definitions, all aspects
of the register size encoding are generic, i.e. RISC-V should have moved
arm64's definition to common code instead of copy+pasting.
Acked-by: Anup Patel <anup@brainfault.org>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
arch/arm64/include/uapi/asm/kvm.h | 3 ---
arch/riscv/include/uapi/asm/kvm.h | 3 ---
include/uapi/linux/kvm.h | 4 ++++
3 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/arch/arm64/include/uapi/asm/kvm.h b/arch/arm64/include/uapi/asm/kvm.h
index 66736ff04011..568bf858f319 100644
--- a/arch/arm64/include/uapi/asm/kvm.h
+++ b/arch/arm64/include/uapi/asm/kvm.h
@@ -43,9 +43,6 @@
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
#define KVM_DIRTY_LOG_PAGE_OFFSET 64
-#define KVM_REG_SIZE(id) \
- (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
-
struct kvm_regs {
struct user_pt_regs regs; /* sp = sp_el0 */
diff --git a/arch/riscv/include/uapi/asm/kvm.h b/arch/riscv/include/uapi/asm/kvm.h
index 3482c9a73d1b..9f60d6185077 100644
--- a/arch/riscv/include/uapi/asm/kvm.h
+++ b/arch/riscv/include/uapi/asm/kvm.h
@@ -211,9 +211,6 @@ struct kvm_riscv_sbi_sta {
#define KVM_RISCV_TIMER_STATE_OFF 0
#define KVM_RISCV_TIMER_STATE_ON 1
-#define KVM_REG_SIZE(id) \
- (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
-
/* If you need to interpret the index values, here is the key: */
#define KVM_REG_RISCV_TYPE_MASK 0x00000000FF000000
#define KVM_REG_RISCV_TYPE_SHIFT 24
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index 502ea63b5d2e..343de0a51797 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -1070,6 +1070,10 @@ struct kvm_dirty_tlb {
#define KVM_REG_SIZE_SHIFT 52
#define KVM_REG_SIZE_MASK 0x00f0000000000000ULL
+
+#define KVM_REG_SIZE(id) \
+ (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
+
#define KVM_REG_SIZE_U8 0x0000000000000000ULL
#define KVM_REG_SIZE_U16 0x0010000000000000ULL
#define KVM_REG_SIZE_U32 0x0020000000000000ULL
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 02/16] KVM: selftests: Return a value from vcpu_get_reg() instead of using an out-param
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 01/16] KVM: Move KVM_REG_SIZE() definition to common uAPI header Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 8:25 ` Claudio Imbrenda
2024-11-28 0:55 ` [PATCH v4 03/16] KVM: selftests: Assert that vcpu_{g,s}et_reg() won't truncate Sean Christopherson
` (15 subsequent siblings)
17 siblings, 1 reply; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Return a uint64_t from vcpu_get_reg() instead of having the caller provide
a pointer to storage, as none of the vcpu_get_reg() usage in KVM selftests
accesses a register larger than 64 bits, and vcpu_set_reg() only accepts a
64-bit value. If a use case comes along that needs to get a register that
is larger than 64 bits, then a utility can be added to assert success and
take a void pointer, but until then, forcing an out param yields ugly code
and prevents feeding the output of vcpu_get_reg() into vcpu_set_reg().
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
.../selftests/kvm/aarch64/aarch32_id_regs.c | 10 +--
.../selftests/kvm/aarch64/debug-exceptions.c | 4 +-
.../selftests/kvm/aarch64/hypercalls.c | 6 +-
.../selftests/kvm/aarch64/no-vgic-v3.c | 2 +-
.../testing/selftests/kvm/aarch64/psci_test.c | 6 +-
.../selftests/kvm/aarch64/set_id_regs.c | 18 ++---
.../kvm/aarch64/vpmu_counter_access.c | 19 +++---
.../testing/selftests/kvm/include/kvm_util.h | 6 +-
.../selftests/kvm/lib/aarch64/processor.c | 8 +--
.../selftests/kvm/lib/riscv/processor.c | 66 +++++++++----------
.../testing/selftests/kvm/riscv/arch_timer.c | 2 +-
.../testing/selftests/kvm/riscv/ebreak_test.c | 2 +-
.../selftests/kvm/riscv/sbi_pmu_test.c | 2 +-
tools/testing/selftests/kvm/s390x/resets.c | 2 +-
tools/testing/selftests/kvm/steal_time.c | 3 +-
15 files changed, 78 insertions(+), 78 deletions(-)
diff --git a/tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c b/tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c
index 8e5bd07a3727..447d61cae4db 100644
--- a/tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c
+++ b/tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c
@@ -97,7 +97,7 @@ static void test_user_raz_wi(struct kvm_vcpu *vcpu)
uint64_t reg_id = raz_wi_reg_ids[i];
uint64_t val;
- vcpu_get_reg(vcpu, reg_id, &val);
+ val = vcpu_get_reg(vcpu, reg_id);
TEST_ASSERT_EQ(val, 0);
/*
@@ -106,7 +106,7 @@ static void test_user_raz_wi(struct kvm_vcpu *vcpu)
*/
vcpu_set_reg(vcpu, reg_id, BAD_ID_REG_VAL);
- vcpu_get_reg(vcpu, reg_id, &val);
+ val = vcpu_get_reg(vcpu, reg_id);
TEST_ASSERT_EQ(val, 0);
}
}
@@ -126,14 +126,14 @@ static void test_user_raz_invariant(struct kvm_vcpu *vcpu)
uint64_t reg_id = raz_invariant_reg_ids[i];
uint64_t val;
- vcpu_get_reg(vcpu, reg_id, &val);
+ val = vcpu_get_reg(vcpu, reg_id);
TEST_ASSERT_EQ(val, 0);
r = __vcpu_set_reg(vcpu, reg_id, BAD_ID_REG_VAL);
TEST_ASSERT(r < 0 && errno == EINVAL,
"unexpected KVM_SET_ONE_REG error: r=%d, errno=%d", r, errno);
- vcpu_get_reg(vcpu, reg_id, &val);
+ val = vcpu_get_reg(vcpu, reg_id);
TEST_ASSERT_EQ(val, 0);
}
}
@@ -144,7 +144,7 @@ static bool vcpu_aarch64_only(struct kvm_vcpu *vcpu)
{
uint64_t val, el0;
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64PFR0_EL1), &val);
+ val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64PFR0_EL1));
el0 = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_EL0), val);
return el0 == ID_AA64PFR0_EL1_ELx_64BIT_ONLY;
diff --git a/tools/testing/selftests/kvm/aarch64/debug-exceptions.c b/tools/testing/selftests/kvm/aarch64/debug-exceptions.c
index ff7a949fc96a..c7fb55c9135b 100644
--- a/tools/testing/selftests/kvm/aarch64/debug-exceptions.c
+++ b/tools/testing/selftests/kvm/aarch64/debug-exceptions.c
@@ -501,7 +501,7 @@ void test_single_step_from_userspace(int test_cnt)
TEST_ASSERT(ss_enable, "Unexpected KVM_EXIT_DEBUG");
/* Check if the current pc is expected. */
- vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pc), &pc);
+ pc = vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pc));
TEST_ASSERT(!test_pc || pc == test_pc,
"Unexpected pc 0x%lx (expected 0x%lx)",
pc, test_pc);
@@ -583,7 +583,7 @@ int main(int argc, char *argv[])
uint64_t aa64dfr0;
vm = vm_create_with_one_vcpu(&vcpu, guest_code);
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64DFR0_EL1), &aa64dfr0);
+ aa64dfr0 = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64DFR0_EL1));
__TEST_REQUIRE(debug_version(aa64dfr0) >= 6,
"Armv8 debug architecture not supported.");
kvm_vm_free(vm);
diff --git a/tools/testing/selftests/kvm/aarch64/hypercalls.c b/tools/testing/selftests/kvm/aarch64/hypercalls.c
index 9d192ce0078d..ec54ec7726e9 100644
--- a/tools/testing/selftests/kvm/aarch64/hypercalls.c
+++ b/tools/testing/selftests/kvm/aarch64/hypercalls.c
@@ -173,7 +173,7 @@ static void test_fw_regs_before_vm_start(struct kvm_vcpu *vcpu)
const struct kvm_fw_reg_info *reg_info = &fw_reg_info[i];
/* First 'read' should be an upper limit of the features supported */
- vcpu_get_reg(vcpu, reg_info->reg, &val);
+ val = vcpu_get_reg(vcpu, reg_info->reg);
TEST_ASSERT(val == FW_REG_ULIMIT_VAL(reg_info->max_feat_bit),
"Expected all the features to be set for reg: 0x%lx; expected: 0x%lx; read: 0x%lx",
reg_info->reg, FW_REG_ULIMIT_VAL(reg_info->max_feat_bit), val);
@@ -184,7 +184,7 @@ static void test_fw_regs_before_vm_start(struct kvm_vcpu *vcpu)
"Failed to clear all the features of reg: 0x%lx; ret: %d",
reg_info->reg, errno);
- vcpu_get_reg(vcpu, reg_info->reg, &val);
+ val = vcpu_get_reg(vcpu, reg_info->reg);
TEST_ASSERT(val == 0,
"Expected all the features to be cleared for reg: 0x%lx", reg_info->reg);
@@ -214,7 +214,7 @@ static void test_fw_regs_after_vm_start(struct kvm_vcpu *vcpu)
* Before starting the VM, the test clears all the bits.
* Check if that's still the case.
*/
- vcpu_get_reg(vcpu, reg_info->reg, &val);
+ val = vcpu_get_reg(vcpu, reg_info->reg);
TEST_ASSERT(val == 0,
"Expected all the features to be cleared for reg: 0x%lx",
reg_info->reg);
diff --git a/tools/testing/selftests/kvm/aarch64/no-vgic-v3.c b/tools/testing/selftests/kvm/aarch64/no-vgic-v3.c
index 58304bbc2036..ebd70430c89d 100644
--- a/tools/testing/selftests/kvm/aarch64/no-vgic-v3.c
+++ b/tools/testing/selftests/kvm/aarch64/no-vgic-v3.c
@@ -164,7 +164,7 @@ int main(int argc, char *argv[])
uint64_t pfr0;
vm = vm_create_with_one_vcpu(&vcpu, NULL);
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64PFR0_EL1), &pfr0);
+ pfr0 = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64PFR0_EL1));
__TEST_REQUIRE(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_GIC), pfr0),
"GICv3 not supported.");
kvm_vm_free(vm);
diff --git a/tools/testing/selftests/kvm/aarch64/psci_test.c b/tools/testing/selftests/kvm/aarch64/psci_test.c
index eaa7655fefc1..0ab7d5a24482 100644
--- a/tools/testing/selftests/kvm/aarch64/psci_test.c
+++ b/tools/testing/selftests/kvm/aarch64/psci_test.c
@@ -111,8 +111,8 @@ static void assert_vcpu_reset(struct kvm_vcpu *vcpu)
{
uint64_t obs_pc, obs_x0;
- vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pc), &obs_pc);
- vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.regs[0]), &obs_x0);
+ obs_pc = vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pc));
+ obs_x0 = vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.regs[0]));
TEST_ASSERT(obs_pc == CPU_ON_ENTRY_ADDR,
"unexpected target cpu pc: %lx (expected: %lx)",
@@ -152,7 +152,7 @@ static void host_test_cpu_on(void)
*/
vcpu_power_off(target);
- vcpu_get_reg(target, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1), &target_mpidr);
+ target_mpidr = vcpu_get_reg(target, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1));
vcpu_args_set(source, 1, target_mpidr & MPIDR_HWID_BITMASK);
enter_guest(source);
diff --git a/tools/testing/selftests/kvm/aarch64/set_id_regs.c b/tools/testing/selftests/kvm/aarch64/set_id_regs.c
index a79b7f18452d..25ba7d382196 100644
--- a/tools/testing/selftests/kvm/aarch64/set_id_regs.c
+++ b/tools/testing/selftests/kvm/aarch64/set_id_regs.c
@@ -346,7 +346,7 @@ static uint64_t test_reg_set_success(struct kvm_vcpu *vcpu, uint64_t reg,
uint64_t mask = ftr_bits->mask;
uint64_t val, new_val, ftr;
- vcpu_get_reg(vcpu, reg, &val);
+ val = vcpu_get_reg(vcpu, reg);
ftr = (val & mask) >> shift;
ftr = get_safe_value(ftr_bits, ftr);
@@ -356,7 +356,7 @@ static uint64_t test_reg_set_success(struct kvm_vcpu *vcpu, uint64_t reg,
val |= ftr;
vcpu_set_reg(vcpu, reg, val);
- vcpu_get_reg(vcpu, reg, &new_val);
+ new_val = vcpu_get_reg(vcpu, reg);
TEST_ASSERT_EQ(new_val, val);
return new_val;
@@ -370,7 +370,7 @@ static void test_reg_set_fail(struct kvm_vcpu *vcpu, uint64_t reg,
uint64_t val, old_val, ftr;
int r;
- vcpu_get_reg(vcpu, reg, &val);
+ val = vcpu_get_reg(vcpu, reg);
ftr = (val & mask) >> shift;
ftr = get_invalid_value(ftr_bits, ftr);
@@ -384,7 +384,7 @@ static void test_reg_set_fail(struct kvm_vcpu *vcpu, uint64_t reg,
TEST_ASSERT(r < 0 && errno == EINVAL,
"Unexpected KVM_SET_ONE_REG error: r=%d, errno=%d", r, errno);
- vcpu_get_reg(vcpu, reg, &val);
+ val = vcpu_get_reg(vcpu, reg);
TEST_ASSERT_EQ(val, old_val);
}
@@ -576,7 +576,7 @@ static void test_clidr(struct kvm_vcpu *vcpu)
uint64_t clidr;
int level;
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_CLIDR_EL1), &clidr);
+ clidr = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_CLIDR_EL1));
/* find the first empty level in the cache hierarchy */
for (level = 1; level < 7; level++) {
@@ -601,7 +601,7 @@ static void test_ctr(struct kvm_vcpu *vcpu)
{
u64 ctr;
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_CTR_EL0), &ctr);
+ ctr = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_CTR_EL0));
ctr &= ~CTR_EL0_DIC_MASK;
if (ctr & CTR_EL0_IminLine_MASK)
ctr--;
@@ -617,7 +617,7 @@ static void test_vcpu_ftr_id_regs(struct kvm_vcpu *vcpu)
test_clidr(vcpu);
test_ctr(vcpu);
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1), &val);
+ val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1));
val++;
vcpu_set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1), val);
@@ -630,7 +630,7 @@ static void test_assert_id_reg_unchanged(struct kvm_vcpu *vcpu, uint32_t encodin
size_t idx = encoding_to_range_idx(encoding);
uint64_t observed;
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(encoding), &observed);
+ observed = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(encoding));
TEST_ASSERT_EQ(test_reg_vals[idx], observed);
}
@@ -665,7 +665,7 @@ int main(void)
vm = vm_create_with_one_vcpu(&vcpu, guest_code);
/* Check for AARCH64 only system */
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64PFR0_EL1), &val);
+ val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64PFR0_EL1));
el0 = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_EL0), val);
aarch64_only = (el0 == ID_AA64PFR0_EL1_ELx_64BIT_ONLY);
diff --git a/tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c b/tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c
index f9c0c86d7e85..f16b3b27e32e 100644
--- a/tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c
+++ b/tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c
@@ -440,8 +440,7 @@ static void create_vpmu_vm(void *guest_code)
"Failed to create vgic-v3, skipping");
/* Make sure that PMUv3 support is indicated in the ID register */
- vcpu_get_reg(vpmu_vm.vcpu,
- KVM_ARM64_SYS_REG(SYS_ID_AA64DFR0_EL1), &dfr0);
+ dfr0 = vcpu_get_reg(vpmu_vm.vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64DFR0_EL1));
pmuver = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64DFR0_EL1_PMUVer), dfr0);
TEST_ASSERT(pmuver != ID_AA64DFR0_EL1_PMUVer_IMP_DEF &&
pmuver >= ID_AA64DFR0_EL1_PMUVer_IMP,
@@ -484,7 +483,7 @@ static void test_create_vpmu_vm_with_pmcr_n(uint64_t pmcr_n, bool expect_fail)
create_vpmu_vm(guest_code);
vcpu = vpmu_vm.vcpu;
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0), &pmcr_orig);
+ pmcr_orig = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0));
pmcr = pmcr_orig;
/*
@@ -493,7 +492,7 @@ static void test_create_vpmu_vm_with_pmcr_n(uint64_t pmcr_n, bool expect_fail)
*/
set_pmcr_n(&pmcr, pmcr_n);
vcpu_set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0), pmcr);
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0), &pmcr);
+ pmcr = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0));
if (expect_fail)
TEST_ASSERT(pmcr_orig == pmcr,
@@ -521,7 +520,7 @@ static void run_access_test(uint64_t pmcr_n)
vcpu = vpmu_vm.vcpu;
/* Save the initial sp to restore them later to run the guest again */
- vcpu_get_reg(vcpu, ARM64_CORE_REG(sp_el1), &sp);
+ sp = vcpu_get_reg(vcpu, ARM64_CORE_REG(sp_el1));
run_vcpu(vcpu, pmcr_n);
@@ -572,12 +571,12 @@ static void run_pmregs_validity_test(uint64_t pmcr_n)
* Test if the 'set' and 'clr' variants of the registers
* are initialized based on the number of valid counters.
*/
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(set_reg_id), ®_val);
+ reg_val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(set_reg_id));
TEST_ASSERT((reg_val & (~valid_counters_mask)) == 0,
"Initial read of set_reg: 0x%llx has unimplemented counters enabled: 0x%lx",
KVM_ARM64_SYS_REG(set_reg_id), reg_val);
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(clr_reg_id), ®_val);
+ reg_val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(clr_reg_id));
TEST_ASSERT((reg_val & (~valid_counters_mask)) == 0,
"Initial read of clr_reg: 0x%llx has unimplemented counters enabled: 0x%lx",
KVM_ARM64_SYS_REG(clr_reg_id), reg_val);
@@ -589,12 +588,12 @@ static void run_pmregs_validity_test(uint64_t pmcr_n)
*/
vcpu_set_reg(vcpu, KVM_ARM64_SYS_REG(set_reg_id), max_counters_mask);
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(set_reg_id), ®_val);
+ reg_val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(set_reg_id));
TEST_ASSERT((reg_val & (~valid_counters_mask)) == 0,
"Read of set_reg: 0x%llx has unimplemented counters enabled: 0x%lx",
KVM_ARM64_SYS_REG(set_reg_id), reg_val);
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(clr_reg_id), ®_val);
+ reg_val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(clr_reg_id));
TEST_ASSERT((reg_val & (~valid_counters_mask)) == 0,
"Read of clr_reg: 0x%llx has unimplemented counters enabled: 0x%lx",
KVM_ARM64_SYS_REG(clr_reg_id), reg_val);
@@ -625,7 +624,7 @@ static uint64_t get_pmcr_n_limit(void)
uint64_t pmcr;
create_vpmu_vm(guest_code);
- vcpu_get_reg(vpmu_vm.vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0), &pmcr);
+ pmcr = vcpu_get_reg(vpmu_vm.vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0));
destroy_vpmu_vm();
return get_pmcr_n(pmcr);
}
diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing/selftests/kvm/include/kvm_util.h
index bc7c242480d6..287a3ec06df4 100644
--- a/tools/testing/selftests/kvm/include/kvm_util.h
+++ b/tools/testing/selftests/kvm/include/kvm_util.h
@@ -702,11 +702,13 @@ static inline int __vcpu_set_reg(struct kvm_vcpu *vcpu, uint64_t id, uint64_t va
return __vcpu_ioctl(vcpu, KVM_SET_ONE_REG, ®);
}
-static inline void vcpu_get_reg(struct kvm_vcpu *vcpu, uint64_t id, void *addr)
+static inline uint64_t vcpu_get_reg(struct kvm_vcpu *vcpu, uint64_t id)
{
- struct kvm_one_reg reg = { .id = id, .addr = (uint64_t)addr };
+ uint64_t val;
+ struct kvm_one_reg reg = { .id = id, .addr = (uint64_t)&val };
vcpu_ioctl(vcpu, KVM_GET_ONE_REG, ®);
+ return val;
}
static inline void vcpu_set_reg(struct kvm_vcpu *vcpu, uint64_t id, uint64_t val)
{
diff --git a/tools/testing/selftests/kvm/lib/aarch64/processor.c b/tools/testing/selftests/kvm/lib/aarch64/processor.c
index 698e34f39241..7ba3aa3755f3 100644
--- a/tools/testing/selftests/kvm/lib/aarch64/processor.c
+++ b/tools/testing/selftests/kvm/lib/aarch64/processor.c
@@ -281,8 +281,8 @@ void aarch64_vcpu_setup(struct kvm_vcpu *vcpu, struct kvm_vcpu_init *init)
*/
vcpu_set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_CPACR_EL1), 3 << 20);
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_SCTLR_EL1), &sctlr_el1);
- vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_TCR_EL1), &tcr_el1);
+ sctlr_el1 = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_SCTLR_EL1));
+ tcr_el1 = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_TCR_EL1));
/* Configure base granule size */
switch (vm->mode) {
@@ -360,8 +360,8 @@ void vcpu_arch_dump(FILE *stream, struct kvm_vcpu *vcpu, uint8_t indent)
{
uint64_t pstate, pc;
- vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pstate), &pstate);
- vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pc), &pc);
+ pstate = vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pstate));
+ pc = vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pc));
fprintf(stream, "%*spstate: 0x%.16lx pc: 0x%.16lx\n",
indent, "", pstate, pc);
diff --git a/tools/testing/selftests/kvm/lib/riscv/processor.c b/tools/testing/selftests/kvm/lib/riscv/processor.c
index 6ae47b3d6b25..dd663bcf0cc0 100644
--- a/tools/testing/selftests/kvm/lib/riscv/processor.c
+++ b/tools/testing/selftests/kvm/lib/riscv/processor.c
@@ -221,39 +221,39 @@ void vcpu_arch_dump(FILE *stream, struct kvm_vcpu *vcpu, uint8_t indent)
{
struct kvm_riscv_core core;
- vcpu_get_reg(vcpu, RISCV_CORE_REG(mode), &core.mode);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.pc), &core.regs.pc);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.ra), &core.regs.ra);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.sp), &core.regs.sp);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.gp), &core.regs.gp);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.tp), &core.regs.tp);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t0), &core.regs.t0);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t1), &core.regs.t1);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t2), &core.regs.t2);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s0), &core.regs.s0);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s1), &core.regs.s1);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a0), &core.regs.a0);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a1), &core.regs.a1);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a2), &core.regs.a2);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a3), &core.regs.a3);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a4), &core.regs.a4);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a5), &core.regs.a5);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a6), &core.regs.a6);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a7), &core.regs.a7);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s2), &core.regs.s2);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s3), &core.regs.s3);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s4), &core.regs.s4);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s5), &core.regs.s5);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s6), &core.regs.s6);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s7), &core.regs.s7);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s8), &core.regs.s8);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s9), &core.regs.s9);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s10), &core.regs.s10);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s11), &core.regs.s11);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t3), &core.regs.t3);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t4), &core.regs.t4);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t5), &core.regs.t5);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t6), &core.regs.t6);
+ core.mode = vcpu_get_reg(vcpu, RISCV_CORE_REG(mode));
+ core.regs.pc = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.pc));
+ core.regs.ra = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.ra));
+ core.regs.sp = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.sp));
+ core.regs.gp = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.gp));
+ core.regs.tp = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.tp));
+ core.regs.t0 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t0));
+ core.regs.t1 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t1));
+ core.regs.t2 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t2));
+ core.regs.s0 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s0));
+ core.regs.s1 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s1));
+ core.regs.a0 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a0));
+ core.regs.a1 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a1));
+ core.regs.a2 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a2));
+ core.regs.a3 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a3));
+ core.regs.a4 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a4));
+ core.regs.a5 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a5));
+ core.regs.a6 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a6));
+ core.regs.a7 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a7));
+ core.regs.s2 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s2));
+ core.regs.s3 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s3));
+ core.regs.s4 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s4));
+ core.regs.s5 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s5));
+ core.regs.s6 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s6));
+ core.regs.s7 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s7));
+ core.regs.s8 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s8));
+ core.regs.s9 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s9));
+ core.regs.s10 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s10));
+ core.regs.s11 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s11));
+ core.regs.t3 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t3));
+ core.regs.t4 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t4));
+ core.regs.t5 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t5));
+ core.regs.t6 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t6));
fprintf(stream,
" MODE: 0x%lx\n", core.mode);
diff --git a/tools/testing/selftests/kvm/riscv/arch_timer.c b/tools/testing/selftests/kvm/riscv/arch_timer.c
index 2c792228ac0b..9e370800a6a2 100644
--- a/tools/testing/selftests/kvm/riscv/arch_timer.c
+++ b/tools/testing/selftests/kvm/riscv/arch_timer.c
@@ -93,7 +93,7 @@ struct kvm_vm *test_vm_create(void)
vcpu_init_vector_tables(vcpus[i]);
/* Initialize guest timer frequency. */
- vcpu_get_reg(vcpus[0], RISCV_TIMER_REG(frequency), &timer_freq);
+ timer_freq = vcpu_get_reg(vcpus[0], RISCV_TIMER_REG(frequency));
sync_global_to_guest(vm, timer_freq);
pr_debug("timer_freq: %lu\n", timer_freq);
diff --git a/tools/testing/selftests/kvm/riscv/ebreak_test.c b/tools/testing/selftests/kvm/riscv/ebreak_test.c
index 0e0712854953..cfed6c727bfc 100644
--- a/tools/testing/selftests/kvm/riscv/ebreak_test.c
+++ b/tools/testing/selftests/kvm/riscv/ebreak_test.c
@@ -60,7 +60,7 @@ int main(void)
TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_DEBUG);
- vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.pc), &pc);
+ pc = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.pc));
TEST_ASSERT_EQ(pc, LABEL_ADDRESS(sw_bp_1));
/* skip sw_bp_1 */
diff --git a/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c b/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c
index f299cbfd23ca..f45c0ecc902d 100644
--- a/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c
+++ b/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c
@@ -608,7 +608,7 @@ static void test_vm_events_overflow(void *guest_code)
vcpu_init_vector_tables(vcpu);
/* Initialize guest timer frequency. */
- vcpu_get_reg(vcpu, RISCV_TIMER_REG(frequency), &timer_freq);
+ timer_freq = vcpu_get_reg(vcpu, RISCV_TIMER_REG(frequency));
sync_global_to_guest(vm, timer_freq);
run_vcpu(vcpu);
diff --git a/tools/testing/selftests/kvm/s390x/resets.c b/tools/testing/selftests/kvm/s390x/resets.c
index 357943f2bea8..b58f75b381e5 100644
--- a/tools/testing/selftests/kvm/s390x/resets.c
+++ b/tools/testing/selftests/kvm/s390x/resets.c
@@ -61,7 +61,7 @@ static void test_one_reg(struct kvm_vcpu *vcpu, uint64_t id, uint64_t value)
{
uint64_t eval_reg;
- vcpu_get_reg(vcpu, id, &eval_reg);
+ eval_reg = vcpu_get_reg(vcpu, id);
TEST_ASSERT(eval_reg == value, "value == 0x%lx", value);
}
diff --git a/tools/testing/selftests/kvm/steal_time.c b/tools/testing/selftests/kvm/steal_time.c
index a8d3afa0b86b..cce2520af720 100644
--- a/tools/testing/selftests/kvm/steal_time.c
+++ b/tools/testing/selftests/kvm/steal_time.c
@@ -269,9 +269,8 @@ static void guest_code(int cpu)
static bool is_steal_time_supported(struct kvm_vcpu *vcpu)
{
uint64_t id = RISCV_SBI_EXT_REG(KVM_RISCV_SBI_EXT_STA);
- unsigned long enabled;
+ unsigned long enabled = vcpu_get_reg(vcpu, id);
- vcpu_get_reg(vcpu, id, &enabled);
TEST_ASSERT(enabled == 0 || enabled == 1, "Expected boolean result");
return enabled;
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 03/16] KVM: selftests: Assert that vcpu_{g,s}et_reg() won't truncate
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 01/16] KVM: Move KVM_REG_SIZE() definition to common uAPI header Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 02/16] KVM: selftests: Return a value from vcpu_get_reg() instead of using an out-param Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 04/16] KVM: selftests: Check for a potential unhandled exception iff KVM_RUN succeeded Sean Christopherson
` (14 subsequent siblings)
17 siblings, 0 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Assert that the register being read/written by vcpu_{g,s}et_reg() is no
larger than a uint64_t, i.e. that a selftest isn't unintentionally
truncating the value being read/written.
Ideally, the assert would be done at compile-time, but that would limit
the checks to hardcoded accesses and/or require fancier compile-time
assertion infrastructure to filter out dynamic usage.
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/include/kvm_util.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing/selftests/kvm/include/kvm_util.h
index 287a3ec06df4..4c4e5a847f67 100644
--- a/tools/testing/selftests/kvm/include/kvm_util.h
+++ b/tools/testing/selftests/kvm/include/kvm_util.h
@@ -707,6 +707,8 @@ static inline uint64_t vcpu_get_reg(struct kvm_vcpu *vcpu, uint64_t id)
uint64_t val;
struct kvm_one_reg reg = { .id = id, .addr = (uint64_t)&val };
+ TEST_ASSERT(KVM_REG_SIZE(id) <= sizeof(val), "Reg %lx too big", id);
+
vcpu_ioctl(vcpu, KVM_GET_ONE_REG, ®);
return val;
}
@@ -714,6 +716,8 @@ static inline void vcpu_set_reg(struct kvm_vcpu *vcpu, uint64_t id, uint64_t val
{
struct kvm_one_reg reg = { .id = id, .addr = (uint64_t)&val };
+ TEST_ASSERT(KVM_REG_SIZE(id) <= sizeof(val), "Reg %lx too big", id);
+
vcpu_ioctl(vcpu, KVM_SET_ONE_REG, ®);
}
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 04/16] KVM: selftests: Check for a potential unhandled exception iff KVM_RUN succeeded
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (2 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 03/16] KVM: selftests: Assert that vcpu_{g,s}et_reg() won't truncate Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 05/16] KVM: selftests: Rename max_guest_memory_test to mmu_stress_test Sean Christopherson
` (13 subsequent siblings)
17 siblings, 0 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Don't check for an unhandled exception if KVM_RUN failed, e.g. if it
returned errno=EFAULT, as reporting unhandled exceptions is done via a
ucall, i.e. requires KVM_RUN to exit cleanly. Theoretically, checking
for a ucall on a failed KVM_RUN could get a false positive, e.g. if there
were stale data in vcpu->run from a previous exit.
Reviewed-by: James Houghton <jthoughton@google.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/lib/kvm_util.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c
index 480e3a40d197..33fefeb3ca44 100644
--- a/tools/testing/selftests/kvm/lib/kvm_util.c
+++ b/tools/testing/selftests/kvm/lib/kvm_util.c
@@ -1648,7 +1648,8 @@ int _vcpu_run(struct kvm_vcpu *vcpu)
rc = __vcpu_run(vcpu);
} while (rc == -1 && errno == EINTR);
- assert_on_unhandled_exception(vcpu);
+ if (!rc)
+ assert_on_unhandled_exception(vcpu);
return rc;
}
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 05/16] KVM: selftests: Rename max_guest_memory_test to mmu_stress_test
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (3 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 04/16] KVM: selftests: Check for a potential unhandled exception iff KVM_RUN succeeded Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 06/16] KVM: selftests: Only muck with SREGS on x86 in mmu_stress_test Sean Christopherson
` (12 subsequent siblings)
17 siblings, 0 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Rename max_guest_memory_test to mmu_stress_test so that the name isn't
horribly misleading when future changes extend the test to verify things
like mprotect() interactions, and because the test is useful even when its
configured to populate far less than the maximum amount of guest memory.
Reviewed-by: James Houghton <jthoughton@google.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/Makefile | 2 +-
.../kvm/{max_guest_memory_test.c => mmu_stress_test.c} | 0
2 files changed, 1 insertion(+), 1 deletion(-)
rename tools/testing/selftests/kvm/{max_guest_memory_test.c => mmu_stress_test.c} (100%)
diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
index 41593d2e7de9..4384e5f45c36 100644
--- a/tools/testing/selftests/kvm/Makefile
+++ b/tools/testing/selftests/kvm/Makefile
@@ -140,7 +140,7 @@ TEST_GEN_PROGS_x86_64 += guest_print_test
TEST_GEN_PROGS_x86_64 += hardware_disable_test
TEST_GEN_PROGS_x86_64 += kvm_create_max_vcpus
TEST_GEN_PROGS_x86_64 += kvm_page_table_test
-TEST_GEN_PROGS_x86_64 += max_guest_memory_test
+TEST_GEN_PROGS_x86_64 += mmu_stress_test
TEST_GEN_PROGS_x86_64 += memslot_modification_stress_test
TEST_GEN_PROGS_x86_64 += memslot_perf_test
TEST_GEN_PROGS_x86_64 += rseq_test
diff --git a/tools/testing/selftests/kvm/max_guest_memory_test.c b/tools/testing/selftests/kvm/mmu_stress_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/max_guest_memory_test.c
rename to tools/testing/selftests/kvm/mmu_stress_test.c
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 06/16] KVM: selftests: Only muck with SREGS on x86 in mmu_stress_test
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (4 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 05/16] KVM: selftests: Rename max_guest_memory_test to mmu_stress_test Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 07/16] KVM: selftests: Compute number of extra pages needed " Sean Christopherson
` (11 subsequent siblings)
17 siblings, 0 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Try to get/set SREGS in mmu_stress_test only when running on x86, as the
ioctls are supported only by x86 and PPC, and the latter doesn't yet
support KVM selftests.
Reviewed-by: James Houghton <jthoughton@google.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/mmu_stress_test.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/kvm/mmu_stress_test.c b/tools/testing/selftests/kvm/mmu_stress_test.c
index 0b9678858b6d..847da23ec1b1 100644
--- a/tools/testing/selftests/kvm/mmu_stress_test.c
+++ b/tools/testing/selftests/kvm/mmu_stress_test.c
@@ -59,10 +59,10 @@ static void run_vcpu(struct kvm_vcpu *vcpu)
static void *vcpu_worker(void *data)
{
+ struct kvm_sregs __maybe_unused sregs;
struct vcpu_info *info = data;
struct kvm_vcpu *vcpu = info->vcpu;
struct kvm_vm *vm = vcpu->vm;
- struct kvm_sregs sregs;
vcpu_args_set(vcpu, 3, info->start_gpa, info->end_gpa, vm->page_size);
@@ -70,12 +70,12 @@ static void *vcpu_worker(void *data)
run_vcpu(vcpu);
rendezvous_with_boss();
+#ifdef __x86_64__
vcpu_sregs_get(vcpu, &sregs);
-#ifdef __x86_64__
/* Toggle CR0.WP to trigger a MMU context reset. */
sregs.cr0 ^= X86_CR0_WP;
-#endif
vcpu_sregs_set(vcpu, &sregs);
+#endif
rendezvous_with_boss();
run_vcpu(vcpu);
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 07/16] KVM: selftests: Compute number of extra pages needed in mmu_stress_test
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (5 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 06/16] KVM: selftests: Only muck with SREGS on x86 in mmu_stress_test Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 08/16] KVM: sefltests: Explicitly include ucall_common.h in mmu_stress_test.c Sean Christopherson
` (10 subsequent siblings)
17 siblings, 0 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Create mmu_stress_tests's VM with the correct number of extra pages needed
to map all of memory in the guest. The bug hasn't been noticed before as
the test currently runs only on x86, which maps guest memory with 1GiB
pages, i.e. doesn't need much memory in the guest for page tables.
Reviewed-by: James Houghton <jthoughton@google.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/mmu_stress_test.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/kvm/mmu_stress_test.c b/tools/testing/selftests/kvm/mmu_stress_test.c
index 847da23ec1b1..5467b12f5903 100644
--- a/tools/testing/selftests/kvm/mmu_stress_test.c
+++ b/tools/testing/selftests/kvm/mmu_stress_test.c
@@ -209,7 +209,13 @@ int main(int argc, char *argv[])
vcpus = malloc(nr_vcpus * sizeof(*vcpus));
TEST_ASSERT(vcpus, "Failed to allocate vCPU array");
- vm = vm_create_with_vcpus(nr_vcpus, guest_code, vcpus);
+ vm = __vm_create_with_vcpus(VM_SHAPE_DEFAULT, nr_vcpus,
+#ifdef __x86_64__
+ max_mem / SZ_1G,
+#else
+ max_mem / vm_guest_mode_params[VM_MODE_DEFAULT].page_size,
+#endif
+ guest_code, vcpus);
max_gpa = vm->max_gfn << vm->page_shift;
TEST_ASSERT(max_gpa > (4 * slot_size), "MAXPHYADDR <4gb ");
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 08/16] KVM: sefltests: Explicitly include ucall_common.h in mmu_stress_test.c
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (6 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 07/16] KVM: selftests: Compute number of extra pages needed " Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 09/16] KVM: selftests: Enable mmu_stress_test on arm64 Sean Christopherson
` (9 subsequent siblings)
17 siblings, 0 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Explicitly include ucall_common.h in the MMU stress test, as unlike arm64
and x86-64, RISC-V doesn't include ucall_common.h in its processor.h, i.e.
this will allow enabling the test on RISC-V.
Reported-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/mmu_stress_test.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/testing/selftests/kvm/mmu_stress_test.c b/tools/testing/selftests/kvm/mmu_stress_test.c
index 5467b12f5903..fbb693428a82 100644
--- a/tools/testing/selftests/kvm/mmu_stress_test.c
+++ b/tools/testing/selftests/kvm/mmu_stress_test.c
@@ -15,6 +15,7 @@
#include "test_util.h"
#include "guest_modes.h"
#include "processor.h"
+#include "ucall_common.h"
static void guest_code(uint64_t start_gpa, uint64_t end_gpa, uint64_t stride)
{
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 09/16] KVM: selftests: Enable mmu_stress_test on arm64
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (7 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 08/16] KVM: sefltests: Explicitly include ucall_common.h in mmu_stress_test.c Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 10/16] KVM: selftests: Use vcpu_arch_put_guest() in mmu_stress_test Sean Christopherson
` (8 subsequent siblings)
17 siblings, 0 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Enable the mmu_stress_test on arm64. The intent was to enable the test
across all architectures when it was first added, but a few goofs made it
unrunnable on !x86. Now that those goofs are fixed, at least for arm64,
enable the test.
Cc: Oliver Upton <oliver.upton@linux.dev>
Cc: Marc Zyngier <maz@kernel.org>
Reviewed-by: James Houghton <jthoughton@google.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/Makefile | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
index 4384e5f45c36..c59a337cd4da 100644
--- a/tools/testing/selftests/kvm/Makefile
+++ b/tools/testing/selftests/kvm/Makefile
@@ -180,6 +180,7 @@ TEST_GEN_PROGS_aarch64 += kvm_create_max_vcpus
TEST_GEN_PROGS_aarch64 += kvm_page_table_test
TEST_GEN_PROGS_aarch64 += memslot_modification_stress_test
TEST_GEN_PROGS_aarch64 += memslot_perf_test
+TEST_GEN_PROGS_aarch64 += mmu_stress_test
TEST_GEN_PROGS_aarch64 += rseq_test
TEST_GEN_PROGS_aarch64 += set_memory_region_test
TEST_GEN_PROGS_aarch64 += steal_time
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 10/16] KVM: selftests: Use vcpu_arch_put_guest() in mmu_stress_test
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (8 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 09/16] KVM: selftests: Enable mmu_stress_test on arm64 Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 11/16] KVM: selftests: Precisely limit the number of guest loops " Sean Christopherson
` (7 subsequent siblings)
17 siblings, 0 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Use vcpu_arch_put_guest() to write memory from the guest in
mmu_stress_test as an easy way to provide a bit of extra coverage.
Reviewed-by: James Houghton <jthoughton@google.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/mmu_stress_test.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/kvm/mmu_stress_test.c b/tools/testing/selftests/kvm/mmu_stress_test.c
index fbb693428a82..656a837c7f49 100644
--- a/tools/testing/selftests/kvm/mmu_stress_test.c
+++ b/tools/testing/selftests/kvm/mmu_stress_test.c
@@ -23,7 +23,7 @@ static void guest_code(uint64_t start_gpa, uint64_t end_gpa, uint64_t stride)
for (;;) {
for (gpa = start_gpa; gpa < end_gpa; gpa += stride)
- *((volatile uint64_t *)gpa) = gpa;
+ vcpu_arch_put_guest(*((volatile uint64_t *)gpa), gpa);
GUEST_SYNC(0);
}
}
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 11/16] KVM: selftests: Precisely limit the number of guest loops in mmu_stress_test
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (9 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 10/16] KVM: selftests: Use vcpu_arch_put_guest() in mmu_stress_test Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 12/16] KVM: selftests: Add a read-only mprotect() phase to mmu_stress_test Sean Christopherson
` (6 subsequent siblings)
17 siblings, 0 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Run the exact number of guest loops required in mmu_stress_test instead
of looping indefinitely in anticipation of adding more stages that run
different code (e.g. reads instead of writes).
Reviewed-by: James Houghton <jthoughton@google.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/mmu_stress_test.c | 25 ++++++++++++++-----
1 file changed, 19 insertions(+), 6 deletions(-)
diff --git a/tools/testing/selftests/kvm/mmu_stress_test.c b/tools/testing/selftests/kvm/mmu_stress_test.c
index 656a837c7f49..c6bf18cb7c89 100644
--- a/tools/testing/selftests/kvm/mmu_stress_test.c
+++ b/tools/testing/selftests/kvm/mmu_stress_test.c
@@ -20,12 +20,15 @@
static void guest_code(uint64_t start_gpa, uint64_t end_gpa, uint64_t stride)
{
uint64_t gpa;
+ int i;
- for (;;) {
+ for (i = 0; i < 2; i++) {
for (gpa = start_gpa; gpa < end_gpa; gpa += stride)
vcpu_arch_put_guest(*((volatile uint64_t *)gpa), gpa);
- GUEST_SYNC(0);
+ GUEST_SYNC(i);
}
+
+ GUEST_ASSERT(0);
}
struct vcpu_info {
@@ -52,10 +55,18 @@ static void rendezvous_with_boss(void)
}
}
-static void run_vcpu(struct kvm_vcpu *vcpu)
+static void assert_sync_stage(struct kvm_vcpu *vcpu, int stage)
+{
+ struct ucall uc;
+
+ TEST_ASSERT_EQ(get_ucall(vcpu, &uc), UCALL_SYNC);
+ TEST_ASSERT_EQ(uc.args[1], stage);
+}
+
+static void run_vcpu(struct kvm_vcpu *vcpu, int stage)
{
vcpu_run(vcpu);
- TEST_ASSERT_EQ(get_ucall(vcpu, NULL), UCALL_SYNC);
+ assert_sync_stage(vcpu, stage);
}
static void *vcpu_worker(void *data)
@@ -69,7 +80,8 @@ static void *vcpu_worker(void *data)
rendezvous_with_boss();
- run_vcpu(vcpu);
+ /* Stage 0, write all of guest memory. */
+ run_vcpu(vcpu, 0);
rendezvous_with_boss();
#ifdef __x86_64__
vcpu_sregs_get(vcpu, &sregs);
@@ -79,7 +91,8 @@ static void *vcpu_worker(void *data)
#endif
rendezvous_with_boss();
- run_vcpu(vcpu);
+ /* Stage 1, re-write all of guest memory. */
+ run_vcpu(vcpu, 1);
rendezvous_with_boss();
return NULL;
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 12/16] KVM: selftests: Add a read-only mprotect() phase to mmu_stress_test
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (10 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 11/16] KVM: selftests: Precisely limit the number of guest loops " Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 13/16] KVM: selftests: Verify KVM correctly handles mprotect(PROT_READ) Sean Christopherson
` (5 subsequent siblings)
17 siblings, 0 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Add a third phase of mmu_stress_test to verify that mprotect()ing guest
memory to make it read-only doesn't cause explosions, e.g. to verify KVM
correctly handles the resulting mmu_notifier invalidations.
Reviewed-by: James Houghton <jthoughton@google.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/mmu_stress_test.c | 22 +++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/tools/testing/selftests/kvm/mmu_stress_test.c b/tools/testing/selftests/kvm/mmu_stress_test.c
index c6bf18cb7c89..0918fade9267 100644
--- a/tools/testing/selftests/kvm/mmu_stress_test.c
+++ b/tools/testing/selftests/kvm/mmu_stress_test.c
@@ -28,6 +28,10 @@ static void guest_code(uint64_t start_gpa, uint64_t end_gpa, uint64_t stride)
GUEST_SYNC(i);
}
+ for (gpa = start_gpa; gpa < end_gpa; gpa += stride)
+ *((volatile uint64_t *)gpa);
+ GUEST_SYNC(2);
+
GUEST_ASSERT(0);
}
@@ -95,6 +99,10 @@ static void *vcpu_worker(void *data)
run_vcpu(vcpu, 1);
rendezvous_with_boss();
+ /* Stage 2, read all of guest memory, which is now read-only. */
+ run_vcpu(vcpu, 2);
+ rendezvous_with_boss();
+
return NULL;
}
@@ -175,7 +183,7 @@ int main(int argc, char *argv[])
const uint64_t start_gpa = SZ_4G;
const int first_slot = 1;
- struct timespec time_start, time_run1, time_reset, time_run2;
+ struct timespec time_start, time_run1, time_reset, time_run2, time_ro;
uint64_t max_gpa, gpa, slot_size, max_mem, i;
int max_slots, slot, opt, fd;
bool hugepages = false;
@@ -279,14 +287,20 @@ int main(int argc, char *argv[])
rendezvous_with_vcpus(&time_reset, "reset");
rendezvous_with_vcpus(&time_run2, "run 2");
+ mprotect(mem, slot_size, PROT_READ);
+ rendezvous_with_vcpus(&time_ro, "mprotect RO");
+
+ time_ro = timespec_sub(time_ro, time_run2);
time_run2 = timespec_sub(time_run2, time_reset);
- time_reset = timespec_sub(time_reset, time_run1);
+ time_reset = timespec_sub(time_reset, time_run1);
time_run1 = timespec_sub(time_run1, time_start);
- pr_info("run1 = %ld.%.9lds, reset = %ld.%.9lds, run2 = %ld.%.9lds\n",
+ pr_info("run1 = %ld.%.9lds, reset = %ld.%.9lds, run2 = %ld.%.9lds, "
+ "ro = %ld.%.9lds\n",
time_run1.tv_sec, time_run1.tv_nsec,
time_reset.tv_sec, time_reset.tv_nsec,
- time_run2.tv_sec, time_run2.tv_nsec);
+ time_run2.tv_sec, time_run2.tv_nsec,
+ time_ro.tv_sec, time_ro.tv_nsec);
/*
* Delete even numbered slots (arbitrary) and unmap the first half of
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 13/16] KVM: selftests: Verify KVM correctly handles mprotect(PROT_READ)
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (11 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 12/16] KVM: selftests: Add a read-only mprotect() phase to mmu_stress_test Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 14/16] KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs Sean Christopherson
` (4 subsequent siblings)
17 siblings, 0 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Add two phases to mmu_stress_test to verify that KVM correctly handles
guest memory that was writable, and then made read-only in the primary MMU,
and then made writable again.
Add bonus coverage for x86 and arm64 to verify that all of guest memory was
marked read-only. Making forward progress (without making memory writable)
requires arch specific code to skip over the faulting instruction, but the
test can at least verify each vCPU's starting page was made read-only for
other architectures.
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/mmu_stress_test.c | 104 +++++++++++++++++-
1 file changed, 101 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/kvm/mmu_stress_test.c b/tools/testing/selftests/kvm/mmu_stress_test.c
index 0918fade9267..d9c76b4c0d88 100644
--- a/tools/testing/selftests/kvm/mmu_stress_test.c
+++ b/tools/testing/selftests/kvm/mmu_stress_test.c
@@ -17,6 +17,8 @@
#include "processor.h"
#include "ucall_common.h"
+static bool mprotect_ro_done;
+
static void guest_code(uint64_t start_gpa, uint64_t end_gpa, uint64_t stride)
{
uint64_t gpa;
@@ -32,6 +34,42 @@ static void guest_code(uint64_t start_gpa, uint64_t end_gpa, uint64_t stride)
*((volatile uint64_t *)gpa);
GUEST_SYNC(2);
+ /*
+ * Write to the region while mprotect(PROT_READ) is underway. Keep
+ * looping until the memory is guaranteed to be read-only, otherwise
+ * vCPUs may complete their writes and advance to the next stage
+ * prematurely.
+ *
+ * For architectures that support skipping the faulting instruction,
+ * generate the store via inline assembly to ensure the exact length
+ * of the instruction is known and stable (vcpu_arch_put_guest() on
+ * fixed-length architectures should work, but the cost of paranoia
+ * is low in this case). For x86, hand-code the exact opcode so that
+ * there is no room for variability in the generated instruction.
+ */
+ do {
+ for (gpa = start_gpa; gpa < end_gpa; gpa += stride)
+#ifdef __x86_64__
+ asm volatile(".byte 0x48,0x89,0x00" :: "a"(gpa) : "memory"); /* mov %rax, (%rax) */
+#elif defined(__aarch64__)
+ asm volatile("str %0, [%0]" :: "r" (gpa) : "memory");
+#else
+ vcpu_arch_put_guest(*((volatile uint64_t *)gpa), gpa);
+#endif
+ } while (!READ_ONCE(mprotect_ro_done));
+
+ /*
+ * Only architectures that write the entire range can explicitly sync,
+ * as other architectures will be stuck on the write fault.
+ */
+#if defined(__x86_64__) || defined(__aarch64__)
+ GUEST_SYNC(3);
+#endif
+
+ for (gpa = start_gpa; gpa < end_gpa; gpa += stride)
+ vcpu_arch_put_guest(*((volatile uint64_t *)gpa), gpa);
+ GUEST_SYNC(4);
+
GUEST_ASSERT(0);
}
@@ -79,6 +117,7 @@ static void *vcpu_worker(void *data)
struct vcpu_info *info = data;
struct kvm_vcpu *vcpu = info->vcpu;
struct kvm_vm *vm = vcpu->vm;
+ int r;
vcpu_args_set(vcpu, 3, info->start_gpa, info->end_gpa, vm->page_size);
@@ -101,6 +140,57 @@ static void *vcpu_worker(void *data)
/* Stage 2, read all of guest memory, which is now read-only. */
run_vcpu(vcpu, 2);
+
+ /*
+ * Stage 3, write guest memory and verify KVM returns -EFAULT for once
+ * the mprotect(PROT_READ) lands. Only architectures that support
+ * validating *all* of guest memory sync for this stage, as vCPUs will
+ * be stuck on the faulting instruction for other architectures. Go to
+ * stage 3 without a rendezvous
+ */
+ do {
+ r = _vcpu_run(vcpu);
+ } while (!r);
+ TEST_ASSERT(r == -1 && errno == EFAULT,
+ "Expected EFAULT on write to RO memory, got r = %d, errno = %d", r, errno);
+
+#if defined(__x86_64__) || defined(__aarch64__)
+ /*
+ * Verify *all* writes from the guest hit EFAULT due to the VMA now
+ * being read-only. x86 and arm64 only at this time as skipping the
+ * instruction that hits the EFAULT requires advancing the program
+ * counter, which is arch specific and relies on inline assembly.
+ */
+#ifdef __x86_64__
+ vcpu->run->kvm_valid_regs = KVM_SYNC_X86_REGS;
+#endif
+ for (;;) {
+ r = _vcpu_run(vcpu);
+ if (!r)
+ break;
+ TEST_ASSERT_EQ(errno, EFAULT);
+#if defined(__x86_64__)
+ WRITE_ONCE(vcpu->run->kvm_dirty_regs, KVM_SYNC_X86_REGS);
+ vcpu->run->s.regs.regs.rip += 3;
+#elif defined(__aarch64__)
+ vcpu_set_reg(vcpu, ARM64_CORE_REG(regs.pc),
+ vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pc)) + 4);
+#endif
+
+ }
+ assert_sync_stage(vcpu, 3);
+#endif /* __x86_64__ || __aarch64__ */
+ rendezvous_with_boss();
+
+ /*
+ * Stage 4. Run to completion, waiting for mprotect(PROT_WRITE) to
+ * make the memory writable again.
+ */
+ do {
+ r = _vcpu_run(vcpu);
+ } while (r && errno == EFAULT);
+ TEST_ASSERT_EQ(r, 0);
+ assert_sync_stage(vcpu, 4);
rendezvous_with_boss();
return NULL;
@@ -183,7 +273,7 @@ int main(int argc, char *argv[])
const uint64_t start_gpa = SZ_4G;
const int first_slot = 1;
- struct timespec time_start, time_run1, time_reset, time_run2, time_ro;
+ struct timespec time_start, time_run1, time_reset, time_run2, time_ro, time_rw;
uint64_t max_gpa, gpa, slot_size, max_mem, i;
int max_slots, slot, opt, fd;
bool hugepages = false;
@@ -288,19 +378,27 @@ int main(int argc, char *argv[])
rendezvous_with_vcpus(&time_run2, "run 2");
mprotect(mem, slot_size, PROT_READ);
+ usleep(10);
+ mprotect_ro_done = true;
+ sync_global_to_guest(vm, mprotect_ro_done);
+
rendezvous_with_vcpus(&time_ro, "mprotect RO");
+ mprotect(mem, slot_size, PROT_READ | PROT_WRITE);
+ rendezvous_with_vcpus(&time_rw, "mprotect RW");
+ time_rw = timespec_sub(time_rw, time_ro);
time_ro = timespec_sub(time_ro, time_run2);
time_run2 = timespec_sub(time_run2, time_reset);
time_reset = timespec_sub(time_reset, time_run1);
time_run1 = timespec_sub(time_run1, time_start);
pr_info("run1 = %ld.%.9lds, reset = %ld.%.9lds, run2 = %ld.%.9lds, "
- "ro = %ld.%.9lds\n",
+ "ro = %ld.%.9lds, rw = %ld.%.9lds\n",
time_run1.tv_sec, time_run1.tv_nsec,
time_reset.tv_sec, time_reset.tv_nsec,
time_run2.tv_sec, time_run2.tv_nsec,
- time_ro.tv_sec, time_ro.tv_nsec);
+ time_ro.tv_sec, time_ro.tv_nsec,
+ time_rw.tv_sec, time_rw.tv_nsec);
/*
* Delete even numbered slots (arbitrary) and unmap the first half of
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 14/16] KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (12 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 13/16] KVM: selftests: Verify KVM correctly handles mprotect(PROT_READ) Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 8:19 ` Muhammad Usama Anjum
2024-11-28 8:42 ` Andrew Jones
2024-11-28 0:55 ` [PATCH v4 15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories Sean Christopherson
` (3 subsequent siblings)
17 siblings, 2 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Provide empty targets for KVM selftests if the target architecture is
unsupported to make it obvious which architectures are supported, and so
that various side effects don't fail and/or do weird things, e.g. as is,
"mkdir -p $(sort $(dir $(TEST_GEN_PROGS)))" fails due to a missing operand,
and conversely, "$(shell mkdir -p $(sort $(OUTPUT)/$(ARCH_DIR) ..." will
create an empty, useless directory for the unsupported architecture.
Move the guts of the Makefile to Makefile.kvm so that it's easier to see
that the if-statement effectively guards all of KVM selftests.
Reported-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/.gitignore | 1 +
tools/testing/selftests/kvm/Makefile | 336 +----------------------
tools/testing/selftests/kvm/Makefile.kvm | 334 ++++++++++++++++++++++
3 files changed, 340 insertions(+), 331 deletions(-)
create mode 100644 tools/testing/selftests/kvm/Makefile.kvm
diff --git a/tools/testing/selftests/kvm/.gitignore b/tools/testing/selftests/kvm/.gitignore
index 7f57abf936e7..1d41a046a7bf 100644
--- a/tools/testing/selftests/kvm/.gitignore
+++ b/tools/testing/selftests/kvm/.gitignore
@@ -9,3 +9,4 @@
!config
!settings
!Makefile
+!Makefile.kvm
\ No newline at end of file
diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
index c59a337cd4da..7b33464bf8cc 100644
--- a/tools/testing/selftests/kvm/Makefile
+++ b/tools/testing/selftests/kvm/Makefile
@@ -1,12 +1,9 @@
# SPDX-License-Identifier: GPL-2.0-only
-include ../../../build/Build.include
-
-all:
-
top_srcdir = ../../../..
include $(top_srcdir)/scripts/subarch.include
ARCH ?= $(SUBARCH)
+ifeq ($(ARCH),$(filter $(ARCH),arm64 s390 riscv x86 x86_64))
ifeq ($(ARCH),x86)
ARCH_DIR := x86_64
else ifeq ($(ARCH),arm64)
@@ -17,332 +14,9 @@ else
ARCH_DIR := $(ARCH)
endif
-LIBKVM += lib/assert.c
-LIBKVM += lib/elf.c
-LIBKVM += lib/guest_modes.c
-LIBKVM += lib/io.c
-LIBKVM += lib/kvm_util.c
-LIBKVM += lib/memstress.c
-LIBKVM += lib/guest_sprintf.c
-LIBKVM += lib/rbtree.c
-LIBKVM += lib/sparsebit.c
-LIBKVM += lib/test_util.c
-LIBKVM += lib/ucall_common.c
-LIBKVM += lib/userfaultfd_util.c
-
-LIBKVM_STRING += lib/string_override.c
-
-LIBKVM_x86_64 += lib/x86_64/apic.c
-LIBKVM_x86_64 += lib/x86_64/handlers.S
-LIBKVM_x86_64 += lib/x86_64/hyperv.c
-LIBKVM_x86_64 += lib/x86_64/memstress.c
-LIBKVM_x86_64 += lib/x86_64/pmu.c
-LIBKVM_x86_64 += lib/x86_64/processor.c
-LIBKVM_x86_64 += lib/x86_64/sev.c
-LIBKVM_x86_64 += lib/x86_64/svm.c
-LIBKVM_x86_64 += lib/x86_64/ucall.c
-LIBKVM_x86_64 += lib/x86_64/vmx.c
-
-LIBKVM_aarch64 += lib/aarch64/gic.c
-LIBKVM_aarch64 += lib/aarch64/gic_v3.c
-LIBKVM_aarch64 += lib/aarch64/gic_v3_its.c
-LIBKVM_aarch64 += lib/aarch64/handlers.S
-LIBKVM_aarch64 += lib/aarch64/processor.c
-LIBKVM_aarch64 += lib/aarch64/spinlock.c
-LIBKVM_aarch64 += lib/aarch64/ucall.c
-LIBKVM_aarch64 += lib/aarch64/vgic.c
-
-LIBKVM_s390x += lib/s390x/diag318_test_handler.c
-LIBKVM_s390x += lib/s390x/processor.c
-LIBKVM_s390x += lib/s390x/ucall.c
-LIBKVM_s390x += lib/s390x/facility.c
-
-LIBKVM_riscv += lib/riscv/handlers.S
-LIBKVM_riscv += lib/riscv/processor.c
-LIBKVM_riscv += lib/riscv/ucall.c
-
-# Non-compiled test targets
-TEST_PROGS_x86_64 += x86_64/nx_huge_pages_test.sh
-
-# Compiled test targets
-TEST_GEN_PROGS_x86_64 = x86_64/cpuid_test
-TEST_GEN_PROGS_x86_64 += x86_64/cr4_cpuid_sync_test
-TEST_GEN_PROGS_x86_64 += x86_64/dirty_log_page_splitting_test
-TEST_GEN_PROGS_x86_64 += x86_64/feature_msrs_test
-TEST_GEN_PROGS_x86_64 += x86_64/exit_on_emulation_failure_test
-TEST_GEN_PROGS_x86_64 += x86_64/fix_hypercall_test
-TEST_GEN_PROGS_x86_64 += x86_64/hwcr_msr_test
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_clock
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_cpuid
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_evmcs
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_extended_hypercalls
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_features
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_ipi
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_svm_test
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_tlb_flush
-TEST_GEN_PROGS_x86_64 += x86_64/kvm_clock_test
-TEST_GEN_PROGS_x86_64 += x86_64/kvm_pv_test
-TEST_GEN_PROGS_x86_64 += x86_64/monitor_mwait_test
-TEST_GEN_PROGS_x86_64 += x86_64/nested_exceptions_test
-TEST_GEN_PROGS_x86_64 += x86_64/platform_info_test
-TEST_GEN_PROGS_x86_64 += x86_64/pmu_counters_test
-TEST_GEN_PROGS_x86_64 += x86_64/pmu_event_filter_test
-TEST_GEN_PROGS_x86_64 += x86_64/private_mem_conversions_test
-TEST_GEN_PROGS_x86_64 += x86_64/private_mem_kvm_exits_test
-TEST_GEN_PROGS_x86_64 += x86_64/set_boot_cpu_id
-TEST_GEN_PROGS_x86_64 += x86_64/set_sregs_test
-TEST_GEN_PROGS_x86_64 += x86_64/smaller_maxphyaddr_emulation_test
-TEST_GEN_PROGS_x86_64 += x86_64/smm_test
-TEST_GEN_PROGS_x86_64 += x86_64/state_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_preemption_timer_test
-TEST_GEN_PROGS_x86_64 += x86_64/svm_vmcall_test
-TEST_GEN_PROGS_x86_64 += x86_64/svm_int_ctl_test
-TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_shutdown_test
-TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_soft_inject_test
-TEST_GEN_PROGS_x86_64 += x86_64/tsc_scaling_sync
-TEST_GEN_PROGS_x86_64 += x86_64/sync_regs_test
-TEST_GEN_PROGS_x86_64 += x86_64/ucna_injection_test
-TEST_GEN_PROGS_x86_64 += x86_64/userspace_io_test
-TEST_GEN_PROGS_x86_64 += x86_64/userspace_msr_exit_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_apic_access_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_close_while_nested_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_dirty_log_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_exception_with_invalid_guest_state
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_msrs_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_invalid_nested_guest_state
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_set_nested_state_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_tsc_adjust_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_nested_tsc_scaling_test
-TEST_GEN_PROGS_x86_64 += x86_64/apic_bus_clock_test
-TEST_GEN_PROGS_x86_64 += x86_64/xapic_ipi_test
-TEST_GEN_PROGS_x86_64 += x86_64/xapic_state_test
-TEST_GEN_PROGS_x86_64 += x86_64/xcr0_cpuid_test
-TEST_GEN_PROGS_x86_64 += x86_64/xss_msr_test
-TEST_GEN_PROGS_x86_64 += x86_64/debug_regs
-TEST_GEN_PROGS_x86_64 += x86_64/tsc_msrs_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_pmu_caps_test
-TEST_GEN_PROGS_x86_64 += x86_64/xen_shinfo_test
-TEST_GEN_PROGS_x86_64 += x86_64/xen_vmcall_test
-TEST_GEN_PROGS_x86_64 += x86_64/sev_init2_tests
-TEST_GEN_PROGS_x86_64 += x86_64/sev_migrate_tests
-TEST_GEN_PROGS_x86_64 += x86_64/sev_smoke_test
-TEST_GEN_PROGS_x86_64 += x86_64/amx_test
-TEST_GEN_PROGS_x86_64 += x86_64/max_vcpuid_cap_test
-TEST_GEN_PROGS_x86_64 += x86_64/triple_fault_event_test
-TEST_GEN_PROGS_x86_64 += x86_64/recalc_apic_map_test
-TEST_GEN_PROGS_x86_64 += access_tracking_perf_test
-TEST_GEN_PROGS_x86_64 += coalesced_io_test
-TEST_GEN_PROGS_x86_64 += demand_paging_test
-TEST_GEN_PROGS_x86_64 += dirty_log_test
-TEST_GEN_PROGS_x86_64 += dirty_log_perf_test
-TEST_GEN_PROGS_x86_64 += guest_memfd_test
-TEST_GEN_PROGS_x86_64 += guest_print_test
-TEST_GEN_PROGS_x86_64 += hardware_disable_test
-TEST_GEN_PROGS_x86_64 += kvm_create_max_vcpus
-TEST_GEN_PROGS_x86_64 += kvm_page_table_test
-TEST_GEN_PROGS_x86_64 += mmu_stress_test
-TEST_GEN_PROGS_x86_64 += memslot_modification_stress_test
-TEST_GEN_PROGS_x86_64 += memslot_perf_test
-TEST_GEN_PROGS_x86_64 += rseq_test
-TEST_GEN_PROGS_x86_64 += set_memory_region_test
-TEST_GEN_PROGS_x86_64 += steal_time
-TEST_GEN_PROGS_x86_64 += kvm_binary_stats_test
-TEST_GEN_PROGS_x86_64 += system_counter_offset_test
-TEST_GEN_PROGS_x86_64 += pre_fault_memory_test
-
-# Compiled outputs used by test targets
-TEST_GEN_PROGS_EXTENDED_x86_64 += x86_64/nx_huge_pages_test
-
-TEST_GEN_PROGS_aarch64 += aarch64/aarch32_id_regs
-TEST_GEN_PROGS_aarch64 += aarch64/arch_timer_edge_cases
-TEST_GEN_PROGS_aarch64 += aarch64/debug-exceptions
-TEST_GEN_PROGS_aarch64 += aarch64/hypercalls
-TEST_GEN_PROGS_aarch64 += aarch64/mmio_abort
-TEST_GEN_PROGS_aarch64 += aarch64/page_fault_test
-TEST_GEN_PROGS_aarch64 += aarch64/psci_test
-TEST_GEN_PROGS_aarch64 += aarch64/set_id_regs
-TEST_GEN_PROGS_aarch64 += aarch64/smccc_filter
-TEST_GEN_PROGS_aarch64 += aarch64/vcpu_width_config
-TEST_GEN_PROGS_aarch64 += aarch64/vgic_init
-TEST_GEN_PROGS_aarch64 += aarch64/vgic_irq
-TEST_GEN_PROGS_aarch64 += aarch64/vgic_lpi_stress
-TEST_GEN_PROGS_aarch64 += aarch64/vpmu_counter_access
-TEST_GEN_PROGS_aarch64 += aarch64/no-vgic-v3
-TEST_GEN_PROGS_aarch64 += access_tracking_perf_test
-TEST_GEN_PROGS_aarch64 += arch_timer
-TEST_GEN_PROGS_aarch64 += coalesced_io_test
-TEST_GEN_PROGS_aarch64 += demand_paging_test
-TEST_GEN_PROGS_aarch64 += dirty_log_test
-TEST_GEN_PROGS_aarch64 += dirty_log_perf_test
-TEST_GEN_PROGS_aarch64 += guest_print_test
-TEST_GEN_PROGS_aarch64 += get-reg-list
-TEST_GEN_PROGS_aarch64 += kvm_create_max_vcpus
-TEST_GEN_PROGS_aarch64 += kvm_page_table_test
-TEST_GEN_PROGS_aarch64 += memslot_modification_stress_test
-TEST_GEN_PROGS_aarch64 += memslot_perf_test
-TEST_GEN_PROGS_aarch64 += mmu_stress_test
-TEST_GEN_PROGS_aarch64 += rseq_test
-TEST_GEN_PROGS_aarch64 += set_memory_region_test
-TEST_GEN_PROGS_aarch64 += steal_time
-TEST_GEN_PROGS_aarch64 += kvm_binary_stats_test
-
-TEST_GEN_PROGS_s390x = s390x/memop
-TEST_GEN_PROGS_s390x += s390x/resets
-TEST_GEN_PROGS_s390x += s390x/sync_regs_test
-TEST_GEN_PROGS_s390x += s390x/tprot
-TEST_GEN_PROGS_s390x += s390x/cmma_test
-TEST_GEN_PROGS_s390x += s390x/debug_test
-TEST_GEN_PROGS_s390x += s390x/cpumodel_subfuncs_test
-TEST_GEN_PROGS_s390x += s390x/shared_zeropage_test
-TEST_GEN_PROGS_s390x += s390x/ucontrol_test
-TEST_GEN_PROGS_s390x += demand_paging_test
-TEST_GEN_PROGS_s390x += dirty_log_test
-TEST_GEN_PROGS_s390x += guest_print_test
-TEST_GEN_PROGS_s390x += kvm_create_max_vcpus
-TEST_GEN_PROGS_s390x += kvm_page_table_test
-TEST_GEN_PROGS_s390x += rseq_test
-TEST_GEN_PROGS_s390x += set_memory_region_test
-TEST_GEN_PROGS_s390x += kvm_binary_stats_test
-
-TEST_GEN_PROGS_riscv += riscv/sbi_pmu_test
-TEST_GEN_PROGS_riscv += riscv/ebreak_test
-TEST_GEN_PROGS_riscv += arch_timer
-TEST_GEN_PROGS_riscv += coalesced_io_test
-TEST_GEN_PROGS_riscv += demand_paging_test
-TEST_GEN_PROGS_riscv += dirty_log_test
-TEST_GEN_PROGS_riscv += get-reg-list
-TEST_GEN_PROGS_riscv += guest_print_test
-TEST_GEN_PROGS_riscv += kvm_binary_stats_test
-TEST_GEN_PROGS_riscv += kvm_create_max_vcpus
-TEST_GEN_PROGS_riscv += kvm_page_table_test
-TEST_GEN_PROGS_riscv += set_memory_region_test
-TEST_GEN_PROGS_riscv += steal_time
-
-SPLIT_TESTS += arch_timer
-SPLIT_TESTS += get-reg-list
-
-TEST_PROGS += $(TEST_PROGS_$(ARCH_DIR))
-TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH_DIR))
-TEST_GEN_PROGS_EXTENDED += $(TEST_GEN_PROGS_EXTENDED_$(ARCH_DIR))
-LIBKVM += $(LIBKVM_$(ARCH_DIR))
-
-OVERRIDE_TARGETS = 1
-
-# lib.mak defines $(OUTPUT), prepends $(OUTPUT)/ to $(TEST_GEN_PROGS), and most
-# importantly defines, i.e. overwrites, $(CC) (unless `make -e` or `make CC=`,
-# which causes the environment variable to override the makefile).
-include ../lib.mk
-
-INSTALL_HDR_PATH = $(top_srcdir)/usr
-LINUX_HDR_PATH = $(INSTALL_HDR_PATH)/include/
-LINUX_TOOL_INCLUDE = $(top_srcdir)/tools/include
-ifeq ($(ARCH),x86_64)
-LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/x86/include
+include Makefile.kvm
else
-LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH)/include
+# Empty targets for unsupported architectures
+all:
+clean:
endif
-CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \
- -Wno-gnu-variable-sized-type-not-at-end -MD -MP -DCONFIG_64BIT \
- -fno-builtin-memcmp -fno-builtin-memcpy \
- -fno-builtin-memset -fno-builtin-strnlen \
- -fno-stack-protector -fno-PIE -fno-strict-aliasing \
- -I$(LINUX_TOOL_INCLUDE) -I$(LINUX_TOOL_ARCH_INCLUDE) \
- -I$(LINUX_HDR_PATH) -Iinclude -I$(<D) -Iinclude/$(ARCH_DIR) \
- -I ../rseq -I.. $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
-ifeq ($(ARCH),s390)
- CFLAGS += -march=z10
-endif
-ifeq ($(ARCH),x86)
-ifeq ($(shell echo "void foo(void) { }" | $(CC) -march=x86-64-v2 -x c - -c -o /dev/null 2>/dev/null; echo "$$?"),0)
- CFLAGS += -march=x86-64-v2
-endif
-endif
-ifeq ($(ARCH),arm64)
-tools_dir := $(top_srcdir)/tools
-arm64_tools_dir := $(tools_dir)/arch/arm64/tools/
-
-ifneq ($(abs_objdir),)
-arm64_hdr_outdir := $(abs_objdir)/tools/
-else
-arm64_hdr_outdir := $(tools_dir)/
-endif
-
-GEN_HDRS := $(arm64_hdr_outdir)arch/arm64/include/generated/
-CFLAGS += -I$(GEN_HDRS)
-
-$(GEN_HDRS): $(wildcard $(arm64_tools_dir)/*)
- $(MAKE) -C $(arm64_tools_dir) OUTPUT=$(arm64_hdr_outdir)
-endif
-
-no-pie-option := $(call try-run, echo 'int main(void) { return 0; }' | \
- $(CC) -Werror $(CFLAGS) -no-pie -x c - -o "$$TMP", -no-pie)
-
-# On s390, build the testcases KVM-enabled
-pgste-option = $(call try-run, echo 'int main(void) { return 0; }' | \
- $(CC) -Werror -Wl$(comma)--s390-pgste -x c - -o "$$TMP",-Wl$(comma)--s390-pgste)
-
-LDLIBS += -ldl
-LDFLAGS += -pthread $(no-pie-option) $(pgste-option)
-
-LIBKVM_C := $(filter %.c,$(LIBKVM))
-LIBKVM_S := $(filter %.S,$(LIBKVM))
-LIBKVM_C_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_C))
-LIBKVM_S_OBJ := $(patsubst %.S, $(OUTPUT)/%.o, $(LIBKVM_S))
-LIBKVM_STRING_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_STRING))
-LIBKVM_OBJS = $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ) $(LIBKVM_STRING_OBJ)
-SPLIT_TEST_GEN_PROGS := $(patsubst %, $(OUTPUT)/%, $(SPLIT_TESTS))
-SPLIT_TEST_GEN_OBJ := $(patsubst %, $(OUTPUT)/$(ARCH_DIR)/%.o, $(SPLIT_TESTS))
-
-TEST_GEN_OBJ = $(patsubst %, %.o, $(TEST_GEN_PROGS))
-TEST_GEN_OBJ += $(patsubst %, %.o, $(TEST_GEN_PROGS_EXTENDED))
-TEST_DEP_FILES = $(patsubst %.o, %.d, $(TEST_GEN_OBJ))
-TEST_DEP_FILES += $(patsubst %.o, %.d, $(LIBKVM_OBJS))
-TEST_DEP_FILES += $(patsubst %.o, %.d, $(SPLIT_TEST_GEN_OBJ))
--include $(TEST_DEP_FILES)
-
-$(shell mkdir -p $(sort $(OUTPUT)/$(ARCH_DIR) $(dir $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ))))
-
-$(filter-out $(SPLIT_TEST_GEN_PROGS), $(TEST_GEN_PROGS)) \
-$(TEST_GEN_PROGS_EXTENDED): %: %.o
- $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $< $(LIBKVM_OBJS) $(LDLIBS) -o $@
-$(TEST_GEN_OBJ): $(OUTPUT)/%.o: %.c
- $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
-
-$(SPLIT_TEST_GEN_PROGS): $(OUTPUT)/%: $(OUTPUT)/%.o $(OUTPUT)/$(ARCH_DIR)/%.o
- $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@
-$(SPLIT_TEST_GEN_OBJ): $(OUTPUT)/$(ARCH_DIR)/%.o: $(ARCH_DIR)/%.c
- $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
-
-EXTRA_CLEAN += $(GEN_HDRS) \
- $(LIBKVM_OBJS) \
- $(SPLIT_TEST_GEN_OBJ) \
- $(TEST_DEP_FILES) \
- $(TEST_GEN_OBJ) \
- cscope.*
-
-$(LIBKVM_C_OBJ): $(OUTPUT)/%.o: %.c $(GEN_HDRS)
- $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
-
-$(LIBKVM_S_OBJ): $(OUTPUT)/%.o: %.S $(GEN_HDRS)
- $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
-
-# Compile the string overrides as freestanding to prevent the compiler from
-# generating self-referential code, e.g. without "freestanding" the compiler may
-# "optimize" memcmp() by invoking memcmp(), thus causing infinite recursion.
-$(LIBKVM_STRING_OBJ): $(OUTPUT)/%.o: %.c
- $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@
-
-$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))))
-$(SPLIT_TEST_GEN_OBJ): $(GEN_HDRS)
-$(TEST_GEN_PROGS): $(LIBKVM_OBJS)
-$(TEST_GEN_PROGS_EXTENDED): $(LIBKVM_OBJS)
-$(TEST_GEN_OBJ): $(GEN_HDRS)
-
-cscope: include_paths = $(LINUX_TOOL_INCLUDE) $(LINUX_HDR_PATH) include lib ..
-cscope:
- $(RM) cscope.*
- (find $(include_paths) -name '*.h' \
- -exec realpath --relative-base=$(PWD) {} \;; \
- find . -name '*.c' \
- -exec realpath --relative-base=$(PWD) {} \;) | sort -u > cscope.files
- cscope -b
diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
new file mode 100644
index 000000000000..e988a72f8c20
--- /dev/null
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -0,0 +1,334 @@
+# SPDX-License-Identifier: GPL-2.0-only
+include ../../../build/Build.include
+
+all:
+
+LIBKVM += lib/assert.c
+LIBKVM += lib/elf.c
+LIBKVM += lib/guest_modes.c
+LIBKVM += lib/io.c
+LIBKVM += lib/kvm_util.c
+LIBKVM += lib/memstress.c
+LIBKVM += lib/guest_sprintf.c
+LIBKVM += lib/rbtree.c
+LIBKVM += lib/sparsebit.c
+LIBKVM += lib/test_util.c
+LIBKVM += lib/ucall_common.c
+LIBKVM += lib/userfaultfd_util.c
+
+LIBKVM_STRING += lib/string_override.c
+
+LIBKVM_x86_64 += lib/x86_64/apic.c
+LIBKVM_x86_64 += lib/x86_64/handlers.S
+LIBKVM_x86_64 += lib/x86_64/hyperv.c
+LIBKVM_x86_64 += lib/x86_64/memstress.c
+LIBKVM_x86_64 += lib/x86_64/pmu.c
+LIBKVM_x86_64 += lib/x86_64/processor.c
+LIBKVM_x86_64 += lib/x86_64/sev.c
+LIBKVM_x86_64 += lib/x86_64/svm.c
+LIBKVM_x86_64 += lib/x86_64/ucall.c
+LIBKVM_x86_64 += lib/x86_64/vmx.c
+
+LIBKVM_aarch64 += lib/aarch64/gic.c
+LIBKVM_aarch64 += lib/aarch64/gic_v3.c
+LIBKVM_aarch64 += lib/aarch64/gic_v3_its.c
+LIBKVM_aarch64 += lib/aarch64/handlers.S
+LIBKVM_aarch64 += lib/aarch64/processor.c
+LIBKVM_aarch64 += lib/aarch64/spinlock.c
+LIBKVM_aarch64 += lib/aarch64/ucall.c
+LIBKVM_aarch64 += lib/aarch64/vgic.c
+
+LIBKVM_s390x += lib/s390x/diag318_test_handler.c
+LIBKVM_s390x += lib/s390x/processor.c
+LIBKVM_s390x += lib/s390x/ucall.c
+LIBKVM_s390x += lib/s390x/facility.c
+
+LIBKVM_riscv += lib/riscv/handlers.S
+LIBKVM_riscv += lib/riscv/processor.c
+LIBKVM_riscv += lib/riscv/ucall.c
+
+# Non-compiled test targets
+TEST_PROGS_x86_64 += x86_64/nx_huge_pages_test.sh
+
+# Compiled test targets
+TEST_GEN_PROGS_x86_64 = x86_64/cpuid_test
+TEST_GEN_PROGS_x86_64 += x86_64/cr4_cpuid_sync_test
+TEST_GEN_PROGS_x86_64 += x86_64/dirty_log_page_splitting_test
+TEST_GEN_PROGS_x86_64 += x86_64/feature_msrs_test
+TEST_GEN_PROGS_x86_64 += x86_64/exit_on_emulation_failure_test
+TEST_GEN_PROGS_x86_64 += x86_64/fix_hypercall_test
+TEST_GEN_PROGS_x86_64 += x86_64/hwcr_msr_test
+TEST_GEN_PROGS_x86_64 += x86_64/hyperv_clock
+TEST_GEN_PROGS_x86_64 += x86_64/hyperv_cpuid
+TEST_GEN_PROGS_x86_64 += x86_64/hyperv_evmcs
+TEST_GEN_PROGS_x86_64 += x86_64/hyperv_extended_hypercalls
+TEST_GEN_PROGS_x86_64 += x86_64/hyperv_features
+TEST_GEN_PROGS_x86_64 += x86_64/hyperv_ipi
+TEST_GEN_PROGS_x86_64 += x86_64/hyperv_svm_test
+TEST_GEN_PROGS_x86_64 += x86_64/hyperv_tlb_flush
+TEST_GEN_PROGS_x86_64 += x86_64/kvm_clock_test
+TEST_GEN_PROGS_x86_64 += x86_64/kvm_pv_test
+TEST_GEN_PROGS_x86_64 += x86_64/monitor_mwait_test
+TEST_GEN_PROGS_x86_64 += x86_64/nested_exceptions_test
+TEST_GEN_PROGS_x86_64 += x86_64/platform_info_test
+TEST_GEN_PROGS_x86_64 += x86_64/pmu_counters_test
+TEST_GEN_PROGS_x86_64 += x86_64/pmu_event_filter_test
+TEST_GEN_PROGS_x86_64 += x86_64/private_mem_conversions_test
+TEST_GEN_PROGS_x86_64 += x86_64/private_mem_kvm_exits_test
+TEST_GEN_PROGS_x86_64 += x86_64/set_boot_cpu_id
+TEST_GEN_PROGS_x86_64 += x86_64/set_sregs_test
+TEST_GEN_PROGS_x86_64 += x86_64/smaller_maxphyaddr_emulation_test
+TEST_GEN_PROGS_x86_64 += x86_64/smm_test
+TEST_GEN_PROGS_x86_64 += x86_64/state_test
+TEST_GEN_PROGS_x86_64 += x86_64/vmx_preemption_timer_test
+TEST_GEN_PROGS_x86_64 += x86_64/svm_vmcall_test
+TEST_GEN_PROGS_x86_64 += x86_64/svm_int_ctl_test
+TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_shutdown_test
+TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_soft_inject_test
+TEST_GEN_PROGS_x86_64 += x86_64/tsc_scaling_sync
+TEST_GEN_PROGS_x86_64 += x86_64/sync_regs_test
+TEST_GEN_PROGS_x86_64 += x86_64/ucna_injection_test
+TEST_GEN_PROGS_x86_64 += x86_64/userspace_io_test
+TEST_GEN_PROGS_x86_64 += x86_64/userspace_msr_exit_test
+TEST_GEN_PROGS_x86_64 += x86_64/vmx_apic_access_test
+TEST_GEN_PROGS_x86_64 += x86_64/vmx_close_while_nested_test
+TEST_GEN_PROGS_x86_64 += x86_64/vmx_dirty_log_test
+TEST_GEN_PROGS_x86_64 += x86_64/vmx_exception_with_invalid_guest_state
+TEST_GEN_PROGS_x86_64 += x86_64/vmx_msrs_test
+TEST_GEN_PROGS_x86_64 += x86_64/vmx_invalid_nested_guest_state
+TEST_GEN_PROGS_x86_64 += x86_64/vmx_set_nested_state_test
+TEST_GEN_PROGS_x86_64 += x86_64/vmx_tsc_adjust_test
+TEST_GEN_PROGS_x86_64 += x86_64/vmx_nested_tsc_scaling_test
+TEST_GEN_PROGS_x86_64 += x86_64/apic_bus_clock_test
+TEST_GEN_PROGS_x86_64 += x86_64/xapic_ipi_test
+TEST_GEN_PROGS_x86_64 += x86_64/xapic_state_test
+TEST_GEN_PROGS_x86_64 += x86_64/xcr0_cpuid_test
+TEST_GEN_PROGS_x86_64 += x86_64/xss_msr_test
+TEST_GEN_PROGS_x86_64 += x86_64/debug_regs
+TEST_GEN_PROGS_x86_64 += x86_64/tsc_msrs_test
+TEST_GEN_PROGS_x86_64 += x86_64/vmx_pmu_caps_test
+TEST_GEN_PROGS_x86_64 += x86_64/xen_shinfo_test
+TEST_GEN_PROGS_x86_64 += x86_64/xen_vmcall_test
+TEST_GEN_PROGS_x86_64 += x86_64/sev_init2_tests
+TEST_GEN_PROGS_x86_64 += x86_64/sev_migrate_tests
+TEST_GEN_PROGS_x86_64 += x86_64/sev_smoke_test
+TEST_GEN_PROGS_x86_64 += x86_64/amx_test
+TEST_GEN_PROGS_x86_64 += x86_64/max_vcpuid_cap_test
+TEST_GEN_PROGS_x86_64 += x86_64/triple_fault_event_test
+TEST_GEN_PROGS_x86_64 += x86_64/recalc_apic_map_test
+TEST_GEN_PROGS_x86_64 += access_tracking_perf_test
+TEST_GEN_PROGS_x86_64 += coalesced_io_test
+TEST_GEN_PROGS_x86_64 += demand_paging_test
+TEST_GEN_PROGS_x86_64 += dirty_log_test
+TEST_GEN_PROGS_x86_64 += dirty_log_perf_test
+TEST_GEN_PROGS_x86_64 += guest_memfd_test
+TEST_GEN_PROGS_x86_64 += guest_print_test
+TEST_GEN_PROGS_x86_64 += hardware_disable_test
+TEST_GEN_PROGS_x86_64 += kvm_create_max_vcpus
+TEST_GEN_PROGS_x86_64 += kvm_page_table_test
+TEST_GEN_PROGS_x86_64 += mmu_stress_test
+TEST_GEN_PROGS_x86_64 += memslot_modification_stress_test
+TEST_GEN_PROGS_x86_64 += memslot_perf_test
+TEST_GEN_PROGS_x86_64 += rseq_test
+TEST_GEN_PROGS_x86_64 += set_memory_region_test
+TEST_GEN_PROGS_x86_64 += steal_time
+TEST_GEN_PROGS_x86_64 += kvm_binary_stats_test
+TEST_GEN_PROGS_x86_64 += system_counter_offset_test
+TEST_GEN_PROGS_x86_64 += pre_fault_memory_test
+
+# Compiled outputs used by test targets
+TEST_GEN_PROGS_EXTENDED_x86_64 += x86_64/nx_huge_pages_test
+
+TEST_GEN_PROGS_aarch64 += aarch64/aarch32_id_regs
+TEST_GEN_PROGS_aarch64 += aarch64/arch_timer_edge_cases
+TEST_GEN_PROGS_aarch64 += aarch64/debug-exceptions
+TEST_GEN_PROGS_aarch64 += aarch64/hypercalls
+TEST_GEN_PROGS_aarch64 += aarch64/mmio_abort
+TEST_GEN_PROGS_aarch64 += aarch64/page_fault_test
+TEST_GEN_PROGS_aarch64 += aarch64/psci_test
+TEST_GEN_PROGS_aarch64 += aarch64/set_id_regs
+TEST_GEN_PROGS_aarch64 += aarch64/smccc_filter
+TEST_GEN_PROGS_aarch64 += aarch64/vcpu_width_config
+TEST_GEN_PROGS_aarch64 += aarch64/vgic_init
+TEST_GEN_PROGS_aarch64 += aarch64/vgic_irq
+TEST_GEN_PROGS_aarch64 += aarch64/vgic_lpi_stress
+TEST_GEN_PROGS_aarch64 += aarch64/vpmu_counter_access
+TEST_GEN_PROGS_aarch64 += aarch64/no-vgic-v3
+TEST_GEN_PROGS_aarch64 += access_tracking_perf_test
+TEST_GEN_PROGS_aarch64 += arch_timer
+TEST_GEN_PROGS_aarch64 += coalesced_io_test
+TEST_GEN_PROGS_aarch64 += demand_paging_test
+TEST_GEN_PROGS_aarch64 += dirty_log_test
+TEST_GEN_PROGS_aarch64 += dirty_log_perf_test
+TEST_GEN_PROGS_aarch64 += guest_print_test
+TEST_GEN_PROGS_aarch64 += get-reg-list
+TEST_GEN_PROGS_aarch64 += kvm_create_max_vcpus
+TEST_GEN_PROGS_aarch64 += kvm_page_table_test
+TEST_GEN_PROGS_aarch64 += memslot_modification_stress_test
+TEST_GEN_PROGS_aarch64 += memslot_perf_test
+TEST_GEN_PROGS_aarch64 += mmu_stress_test
+TEST_GEN_PROGS_aarch64 += rseq_test
+TEST_GEN_PROGS_aarch64 += set_memory_region_test
+TEST_GEN_PROGS_aarch64 += steal_time
+TEST_GEN_PROGS_aarch64 += kvm_binary_stats_test
+
+TEST_GEN_PROGS_s390x = s390x/memop
+TEST_GEN_PROGS_s390x += s390x/resets
+TEST_GEN_PROGS_s390x += s390x/sync_regs_test
+TEST_GEN_PROGS_s390x += s390x/tprot
+TEST_GEN_PROGS_s390x += s390x/cmma_test
+TEST_GEN_PROGS_s390x += s390x/debug_test
+TEST_GEN_PROGS_s390x += s390x/cpumodel_subfuncs_test
+TEST_GEN_PROGS_s390x += s390x/shared_zeropage_test
+TEST_GEN_PROGS_s390x += s390x/ucontrol_test
+TEST_GEN_PROGS_s390x += demand_paging_test
+TEST_GEN_PROGS_s390x += dirty_log_test
+TEST_GEN_PROGS_s390x += guest_print_test
+TEST_GEN_PROGS_s390x += kvm_create_max_vcpus
+TEST_GEN_PROGS_s390x += kvm_page_table_test
+TEST_GEN_PROGS_s390x += rseq_test
+TEST_GEN_PROGS_s390x += set_memory_region_test
+TEST_GEN_PROGS_s390x += kvm_binary_stats_test
+
+TEST_GEN_PROGS_riscv += riscv/sbi_pmu_test
+TEST_GEN_PROGS_riscv += riscv/ebreak_test
+TEST_GEN_PROGS_riscv += arch_timer
+TEST_GEN_PROGS_riscv += coalesced_io_test
+TEST_GEN_PROGS_riscv += demand_paging_test
+TEST_GEN_PROGS_riscv += dirty_log_test
+TEST_GEN_PROGS_riscv += get-reg-list
+TEST_GEN_PROGS_riscv += guest_print_test
+TEST_GEN_PROGS_riscv += kvm_binary_stats_test
+TEST_GEN_PROGS_riscv += kvm_create_max_vcpus
+TEST_GEN_PROGS_riscv += kvm_page_table_test
+TEST_GEN_PROGS_riscv += set_memory_region_test
+TEST_GEN_PROGS_riscv += steal_time
+
+SPLIT_TESTS += arch_timer
+SPLIT_TESTS += get-reg-list
+
+TEST_PROGS += $(TEST_PROGS_$(ARCH_DIR))
+TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH_DIR))
+TEST_GEN_PROGS_EXTENDED += $(TEST_GEN_PROGS_EXTENDED_$(ARCH_DIR))
+LIBKVM += $(LIBKVM_$(ARCH_DIR))
+
+OVERRIDE_TARGETS = 1
+
+# lib.mak defines $(OUTPUT), prepends $(OUTPUT)/ to $(TEST_GEN_PROGS), and most
+# importantly defines, i.e. overwrites, $(CC) (unless `make -e` or `make CC=`,
+# which causes the environment variable to override the makefile).
+include ../lib.mk
+
+INSTALL_HDR_PATH = $(top_srcdir)/usr
+LINUX_HDR_PATH = $(INSTALL_HDR_PATH)/include/
+LINUX_TOOL_INCLUDE = $(top_srcdir)/tools/include
+ifeq ($(ARCH),x86_64)
+LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/x86/include
+else
+LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH)/include
+endif
+CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \
+ -Wno-gnu-variable-sized-type-not-at-end -MD -MP -DCONFIG_64BIT \
+ -fno-builtin-memcmp -fno-builtin-memcpy \
+ -fno-builtin-memset -fno-builtin-strnlen \
+ -fno-stack-protector -fno-PIE -fno-strict-aliasing \
+ -I$(LINUX_TOOL_INCLUDE) -I$(LINUX_TOOL_ARCH_INCLUDE) \
+ -I$(LINUX_HDR_PATH) -Iinclude -I$(<D) -Iinclude/$(ARCH_DIR) \
+ -I ../rseq -I.. $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
+ifeq ($(ARCH),s390)
+ CFLAGS += -march=z10
+endif
+ifeq ($(ARCH),x86)
+ifeq ($(shell echo "void foo(void) { }" | $(CC) -march=x86-64-v2 -x c - -c -o /dev/null 2>/dev/null; echo "$$?"),0)
+ CFLAGS += -march=x86-64-v2
+endif
+endif
+ifeq ($(ARCH),arm64)
+tools_dir := $(top_srcdir)/tools
+arm64_tools_dir := $(tools_dir)/arch/arm64/tools/
+
+ifneq ($(abs_objdir),)
+arm64_hdr_outdir := $(abs_objdir)/tools/
+else
+arm64_hdr_outdir := $(tools_dir)/
+endif
+
+GEN_HDRS := $(arm64_hdr_outdir)arch/arm64/include/generated/
+CFLAGS += -I$(GEN_HDRS)
+
+$(GEN_HDRS): $(wildcard $(arm64_tools_dir)/*)
+ $(MAKE) -C $(arm64_tools_dir) OUTPUT=$(arm64_hdr_outdir)
+endif
+
+no-pie-option := $(call try-run, echo 'int main(void) { return 0; }' | \
+ $(CC) -Werror $(CFLAGS) -no-pie -x c - -o "$$TMP", -no-pie)
+
+# On s390, build the testcases KVM-enabled
+pgste-option = $(call try-run, echo 'int main(void) { return 0; }' | \
+ $(CC) -Werror -Wl$(comma)--s390-pgste -x c - -o "$$TMP",-Wl$(comma)--s390-pgste)
+
+LDLIBS += -ldl
+LDFLAGS += -pthread $(no-pie-option) $(pgste-option)
+
+LIBKVM_C := $(filter %.c,$(LIBKVM))
+LIBKVM_S := $(filter %.S,$(LIBKVM))
+LIBKVM_C_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_C))
+LIBKVM_S_OBJ := $(patsubst %.S, $(OUTPUT)/%.o, $(LIBKVM_S))
+LIBKVM_STRING_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_STRING))
+LIBKVM_OBJS = $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ) $(LIBKVM_STRING_OBJ)
+SPLIT_TEST_GEN_PROGS := $(patsubst %, $(OUTPUT)/%, $(SPLIT_TESTS))
+SPLIT_TEST_GEN_OBJ := $(patsubst %, $(OUTPUT)/$(ARCH_DIR)/%.o, $(SPLIT_TESTS))
+
+TEST_GEN_OBJ = $(patsubst %, %.o, $(TEST_GEN_PROGS))
+TEST_GEN_OBJ += $(patsubst %, %.o, $(TEST_GEN_PROGS_EXTENDED))
+TEST_DEP_FILES = $(patsubst %.o, %.d, $(TEST_GEN_OBJ))
+TEST_DEP_FILES += $(patsubst %.o, %.d, $(LIBKVM_OBJS))
+TEST_DEP_FILES += $(patsubst %.o, %.d, $(SPLIT_TEST_GEN_OBJ))
+-include $(TEST_DEP_FILES)
+
+$(shell mkdir -p $(sort $(OUTPUT)/$(ARCH_DIR) $(dir $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ))))
+
+$(filter-out $(SPLIT_TEST_GEN_PROGS), $(TEST_GEN_PROGS)) \
+$(TEST_GEN_PROGS_EXTENDED): %: %.o
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $< $(LIBKVM_OBJS) $(LDLIBS) -o $@
+$(TEST_GEN_OBJ): $(OUTPUT)/%.o: %.c
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
+
+$(SPLIT_TEST_GEN_PROGS): $(OUTPUT)/%: $(OUTPUT)/%.o $(OUTPUT)/$(ARCH_DIR)/%.o
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@
+$(SPLIT_TEST_GEN_OBJ): $(OUTPUT)/$(ARCH_DIR)/%.o: $(ARCH_DIR)/%.c
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
+
+EXTRA_CLEAN += $(GEN_HDRS) \
+ $(LIBKVM_OBJS) \
+ $(SPLIT_TEST_GEN_OBJ) \
+ $(TEST_DEP_FILES) \
+ $(TEST_GEN_OBJ) \
+ cscope.*
+
+$(LIBKVM_C_OBJ): $(OUTPUT)/%.o: %.c $(GEN_HDRS)
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
+
+$(LIBKVM_S_OBJ): $(OUTPUT)/%.o: %.S $(GEN_HDRS)
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
+
+# Compile the string overrides as freestanding to prevent the compiler from
+# generating self-referential code, e.g. without "freestanding" the compiler may
+# "optimize" memcmp() by invoking memcmp(), thus causing infinite recursion.
+$(LIBKVM_STRING_OBJ): $(OUTPUT)/%.o: %.c
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@
+
+$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))))
+$(SPLIT_TEST_GEN_OBJ): $(GEN_HDRS)
+$(TEST_GEN_PROGS): $(LIBKVM_OBJS)
+$(TEST_GEN_PROGS_EXTENDED): $(LIBKVM_OBJS)
+$(TEST_GEN_OBJ): $(GEN_HDRS)
+
+cscope: include_paths = $(LINUX_TOOL_INCLUDE) $(LINUX_HDR_PATH) include lib ..
+cscope:
+ $(RM) cscope.*
+ (find $(include_paths) -name '*.h' \
+ -exec realpath --relative-base=$(PWD) {} \;; \
+ find . -name '*.c' \
+ -exec realpath --relative-base=$(PWD) {} \;) | sort -u > cscope.files
+ cscope -b
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (13 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 14/16] KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 8:20 ` Muhammad Usama Anjum
` (2 more replies)
2024-11-28 0:55 ` [PATCH v4 16/16] KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR Sean Christopherson
` (2 subsequent siblings)
17 siblings, 3 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Use the kernel's canonical $(ARCH) paths instead of the raw target triple
for KVM selftests directories. KVM selftests are quite nearly the only
place in the entire kernel that using the target triple for directories,
tools/testing/selftests/drivers/s390x being the lone holdout.
Using the kernel's preferred nomenclature eliminates the minor, but
annoying, friction of having to translate to KVM's selftests directories,
e.g. for pattern matching, opening files, running selftests, etc.
Opportunsitically delete file comments that reference the full path of the
file, as they are obviously prone to becoming stale, and serve no known
purpose.
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
MAINTAINERS | 12 +-
tools/testing/selftests/kvm/Makefile | 10 +-
tools/testing/selftests/kvm/Makefile.kvm | 320 +++++++++---------
.../kvm/{aarch64 => arm64}/aarch32_id_regs.c | 0
.../kvm/{aarch64 => arm64}/arch_timer.c | 0
.../arch_timer_edge_cases.c | 0
.../kvm/{aarch64 => arm64}/debug-exceptions.c | 0
.../kvm/{aarch64 => arm64}/get-reg-list.c | 0
.../kvm/{aarch64 => arm64}/hypercalls.c | 0
.../kvm/{aarch64 => arm64}/mmio_abort.c | 0
.../kvm/{aarch64 => arm64}/no-vgic-v3.c | 0
.../kvm/{aarch64 => arm64}/page_fault_test.c | 0
.../kvm/{aarch64 => arm64}/psci_test.c | 0
.../kvm/{aarch64 => arm64}/set_id_regs.c | 0
.../kvm/{aarch64 => arm64}/smccc_filter.c | 0
.../{aarch64 => arm64}/vcpu_width_config.c | 0
.../kvm/{aarch64 => arm64}/vgic_init.c | 0
.../kvm/{aarch64 => arm64}/vgic_irq.c | 0
.../kvm/{aarch64 => arm64}/vgic_lpi_stress.c | 0
.../{aarch64 => arm64}/vpmu_counter_access.c | 0
.../selftests/kvm/dirty_log_perf_test.c | 2 +-
.../include/{aarch64 => arm64}/arch_timer.h | 0
.../kvm/include/{aarch64 => arm64}/delay.h | 0
.../kvm/include/{aarch64 => arm64}/gic.h | 0
.../kvm/include/{aarch64 => arm64}/gic_v3.h | 0
.../include/{aarch64 => arm64}/gic_v3_its.h | 0
.../{aarch64 => arm64}/kvm_util_arch.h | 0
.../include/{aarch64 => arm64}/processor.h | 0
.../kvm/include/{aarch64 => arm64}/spinlock.h | 0
.../kvm/include/{aarch64 => arm64}/ucall.h | 0
.../kvm/include/{aarch64 => arm64}/vgic.h | 0
.../kvm/include/{s390x => s390}/debug_print.h | 0
.../{s390x => s390}/diag318_test_handler.h | 0
.../kvm/include/{s390x => s390}/facility.h | 0
.../include/{s390x => s390}/kvm_util_arch.h | 0
.../kvm/include/{s390x => s390}/processor.h | 0
.../kvm/include/{s390x => s390}/sie.h | 0
.../kvm/include/{s390x => s390}/ucall.h | 0
.../kvm/include/{x86_64 => x86}/apic.h | 2 -
.../kvm/include/{x86_64 => x86}/evmcs.h | 3 -
.../kvm/include/{x86_64 => x86}/hyperv.h | 3 -
.../include/{x86_64 => x86}/kvm_util_arch.h | 0
.../kvm/include/{x86_64 => x86}/mce.h | 2 -
.../kvm/include/{x86_64 => x86}/pmu.h | 0
.../kvm/include/{x86_64 => x86}/processor.h | 2 -
.../kvm/include/{x86_64 => x86}/sev.h | 0
.../kvm/include/{x86_64 => x86}/svm.h | 6 -
.../kvm/include/{x86_64 => x86}/svm_util.h | 3 -
.../kvm/include/{x86_64 => x86}/ucall.h | 0
.../kvm/include/{x86_64 => x86}/vmx.h | 2 -
.../kvm/lib/{aarch64 => arm64}/gic.c | 0
.../kvm/lib/{aarch64 => arm64}/gic_private.h | 0
.../kvm/lib/{aarch64 => arm64}/gic_v3.c | 0
.../kvm/lib/{aarch64 => arm64}/gic_v3_its.c | 0
.../kvm/lib/{aarch64 => arm64}/handlers.S | 0
.../kvm/lib/{aarch64 => arm64}/processor.c | 0
.../kvm/lib/{aarch64 => arm64}/spinlock.c | 0
.../kvm/lib/{aarch64 => arm64}/ucall.c | 0
.../kvm/lib/{aarch64 => arm64}/vgic.c | 0
.../{s390x => s390}/diag318_test_handler.c | 0
.../kvm/lib/{s390x => s390}/facility.c | 0
.../kvm/lib/{s390x => s390}/processor.c | 0
.../selftests/kvm/lib/{s390x => s390}/ucall.c | 0
.../selftests/kvm/lib/{x86_64 => x86}/apic.c | 0
.../kvm/lib/{x86_64 => x86}/handlers.S | 0
.../kvm/lib/{x86_64 => x86}/hyperv.c | 0
.../kvm/lib/{x86_64 => x86}/memstress.c | 2 +-
.../selftests/kvm/lib/{x86_64 => x86}/pmu.c | 0
.../kvm/lib/{x86_64 => x86}/processor.c | 2 -
.../selftests/kvm/lib/{x86_64 => x86}/sev.c | 0
.../selftests/kvm/lib/{x86_64 => x86}/svm.c | 1 -
.../selftests/kvm/lib/{x86_64 => x86}/ucall.c | 0
.../selftests/kvm/lib/{x86_64 => x86}/vmx.c | 2 -
.../selftests/kvm/{s390x => s390}/cmma_test.c | 0
.../selftests/kvm/{s390x => s390}/config | 0
.../{s390x => s390}/cpumodel_subfuncs_test.c | 0
.../kvm/{s390x => s390}/debug_test.c | 0
.../selftests/kvm/{s390x => s390}/memop.c | 0
.../selftests/kvm/{s390x => s390}/resets.c | 0
.../{s390x => s390}/shared_zeropage_test.c | 0
.../kvm/{s390x => s390}/sync_regs_test.c | 0
.../selftests/kvm/{s390x => s390}/tprot.c | 0
.../kvm/{s390x => s390}/ucontrol_test.c | 0
.../selftests/kvm/set_memory_region_test.c | 6 +-
.../selftests/kvm/{x86_64 => x86}/amx_test.c | 0
.../kvm/{x86_64 => x86}/apic_bus_clock_test.c | 0
.../kvm/{x86_64 => x86}/cpuid_test.c | 0
.../kvm/{x86_64 => x86}/cr4_cpuid_sync_test.c | 0
.../kvm/{x86_64 => x86}/debug_regs.c | 0
.../dirty_log_page_splitting_test.c | 0
.../exit_on_emulation_failure_test.c | 0
.../kvm/{x86_64 => x86}/feature_msrs_test.c | 0
.../kvm/{x86_64 => x86}/fix_hypercall_test.c | 0
.../kvm/{x86_64 => x86}/flds_emulation.h | 0
.../kvm/{x86_64 => x86}/hwcr_msr_test.c | 0
.../kvm/{x86_64 => x86}/hyperv_clock.c | 0
.../kvm/{x86_64 => x86}/hyperv_cpuid.c | 0
.../kvm/{x86_64 => x86}/hyperv_evmcs.c | 0
.../hyperv_extended_hypercalls.c | 0
.../kvm/{x86_64 => x86}/hyperv_features.c | 0
.../kvm/{x86_64 => x86}/hyperv_ipi.c | 0
.../kvm/{x86_64 => x86}/hyperv_svm_test.c | 0
.../kvm/{x86_64 => x86}/hyperv_tlb_flush.c | 0
.../kvm/{x86_64 => x86}/kvm_clock_test.c | 0
.../kvm/{x86_64 => x86}/kvm_pv_test.c | 0
.../kvm/{x86_64 => x86}/max_vcpuid_cap_test.c | 0
.../kvm/{x86_64 => x86}/monitor_mwait_test.c | 0
.../{x86_64 => x86}/nested_exceptions_test.c | 0
.../kvm/{x86_64 => x86}/nx_huge_pages_test.c | 0
.../kvm/{x86_64 => x86}/nx_huge_pages_test.sh | 0
.../kvm/{x86_64 => x86}/platform_info_test.c | 0
.../kvm/{x86_64 => x86}/pmu_counters_test.c | 0
.../{x86_64 => x86}/pmu_event_filter_test.c | 0
.../private_mem_conversions_test.c | 0
.../private_mem_kvm_exits_test.c | 0
.../{x86_64 => x86}/recalc_apic_map_test.c | 0
.../kvm/{x86_64 => x86}/set_boot_cpu_id.c | 0
.../kvm/{x86_64 => x86}/set_sregs_test.c | 0
.../kvm/{x86_64 => x86}/sev_init2_tests.c | 0
.../kvm/{x86_64 => x86}/sev_migrate_tests.c | 0
.../kvm/{x86_64 => x86}/sev_smoke_test.c | 0
.../smaller_maxphyaddr_emulation_test.c | 0
.../selftests/kvm/{x86_64 => x86}/smm_test.c | 0
.../kvm/{x86_64 => x86}/state_test.c | 0
.../kvm/{x86_64 => x86}/svm_int_ctl_test.c | 0
.../svm_nested_shutdown_test.c | 0
.../svm_nested_soft_inject_test.c | 0
.../kvm/{x86_64 => x86}/svm_vmcall_test.c | 0
.../kvm/{x86_64 => x86}/sync_regs_test.c | 0
.../{x86_64 => x86}/triple_fault_event_test.c | 0
.../kvm/{x86_64 => x86}/tsc_msrs_test.c | 0
.../kvm/{x86_64 => x86}/tsc_scaling_sync.c | 0
.../kvm/{x86_64 => x86}/ucna_injection_test.c | 0
.../kvm/{x86_64 => x86}/userspace_io_test.c | 0
.../{x86_64 => x86}/userspace_msr_exit_test.c | 0
.../{x86_64 => x86}/vmx_apic_access_test.c | 0
.../vmx_close_while_nested_test.c | 0
.../kvm/{x86_64 => x86}/vmx_dirty_log_test.c | 0
.../vmx_exception_with_invalid_guest_state.c | 0
.../vmx_invalid_nested_guest_state.c | 0
.../kvm/{x86_64 => x86}/vmx_msrs_test.c | 0
.../vmx_nested_tsc_scaling_test.c | 0
.../kvm/{x86_64 => x86}/vmx_pmu_caps_test.c | 0
.../vmx_preemption_timer_test.c | 0
.../vmx_set_nested_state_test.c | 0
.../kvm/{x86_64 => x86}/vmx_tsc_adjust_test.c | 0
.../kvm/{x86_64 => x86}/xapic_ipi_test.c | 0
.../kvm/{x86_64 => x86}/xapic_state_test.c | 0
.../kvm/{x86_64 => x86}/xcr0_cpuid_test.c | 0
.../kvm/{x86_64 => x86}/xen_shinfo_test.c | 0
.../kvm/{x86_64 => x86}/xen_vmcall_test.c | 0
.../kvm/{x86_64 => x86}/xss_msr_test.c | 0
152 files changed, 172 insertions(+), 208 deletions(-)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/aarch32_id_regs.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer_edge_cases.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/debug-exceptions.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/get-reg-list.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/hypercalls.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/mmio_abort.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/no-vgic-v3.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/page_fault_test.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/psci_test.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/set_id_regs.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/smccc_filter.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vcpu_width_config.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_init.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_irq.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_lpi_stress.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vpmu_counter_access.c (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/arch_timer.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/delay.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3_its.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/kvm_util_arch.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/processor.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/spinlock.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/ucall.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/vgic.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/debug_print.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/diag318_test_handler.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/facility.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/kvm_util_arch.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/processor.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/sie.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/ucall.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/apic.h (98%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/evmcs.h (99%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/hyperv.h (99%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/kvm_util_arch.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/mce.h (94%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/pmu.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/processor.h (99%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/sev.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/svm.h (98%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/svm_util.h (94%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/ucall.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/vmx.h (99%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_private.h (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3_its.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/handlers.S (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/processor.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/spinlock.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/ucall.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/vgic.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/diag318_test_handler.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/facility.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/processor.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/ucall.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/apic.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/handlers.S (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/hyperv.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/memstress.c (98%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/pmu.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/processor.c (99%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/sev.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/svm.c (99%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/ucall.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/vmx.c (99%)
rename tools/testing/selftests/kvm/{s390x => s390}/cmma_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/config (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/cpumodel_subfuncs_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/debug_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/memop.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/resets.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/shared_zeropage_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/sync_regs_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/tprot.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/ucontrol_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/amx_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/apic_bus_clock_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/cpuid_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/cr4_cpuid_sync_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/debug_regs.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/dirty_log_page_splitting_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/exit_on_emulation_failure_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/feature_msrs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/fix_hypercall_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/flds_emulation.h (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hwcr_msr_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_clock.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_cpuid.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_evmcs.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_extended_hypercalls.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_features.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_ipi.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_svm_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_tlb_flush.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/kvm_clock_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/kvm_pv_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/max_vcpuid_cap_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/monitor_mwait_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/nested_exceptions_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.sh (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/platform_info_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/pmu_counters_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/pmu_event_filter_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_conversions_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_kvm_exits_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/recalc_apic_map_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/set_boot_cpu_id.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/set_sregs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_init2_tests.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_migrate_tests.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_smoke_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/smaller_maxphyaddr_emulation_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/smm_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/state_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_int_ctl_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_shutdown_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_soft_inject_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_vmcall_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sync_regs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/triple_fault_event_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/tsc_msrs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/tsc_scaling_sync.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/ucna_injection_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/userspace_io_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/userspace_msr_exit_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_apic_access_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_close_while_nested_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_dirty_log_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_exception_with_invalid_guest_state.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_invalid_nested_guest_state.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_msrs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_nested_tsc_scaling_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_pmu_caps_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_preemption_timer_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_set_nested_state_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_tsc_adjust_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xapic_ipi_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xapic_state_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xcr0_cpuid_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xen_shinfo_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xen_vmcall_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xss_msr_test.c (100%)
diff --git a/MAINTAINERS b/MAINTAINERS
index 21fdaa19229a..c2939c8f7ce4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12461,8 +12461,8 @@ F: arch/arm64/include/asm/kvm*
F: arch/arm64/include/uapi/asm/kvm*
F: arch/arm64/kvm/
F: include/kvm/arm_*
-F: tools/testing/selftests/kvm/*/aarch64/
-F: tools/testing/selftests/kvm/aarch64/
+F: tools/testing/selftests/kvm/*/arm64/
+F: tools/testing/selftests/kvm/arm64/
KERNEL VIRTUAL MACHINE FOR LOONGARCH (KVM/LoongArch)
M: Tianrui Zhao <zhaotianrui@loongson.cn>
@@ -12533,8 +12533,8 @@ F: arch/s390/kvm/
F: arch/s390/mm/gmap.c
F: drivers/s390/char/uvdevice.c
F: tools/testing/selftests/drivers/s390x/uvdevice/
-F: tools/testing/selftests/kvm/*/s390x/
-F: tools/testing/selftests/kvm/s390x/
+F: tools/testing/selftests/kvm/*/s390/
+F: tools/testing/selftests/kvm/s390/
KERNEL VIRTUAL MACHINE FOR X86 (KVM/x86)
M: Sean Christopherson <seanjc@google.com>
@@ -12551,8 +12551,8 @@ F: arch/x86/include/uapi/asm/svm.h
F: arch/x86/include/uapi/asm/vmx.h
F: arch/x86/kvm/
F: arch/x86/kvm/*/
-F: tools/testing/selftests/kvm/*/x86_64/
-F: tools/testing/selftests/kvm/x86_64/
+F: tools/testing/selftests/kvm/*/x86/
+F: tools/testing/selftests/kvm/x86/
KERNFS
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
index 7b33464bf8cc..9bc2eba1af1c 100644
--- a/tools/testing/selftests/kvm/Makefile
+++ b/tools/testing/selftests/kvm/Makefile
@@ -4,16 +4,12 @@ include $(top_srcdir)/scripts/subarch.include
ARCH ?= $(SUBARCH)
ifeq ($(ARCH),$(filter $(ARCH),arm64 s390 riscv x86 x86_64))
-ifeq ($(ARCH),x86)
- ARCH_DIR := x86_64
-else ifeq ($(ARCH),arm64)
- ARCH_DIR := aarch64
-else ifeq ($(ARCH),s390)
- ARCH_DIR := s390x
+# Top-level selftests allows ARCH=x86_64 :-(
+ifeq ($(ARCH),x86_64)
+ ARCH_DIR := x86
else
ARCH_DIR := $(ARCH)
endif
-
include Makefile.kvm
else
# Empty targets for unsupported architectures
diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index e988a72f8c20..9888dd6bb483 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -18,177 +18,177 @@ LIBKVM += lib/userfaultfd_util.c
LIBKVM_STRING += lib/string_override.c
-LIBKVM_x86_64 += lib/x86_64/apic.c
-LIBKVM_x86_64 += lib/x86_64/handlers.S
-LIBKVM_x86_64 += lib/x86_64/hyperv.c
-LIBKVM_x86_64 += lib/x86_64/memstress.c
-LIBKVM_x86_64 += lib/x86_64/pmu.c
-LIBKVM_x86_64 += lib/x86_64/processor.c
-LIBKVM_x86_64 += lib/x86_64/sev.c
-LIBKVM_x86_64 += lib/x86_64/svm.c
-LIBKVM_x86_64 += lib/x86_64/ucall.c
-LIBKVM_x86_64 += lib/x86_64/vmx.c
+LIBKVM_x86 += lib/x86/apic.c
+LIBKVM_x86 += lib/x86/handlers.S
+LIBKVM_x86 += lib/x86/hyperv.c
+LIBKVM_x86 += lib/x86/memstress.c
+LIBKVM_x86 += lib/x86/pmu.c
+LIBKVM_x86 += lib/x86/processor.c
+LIBKVM_x86 += lib/x86/sev.c
+LIBKVM_x86 += lib/x86/svm.c
+LIBKVM_x86 += lib/x86/ucall.c
+LIBKVM_x86 += lib/x86/vmx.c
-LIBKVM_aarch64 += lib/aarch64/gic.c
-LIBKVM_aarch64 += lib/aarch64/gic_v3.c
-LIBKVM_aarch64 += lib/aarch64/gic_v3_its.c
-LIBKVM_aarch64 += lib/aarch64/handlers.S
-LIBKVM_aarch64 += lib/aarch64/processor.c
-LIBKVM_aarch64 += lib/aarch64/spinlock.c
-LIBKVM_aarch64 += lib/aarch64/ucall.c
-LIBKVM_aarch64 += lib/aarch64/vgic.c
+LIBKVM_arm64 += lib/arm64/gic.c
+LIBKVM_arm64 += lib/arm64/gic_v3.c
+LIBKVM_arm64 += lib/arm64/gic_v3_its.c
+LIBKVM_arm64 += lib/arm64/handlers.S
+LIBKVM_arm64 += lib/arm64/processor.c
+LIBKVM_arm64 += lib/arm64/spinlock.c
+LIBKVM_arm64 += lib/arm64/ucall.c
+LIBKVM_arm64 += lib/arm64/vgic.c
-LIBKVM_s390x += lib/s390x/diag318_test_handler.c
-LIBKVM_s390x += lib/s390x/processor.c
-LIBKVM_s390x += lib/s390x/ucall.c
-LIBKVM_s390x += lib/s390x/facility.c
+LIBKVM_s390 += lib/s390/diag318_test_handler.c
+LIBKVM_s390 += lib/s390/processor.c
+LIBKVM_s390 += lib/s390/ucall.c
+LIBKVM_s390 += lib/s390/facility.c
LIBKVM_riscv += lib/riscv/handlers.S
LIBKVM_riscv += lib/riscv/processor.c
LIBKVM_riscv += lib/riscv/ucall.c
# Non-compiled test targets
-TEST_PROGS_x86_64 += x86_64/nx_huge_pages_test.sh
+TEST_PROGS_x86 += x86/nx_huge_pages_test.sh
# Compiled test targets
-TEST_GEN_PROGS_x86_64 = x86_64/cpuid_test
-TEST_GEN_PROGS_x86_64 += x86_64/cr4_cpuid_sync_test
-TEST_GEN_PROGS_x86_64 += x86_64/dirty_log_page_splitting_test
-TEST_GEN_PROGS_x86_64 += x86_64/feature_msrs_test
-TEST_GEN_PROGS_x86_64 += x86_64/exit_on_emulation_failure_test
-TEST_GEN_PROGS_x86_64 += x86_64/fix_hypercall_test
-TEST_GEN_PROGS_x86_64 += x86_64/hwcr_msr_test
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_clock
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_cpuid
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_evmcs
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_extended_hypercalls
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_features
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_ipi
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_svm_test
-TEST_GEN_PROGS_x86_64 += x86_64/hyperv_tlb_flush
-TEST_GEN_PROGS_x86_64 += x86_64/kvm_clock_test
-TEST_GEN_PROGS_x86_64 += x86_64/kvm_pv_test
-TEST_GEN_PROGS_x86_64 += x86_64/monitor_mwait_test
-TEST_GEN_PROGS_x86_64 += x86_64/nested_exceptions_test
-TEST_GEN_PROGS_x86_64 += x86_64/platform_info_test
-TEST_GEN_PROGS_x86_64 += x86_64/pmu_counters_test
-TEST_GEN_PROGS_x86_64 += x86_64/pmu_event_filter_test
-TEST_GEN_PROGS_x86_64 += x86_64/private_mem_conversions_test
-TEST_GEN_PROGS_x86_64 += x86_64/private_mem_kvm_exits_test
-TEST_GEN_PROGS_x86_64 += x86_64/set_boot_cpu_id
-TEST_GEN_PROGS_x86_64 += x86_64/set_sregs_test
-TEST_GEN_PROGS_x86_64 += x86_64/smaller_maxphyaddr_emulation_test
-TEST_GEN_PROGS_x86_64 += x86_64/smm_test
-TEST_GEN_PROGS_x86_64 += x86_64/state_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_preemption_timer_test
-TEST_GEN_PROGS_x86_64 += x86_64/svm_vmcall_test
-TEST_GEN_PROGS_x86_64 += x86_64/svm_int_ctl_test
-TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_shutdown_test
-TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_soft_inject_test
-TEST_GEN_PROGS_x86_64 += x86_64/tsc_scaling_sync
-TEST_GEN_PROGS_x86_64 += x86_64/sync_regs_test
-TEST_GEN_PROGS_x86_64 += x86_64/ucna_injection_test
-TEST_GEN_PROGS_x86_64 += x86_64/userspace_io_test
-TEST_GEN_PROGS_x86_64 += x86_64/userspace_msr_exit_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_apic_access_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_close_while_nested_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_dirty_log_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_exception_with_invalid_guest_state
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_msrs_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_invalid_nested_guest_state
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_set_nested_state_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_tsc_adjust_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_nested_tsc_scaling_test
-TEST_GEN_PROGS_x86_64 += x86_64/apic_bus_clock_test
-TEST_GEN_PROGS_x86_64 += x86_64/xapic_ipi_test
-TEST_GEN_PROGS_x86_64 += x86_64/xapic_state_test
-TEST_GEN_PROGS_x86_64 += x86_64/xcr0_cpuid_test
-TEST_GEN_PROGS_x86_64 += x86_64/xss_msr_test
-TEST_GEN_PROGS_x86_64 += x86_64/debug_regs
-TEST_GEN_PROGS_x86_64 += x86_64/tsc_msrs_test
-TEST_GEN_PROGS_x86_64 += x86_64/vmx_pmu_caps_test
-TEST_GEN_PROGS_x86_64 += x86_64/xen_shinfo_test
-TEST_GEN_PROGS_x86_64 += x86_64/xen_vmcall_test
-TEST_GEN_PROGS_x86_64 += x86_64/sev_init2_tests
-TEST_GEN_PROGS_x86_64 += x86_64/sev_migrate_tests
-TEST_GEN_PROGS_x86_64 += x86_64/sev_smoke_test
-TEST_GEN_PROGS_x86_64 += x86_64/amx_test
-TEST_GEN_PROGS_x86_64 += x86_64/max_vcpuid_cap_test
-TEST_GEN_PROGS_x86_64 += x86_64/triple_fault_event_test
-TEST_GEN_PROGS_x86_64 += x86_64/recalc_apic_map_test
-TEST_GEN_PROGS_x86_64 += access_tracking_perf_test
-TEST_GEN_PROGS_x86_64 += coalesced_io_test
-TEST_GEN_PROGS_x86_64 += demand_paging_test
-TEST_GEN_PROGS_x86_64 += dirty_log_test
-TEST_GEN_PROGS_x86_64 += dirty_log_perf_test
-TEST_GEN_PROGS_x86_64 += guest_memfd_test
-TEST_GEN_PROGS_x86_64 += guest_print_test
-TEST_GEN_PROGS_x86_64 += hardware_disable_test
-TEST_GEN_PROGS_x86_64 += kvm_create_max_vcpus
-TEST_GEN_PROGS_x86_64 += kvm_page_table_test
-TEST_GEN_PROGS_x86_64 += mmu_stress_test
-TEST_GEN_PROGS_x86_64 += memslot_modification_stress_test
-TEST_GEN_PROGS_x86_64 += memslot_perf_test
-TEST_GEN_PROGS_x86_64 += rseq_test
-TEST_GEN_PROGS_x86_64 += set_memory_region_test
-TEST_GEN_PROGS_x86_64 += steal_time
-TEST_GEN_PROGS_x86_64 += kvm_binary_stats_test
-TEST_GEN_PROGS_x86_64 += system_counter_offset_test
-TEST_GEN_PROGS_x86_64 += pre_fault_memory_test
+TEST_GEN_PROGS_x86 = x86/cpuid_test
+TEST_GEN_PROGS_x86 += x86/cr4_cpuid_sync_test
+TEST_GEN_PROGS_x86 += x86/dirty_log_page_splitting_test
+TEST_GEN_PROGS_x86 += x86/feature_msrs_test
+TEST_GEN_PROGS_x86 += x86/exit_on_emulation_failure_test
+TEST_GEN_PROGS_x86 += x86/fix_hypercall_test
+TEST_GEN_PROGS_x86 += x86/hwcr_msr_test
+TEST_GEN_PROGS_x86 += x86/hyperv_clock
+TEST_GEN_PROGS_x86 += x86/hyperv_cpuid
+TEST_GEN_PROGS_x86 += x86/hyperv_evmcs
+TEST_GEN_PROGS_x86 += x86/hyperv_extended_hypercalls
+TEST_GEN_PROGS_x86 += x86/hyperv_features
+TEST_GEN_PROGS_x86 += x86/hyperv_ipi
+TEST_GEN_PROGS_x86 += x86/hyperv_svm_test
+TEST_GEN_PROGS_x86 += x86/hyperv_tlb_flush
+TEST_GEN_PROGS_x86 += x86/kvm_clock_test
+TEST_GEN_PROGS_x86 += x86/kvm_pv_test
+TEST_GEN_PROGS_x86 += x86/monitor_mwait_test
+TEST_GEN_PROGS_x86 += x86/nested_exceptions_test
+TEST_GEN_PROGS_x86 += x86/platform_info_test
+TEST_GEN_PROGS_x86 += x86/pmu_counters_test
+TEST_GEN_PROGS_x86 += x86/pmu_event_filter_test
+TEST_GEN_PROGS_x86 += x86/private_mem_conversions_test
+TEST_GEN_PROGS_x86 += x86/private_mem_kvm_exits_test
+TEST_GEN_PROGS_x86 += x86/set_boot_cpu_id
+TEST_GEN_PROGS_x86 += x86/set_sregs_test
+TEST_GEN_PROGS_x86 += x86/smaller_maxphyaddr_emulation_test
+TEST_GEN_PROGS_x86 += x86/smm_test
+TEST_GEN_PROGS_x86 += x86/state_test
+TEST_GEN_PROGS_x86 += x86/vmx_preemption_timer_test
+TEST_GEN_PROGS_x86 += x86/svm_vmcall_test
+TEST_GEN_PROGS_x86 += x86/svm_int_ctl_test
+TEST_GEN_PROGS_x86 += x86/svm_nested_shutdown_test
+TEST_GEN_PROGS_x86 += x86/svm_nested_soft_inject_test
+TEST_GEN_PROGS_x86 += x86/tsc_scaling_sync
+TEST_GEN_PROGS_x86 += x86/sync_regs_test
+TEST_GEN_PROGS_x86 += x86/ucna_injection_test
+TEST_GEN_PROGS_x86 += x86/userspace_io_test
+TEST_GEN_PROGS_x86 += x86/userspace_msr_exit_test
+TEST_GEN_PROGS_x86 += x86/vmx_apic_access_test
+TEST_GEN_PROGS_x86 += x86/vmx_close_while_nested_test
+TEST_GEN_PROGS_x86 += x86/vmx_dirty_log_test
+TEST_GEN_PROGS_x86 += x86/vmx_exception_with_invalid_guest_state
+TEST_GEN_PROGS_x86 += x86/vmx_msrs_test
+TEST_GEN_PROGS_x86 += x86/vmx_invalid_nested_guest_state
+TEST_GEN_PROGS_x86 += x86/vmx_set_nested_state_test
+TEST_GEN_PROGS_x86 += x86/vmx_tsc_adjust_test
+TEST_GEN_PROGS_x86 += x86/vmx_nested_tsc_scaling_test
+TEST_GEN_PROGS_x86 += x86/apic_bus_clock_test
+TEST_GEN_PROGS_x86 += x86/xapic_ipi_test
+TEST_GEN_PROGS_x86 += x86/xapic_state_test
+TEST_GEN_PROGS_x86 += x86/xcr0_cpuid_test
+TEST_GEN_PROGS_x86 += x86/xss_msr_test
+TEST_GEN_PROGS_x86 += x86/debug_regs
+TEST_GEN_PROGS_x86 += x86/tsc_msrs_test
+TEST_GEN_PROGS_x86 += x86/vmx_pmu_caps_test
+TEST_GEN_PROGS_x86 += x86/xen_shinfo_test
+TEST_GEN_PROGS_x86 += x86/xen_vmcall_test
+TEST_GEN_PROGS_x86 += x86/sev_init2_tests
+TEST_GEN_PROGS_x86 += x86/sev_migrate_tests
+TEST_GEN_PROGS_x86 += x86/sev_smoke_test
+TEST_GEN_PROGS_x86 += x86/amx_test
+TEST_GEN_PROGS_x86 += x86/max_vcpuid_cap_test
+TEST_GEN_PROGS_x86 += x86/triple_fault_event_test
+TEST_GEN_PROGS_x86 += x86/recalc_apic_map_test
+TEST_GEN_PROGS_x86 += access_tracking_perf_test
+TEST_GEN_PROGS_x86 += coalesced_io_test
+TEST_GEN_PROGS_x86 += demand_paging_test
+TEST_GEN_PROGS_x86 += dirty_log_test
+TEST_GEN_PROGS_x86 += dirty_log_perf_test
+TEST_GEN_PROGS_x86 += guest_memfd_test
+TEST_GEN_PROGS_x86 += guest_print_test
+TEST_GEN_PROGS_x86 += hardware_disable_test
+TEST_GEN_PROGS_x86 += kvm_create_max_vcpus
+TEST_GEN_PROGS_x86 += kvm_page_table_test
+TEST_GEN_PROGS_x86 += memslot_modification_stress_test
+TEST_GEN_PROGS_x86 += memslot_perf_test
+TEST_GEN_PROGS_x86 += mmu_stress_test
+TEST_GEN_PROGS_x86 += rseq_test
+TEST_GEN_PROGS_x86 += set_memory_region_test
+TEST_GEN_PROGS_x86 += steal_time
+TEST_GEN_PROGS_x86 += kvm_binary_stats_test
+TEST_GEN_PROGS_x86 += system_counter_offset_test
+TEST_GEN_PROGS_x86 += pre_fault_memory_test
# Compiled outputs used by test targets
-TEST_GEN_PROGS_EXTENDED_x86_64 += x86_64/nx_huge_pages_test
+TEST_GEN_PROGS_EXTENDED_x86 += x86/nx_huge_pages_test
-TEST_GEN_PROGS_aarch64 += aarch64/aarch32_id_regs
-TEST_GEN_PROGS_aarch64 += aarch64/arch_timer_edge_cases
-TEST_GEN_PROGS_aarch64 += aarch64/debug-exceptions
-TEST_GEN_PROGS_aarch64 += aarch64/hypercalls
-TEST_GEN_PROGS_aarch64 += aarch64/mmio_abort
-TEST_GEN_PROGS_aarch64 += aarch64/page_fault_test
-TEST_GEN_PROGS_aarch64 += aarch64/psci_test
-TEST_GEN_PROGS_aarch64 += aarch64/set_id_regs
-TEST_GEN_PROGS_aarch64 += aarch64/smccc_filter
-TEST_GEN_PROGS_aarch64 += aarch64/vcpu_width_config
-TEST_GEN_PROGS_aarch64 += aarch64/vgic_init
-TEST_GEN_PROGS_aarch64 += aarch64/vgic_irq
-TEST_GEN_PROGS_aarch64 += aarch64/vgic_lpi_stress
-TEST_GEN_PROGS_aarch64 += aarch64/vpmu_counter_access
-TEST_GEN_PROGS_aarch64 += aarch64/no-vgic-v3
-TEST_GEN_PROGS_aarch64 += access_tracking_perf_test
-TEST_GEN_PROGS_aarch64 += arch_timer
-TEST_GEN_PROGS_aarch64 += coalesced_io_test
-TEST_GEN_PROGS_aarch64 += demand_paging_test
-TEST_GEN_PROGS_aarch64 += dirty_log_test
-TEST_GEN_PROGS_aarch64 += dirty_log_perf_test
-TEST_GEN_PROGS_aarch64 += guest_print_test
-TEST_GEN_PROGS_aarch64 += get-reg-list
-TEST_GEN_PROGS_aarch64 += kvm_create_max_vcpus
-TEST_GEN_PROGS_aarch64 += kvm_page_table_test
-TEST_GEN_PROGS_aarch64 += memslot_modification_stress_test
-TEST_GEN_PROGS_aarch64 += memslot_perf_test
-TEST_GEN_PROGS_aarch64 += mmu_stress_test
-TEST_GEN_PROGS_aarch64 += rseq_test
-TEST_GEN_PROGS_aarch64 += set_memory_region_test
-TEST_GEN_PROGS_aarch64 += steal_time
-TEST_GEN_PROGS_aarch64 += kvm_binary_stats_test
+TEST_GEN_PROGS_arm64 += arm64/aarch32_id_regs
+TEST_GEN_PROGS_arm64 += arm64/arch_timer_edge_cases
+TEST_GEN_PROGS_arm64 += arm64/debug-exceptions
+TEST_GEN_PROGS_arm64 += arm64/hypercalls
+TEST_GEN_PROGS_arm64 += arm64/mmio_abort
+TEST_GEN_PROGS_arm64 += arm64/page_fault_test
+TEST_GEN_PROGS_arm64 += arm64/psci_test
+TEST_GEN_PROGS_arm64 += arm64/set_id_regs
+TEST_GEN_PROGS_arm64 += arm64/smccc_filter
+TEST_GEN_PROGS_arm64 += arm64/vcpu_width_config
+TEST_GEN_PROGS_arm64 += arm64/vgic_init
+TEST_GEN_PROGS_arm64 += arm64/vgic_irq
+TEST_GEN_PROGS_arm64 += arm64/vgic_lpi_stress
+TEST_GEN_PROGS_arm64 += arm64/vpmu_counter_access
+TEST_GEN_PROGS_arm64 += arm64/no-vgic-v3
+TEST_GEN_PROGS_arm64 += access_tracking_perf_test
+TEST_GEN_PROGS_arm64 += arch_timer
+TEST_GEN_PROGS_arm64 += coalesced_io_test
+TEST_GEN_PROGS_arm64 += demand_paging_test
+TEST_GEN_PROGS_arm64 += dirty_log_test
+TEST_GEN_PROGS_arm64 += dirty_log_perf_test
+TEST_GEN_PROGS_arm64 += guest_print_test
+TEST_GEN_PROGS_arm64 += get-reg-list
+TEST_GEN_PROGS_arm64 += kvm_create_max_vcpus
+TEST_GEN_PROGS_arm64 += kvm_page_table_test
+TEST_GEN_PROGS_arm64 += memslot_modification_stress_test
+TEST_GEN_PROGS_arm64 += memslot_perf_test
+TEST_GEN_PROGS_arm64 += mmu_stress_test
+TEST_GEN_PROGS_arm64 += rseq_test
+TEST_GEN_PROGS_arm64 += set_memory_region_test
+TEST_GEN_PROGS_arm64 += steal_time
+TEST_GEN_PROGS_arm64 += kvm_binary_stats_test
-TEST_GEN_PROGS_s390x = s390x/memop
-TEST_GEN_PROGS_s390x += s390x/resets
-TEST_GEN_PROGS_s390x += s390x/sync_regs_test
-TEST_GEN_PROGS_s390x += s390x/tprot
-TEST_GEN_PROGS_s390x += s390x/cmma_test
-TEST_GEN_PROGS_s390x += s390x/debug_test
-TEST_GEN_PROGS_s390x += s390x/cpumodel_subfuncs_test
-TEST_GEN_PROGS_s390x += s390x/shared_zeropage_test
-TEST_GEN_PROGS_s390x += s390x/ucontrol_test
-TEST_GEN_PROGS_s390x += demand_paging_test
-TEST_GEN_PROGS_s390x += dirty_log_test
-TEST_GEN_PROGS_s390x += guest_print_test
-TEST_GEN_PROGS_s390x += kvm_create_max_vcpus
-TEST_GEN_PROGS_s390x += kvm_page_table_test
-TEST_GEN_PROGS_s390x += rseq_test
-TEST_GEN_PROGS_s390x += set_memory_region_test
-TEST_GEN_PROGS_s390x += kvm_binary_stats_test
+TEST_GEN_PROGS_s390 = s390/memop
+TEST_GEN_PROGS_s390 += s390/resets
+TEST_GEN_PROGS_s390 += s390/sync_regs_test
+TEST_GEN_PROGS_s390 += s390/tprot
+TEST_GEN_PROGS_s390 += s390/cmma_test
+TEST_GEN_PROGS_s390 += s390/debug_test
+TEST_GEN_PROGS_s390 += s390/cpumodel_subfuncs_test
+TEST_GEN_PROGS_s390 += s390/shared_zeropage_test
+TEST_GEN_PROGS_s390 += s390/ucontrol_test
+TEST_GEN_PROGS_s390 += demand_paging_test
+TEST_GEN_PROGS_s390 += dirty_log_test
+TEST_GEN_PROGS_s390 += guest_print_test
+TEST_GEN_PROGS_s390 += kvm_create_max_vcpus
+TEST_GEN_PROGS_s390 += kvm_page_table_test
+TEST_GEN_PROGS_s390 += rseq_test
+TEST_GEN_PROGS_s390 += set_memory_region_test
+TEST_GEN_PROGS_s390 += kvm_binary_stats_test
TEST_GEN_PROGS_riscv += riscv/sbi_pmu_test
TEST_GEN_PROGS_riscv += riscv/ebreak_test
@@ -222,11 +222,7 @@ include ../lib.mk
INSTALL_HDR_PATH = $(top_srcdir)/usr
LINUX_HDR_PATH = $(INSTALL_HDR_PATH)/include/
LINUX_TOOL_INCLUDE = $(top_srcdir)/tools/include
-ifeq ($(ARCH),x86_64)
-LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/x86/include
-else
-LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH)/include
-endif
+LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH_DIR)/include
CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \
-Wno-gnu-variable-sized-type-not-at-end -MD -MP -DCONFIG_64BIT \
-fno-builtin-memcmp -fno-builtin-memcpy \
diff --git a/tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c b/tools/testing/selftests/kvm/arm64/aarch32_id_regs.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c
rename to tools/testing/selftests/kvm/arm64/aarch32_id_regs.c
diff --git a/tools/testing/selftests/kvm/aarch64/arch_timer.c b/tools/testing/selftests/kvm/arm64/arch_timer.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/arch_timer.c
rename to tools/testing/selftests/kvm/arm64/arch_timer.c
diff --git a/tools/testing/selftests/kvm/aarch64/arch_timer_edge_cases.c b/tools/testing/selftests/kvm/arm64/arch_timer_edge_cases.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/arch_timer_edge_cases.c
rename to tools/testing/selftests/kvm/arm64/arch_timer_edge_cases.c
diff --git a/tools/testing/selftests/kvm/aarch64/debug-exceptions.c b/tools/testing/selftests/kvm/arm64/debug-exceptions.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/debug-exceptions.c
rename to tools/testing/selftests/kvm/arm64/debug-exceptions.c
diff --git a/tools/testing/selftests/kvm/aarch64/get-reg-list.c b/tools/testing/selftests/kvm/arm64/get-reg-list.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/get-reg-list.c
rename to tools/testing/selftests/kvm/arm64/get-reg-list.c
diff --git a/tools/testing/selftests/kvm/aarch64/hypercalls.c b/tools/testing/selftests/kvm/arm64/hypercalls.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/hypercalls.c
rename to tools/testing/selftests/kvm/arm64/hypercalls.c
diff --git a/tools/testing/selftests/kvm/aarch64/mmio_abort.c b/tools/testing/selftests/kvm/arm64/mmio_abort.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/mmio_abort.c
rename to tools/testing/selftests/kvm/arm64/mmio_abort.c
diff --git a/tools/testing/selftests/kvm/aarch64/no-vgic-v3.c b/tools/testing/selftests/kvm/arm64/no-vgic-v3.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/no-vgic-v3.c
rename to tools/testing/selftests/kvm/arm64/no-vgic-v3.c
diff --git a/tools/testing/selftests/kvm/aarch64/page_fault_test.c b/tools/testing/selftests/kvm/arm64/page_fault_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/page_fault_test.c
rename to tools/testing/selftests/kvm/arm64/page_fault_test.c
diff --git a/tools/testing/selftests/kvm/aarch64/psci_test.c b/tools/testing/selftests/kvm/arm64/psci_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/psci_test.c
rename to tools/testing/selftests/kvm/arm64/psci_test.c
diff --git a/tools/testing/selftests/kvm/aarch64/set_id_regs.c b/tools/testing/selftests/kvm/arm64/set_id_regs.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/set_id_regs.c
rename to tools/testing/selftests/kvm/arm64/set_id_regs.c
diff --git a/tools/testing/selftests/kvm/aarch64/smccc_filter.c b/tools/testing/selftests/kvm/arm64/smccc_filter.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/smccc_filter.c
rename to tools/testing/selftests/kvm/arm64/smccc_filter.c
diff --git a/tools/testing/selftests/kvm/aarch64/vcpu_width_config.c b/tools/testing/selftests/kvm/arm64/vcpu_width_config.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/vcpu_width_config.c
rename to tools/testing/selftests/kvm/arm64/vcpu_width_config.c
diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testing/selftests/kvm/arm64/vgic_init.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/vgic_init.c
rename to tools/testing/selftests/kvm/arm64/vgic_init.c
diff --git a/tools/testing/selftests/kvm/aarch64/vgic_irq.c b/tools/testing/selftests/kvm/arm64/vgic_irq.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/vgic_irq.c
rename to tools/testing/selftests/kvm/arm64/vgic_irq.c
diff --git a/tools/testing/selftests/kvm/aarch64/vgic_lpi_stress.c b/tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/vgic_lpi_stress.c
rename to tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c
diff --git a/tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c b/tools/testing/selftests/kvm/arm64/vpmu_counter_access.c
similarity index 100%
rename from tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c
rename to tools/testing/selftests/kvm/arm64/vpmu_counter_access.c
diff --git a/tools/testing/selftests/kvm/dirty_log_perf_test.c b/tools/testing/selftests/kvm/dirty_log_perf_test.c
index 9f24303acb8c..e79817bd0e29 100644
--- a/tools/testing/selftests/kvm/dirty_log_perf_test.c
+++ b/tools/testing/selftests/kvm/dirty_log_perf_test.c
@@ -21,7 +21,7 @@
#include "ucall_common.h"
#ifdef __aarch64__
-#include "aarch64/vgic.h"
+#include "arm64/vgic.h"
static int gic_fd;
diff --git a/tools/testing/selftests/kvm/include/aarch64/arch_timer.h b/tools/testing/selftests/kvm/include/arm64/arch_timer.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/aarch64/arch_timer.h
rename to tools/testing/selftests/kvm/include/arm64/arch_timer.h
diff --git a/tools/testing/selftests/kvm/include/aarch64/delay.h b/tools/testing/selftests/kvm/include/arm64/delay.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/aarch64/delay.h
rename to tools/testing/selftests/kvm/include/arm64/delay.h
diff --git a/tools/testing/selftests/kvm/include/aarch64/gic.h b/tools/testing/selftests/kvm/include/arm64/gic.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/aarch64/gic.h
rename to tools/testing/selftests/kvm/include/arm64/gic.h
diff --git a/tools/testing/selftests/kvm/include/aarch64/gic_v3.h b/tools/testing/selftests/kvm/include/arm64/gic_v3.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/aarch64/gic_v3.h
rename to tools/testing/selftests/kvm/include/arm64/gic_v3.h
diff --git a/tools/testing/selftests/kvm/include/aarch64/gic_v3_its.h b/tools/testing/selftests/kvm/include/arm64/gic_v3_its.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/aarch64/gic_v3_its.h
rename to tools/testing/selftests/kvm/include/arm64/gic_v3_its.h
diff --git a/tools/testing/selftests/kvm/include/aarch64/kvm_util_arch.h b/tools/testing/selftests/kvm/include/arm64/kvm_util_arch.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/aarch64/kvm_util_arch.h
rename to tools/testing/selftests/kvm/include/arm64/kvm_util_arch.h
diff --git a/tools/testing/selftests/kvm/include/aarch64/processor.h b/tools/testing/selftests/kvm/include/arm64/processor.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/aarch64/processor.h
rename to tools/testing/selftests/kvm/include/arm64/processor.h
diff --git a/tools/testing/selftests/kvm/include/aarch64/spinlock.h b/tools/testing/selftests/kvm/include/arm64/spinlock.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/aarch64/spinlock.h
rename to tools/testing/selftests/kvm/include/arm64/spinlock.h
diff --git a/tools/testing/selftests/kvm/include/aarch64/ucall.h b/tools/testing/selftests/kvm/include/arm64/ucall.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/aarch64/ucall.h
rename to tools/testing/selftests/kvm/include/arm64/ucall.h
diff --git a/tools/testing/selftests/kvm/include/aarch64/vgic.h b/tools/testing/selftests/kvm/include/arm64/vgic.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/aarch64/vgic.h
rename to tools/testing/selftests/kvm/include/arm64/vgic.h
diff --git a/tools/testing/selftests/kvm/include/s390x/debug_print.h b/tools/testing/selftests/kvm/include/s390/debug_print.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/s390x/debug_print.h
rename to tools/testing/selftests/kvm/include/s390/debug_print.h
diff --git a/tools/testing/selftests/kvm/include/s390x/diag318_test_handler.h b/tools/testing/selftests/kvm/include/s390/diag318_test_handler.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/s390x/diag318_test_handler.h
rename to tools/testing/selftests/kvm/include/s390/diag318_test_handler.h
diff --git a/tools/testing/selftests/kvm/include/s390x/facility.h b/tools/testing/selftests/kvm/include/s390/facility.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/s390x/facility.h
rename to tools/testing/selftests/kvm/include/s390/facility.h
diff --git a/tools/testing/selftests/kvm/include/s390x/kvm_util_arch.h b/tools/testing/selftests/kvm/include/s390/kvm_util_arch.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/s390x/kvm_util_arch.h
rename to tools/testing/selftests/kvm/include/s390/kvm_util_arch.h
diff --git a/tools/testing/selftests/kvm/include/s390x/processor.h b/tools/testing/selftests/kvm/include/s390/processor.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/s390x/processor.h
rename to tools/testing/selftests/kvm/include/s390/processor.h
diff --git a/tools/testing/selftests/kvm/include/s390x/sie.h b/tools/testing/selftests/kvm/include/s390/sie.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/s390x/sie.h
rename to tools/testing/selftests/kvm/include/s390/sie.h
diff --git a/tools/testing/selftests/kvm/include/s390x/ucall.h b/tools/testing/selftests/kvm/include/s390/ucall.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/s390x/ucall.h
rename to tools/testing/selftests/kvm/include/s390/ucall.h
diff --git a/tools/testing/selftests/kvm/include/x86_64/apic.h b/tools/testing/selftests/kvm/include/x86/apic.h
similarity index 98%
rename from tools/testing/selftests/kvm/include/x86_64/apic.h
rename to tools/testing/selftests/kvm/include/x86/apic.h
index 51990094effd..80fe9f69b38d 100644
--- a/tools/testing/selftests/kvm/include/x86_64/apic.h
+++ b/tools/testing/selftests/kvm/include/x86/apic.h
@@ -1,7 +1,5 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
- * tools/testing/selftests/kvm/include/x86_64/apic.h
- *
* Copyright (C) 2021, Google LLC.
*/
diff --git a/tools/testing/selftests/kvm/include/x86_64/evmcs.h b/tools/testing/selftests/kvm/include/x86/evmcs.h
similarity index 99%
rename from tools/testing/selftests/kvm/include/x86_64/evmcs.h
rename to tools/testing/selftests/kvm/include/x86/evmcs.h
index 901caf0e0939..5a74bb30e2f8 100644
--- a/tools/testing/selftests/kvm/include/x86_64/evmcs.h
+++ b/tools/testing/selftests/kvm/include/x86/evmcs.h
@@ -1,9 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
- * tools/testing/selftests/kvm/include/x86_64/evmcs.h
- *
* Copyright (C) 2018, Red Hat, Inc.
- *
*/
#ifndef SELFTEST_KVM_EVMCS_H
diff --git a/tools/testing/selftests/kvm/include/x86_64/hyperv.h b/tools/testing/selftests/kvm/include/x86/hyperv.h
similarity index 99%
rename from tools/testing/selftests/kvm/include/x86_64/hyperv.h
rename to tools/testing/selftests/kvm/include/x86/hyperv.h
index 6849e2552f1b..f13e532be240 100644
--- a/tools/testing/selftests/kvm/include/x86_64/hyperv.h
+++ b/tools/testing/selftests/kvm/include/x86/hyperv.h
@@ -1,9 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
- * tools/testing/selftests/kvm/include/x86_64/hyperv.h
- *
* Copyright (C) 2021, Red Hat, Inc.
- *
*/
#ifndef SELFTEST_KVM_HYPERV_H
diff --git a/tools/testing/selftests/kvm/include/x86_64/kvm_util_arch.h b/tools/testing/selftests/kvm/include/x86/kvm_util_arch.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/x86_64/kvm_util_arch.h
rename to tools/testing/selftests/kvm/include/x86/kvm_util_arch.h
diff --git a/tools/testing/selftests/kvm/include/x86_64/mce.h b/tools/testing/selftests/kvm/include/x86/mce.h
similarity index 94%
rename from tools/testing/selftests/kvm/include/x86_64/mce.h
rename to tools/testing/selftests/kvm/include/x86/mce.h
index 6119321f3f5d..295f2d554754 100644
--- a/tools/testing/selftests/kvm/include/x86_64/mce.h
+++ b/tools/testing/selftests/kvm/include/x86/mce.h
@@ -1,7 +1,5 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
- * tools/testing/selftests/kvm/include/x86_64/mce.h
- *
* Copyright (C) 2022, Google LLC.
*/
diff --git a/tools/testing/selftests/kvm/include/x86_64/pmu.h b/tools/testing/selftests/kvm/include/x86/pmu.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/x86_64/pmu.h
rename to tools/testing/selftests/kvm/include/x86/pmu.h
diff --git a/tools/testing/selftests/kvm/include/x86_64/processor.h b/tools/testing/selftests/kvm/include/x86/processor.h
similarity index 99%
rename from tools/testing/selftests/kvm/include/x86_64/processor.h
rename to tools/testing/selftests/kvm/include/x86/processor.h
index 645200e95f89..9ec984cf8674 100644
--- a/tools/testing/selftests/kvm/include/x86_64/processor.h
+++ b/tools/testing/selftests/kvm/include/x86/processor.h
@@ -1,7 +1,5 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
- * tools/testing/selftests/kvm/include/x86_64/processor.h
- *
* Copyright (C) 2018, Google LLC.
*/
diff --git a/tools/testing/selftests/kvm/include/x86_64/sev.h b/tools/testing/selftests/kvm/include/x86/sev.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/x86_64/sev.h
rename to tools/testing/selftests/kvm/include/x86/sev.h
diff --git a/tools/testing/selftests/kvm/include/x86_64/svm.h b/tools/testing/selftests/kvm/include/x86/svm.h
similarity index 98%
rename from tools/testing/selftests/kvm/include/x86_64/svm.h
rename to tools/testing/selftests/kvm/include/x86/svm.h
index 4803e1056055..29cffd0a9181 100644
--- a/tools/testing/selftests/kvm/include/x86_64/svm.h
+++ b/tools/testing/selftests/kvm/include/x86/svm.h
@@ -1,10 +1,4 @@
/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * tools/testing/selftests/kvm/include/x86_64/svm.h
- * This is a copy of arch/x86/include/asm/svm.h
- *
- */
-
#ifndef SELFTEST_KVM_SVM_H
#define SELFTEST_KVM_SVM_H
diff --git a/tools/testing/selftests/kvm/include/x86_64/svm_util.h b/tools/testing/selftests/kvm/include/x86/svm_util.h
similarity index 94%
rename from tools/testing/selftests/kvm/include/x86_64/svm_util.h
rename to tools/testing/selftests/kvm/include/x86/svm_util.h
index 044f0f872ba9..b74c6dcddcbd 100644
--- a/tools/testing/selftests/kvm/include/x86_64/svm_util.h
+++ b/tools/testing/selftests/kvm/include/x86/svm_util.h
@@ -1,8 +1,5 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
- * tools/testing/selftests/kvm/include/x86_64/svm_utils.h
- * Header for nested SVM testing
- *
* Copyright (C) 2020, Red Hat, Inc.
*/
diff --git a/tools/testing/selftests/kvm/include/x86_64/ucall.h b/tools/testing/selftests/kvm/include/x86/ucall.h
similarity index 100%
rename from tools/testing/selftests/kvm/include/x86_64/ucall.h
rename to tools/testing/selftests/kvm/include/x86/ucall.h
diff --git a/tools/testing/selftests/kvm/include/x86_64/vmx.h b/tools/testing/selftests/kvm/include/x86/vmx.h
similarity index 99%
rename from tools/testing/selftests/kvm/include/x86_64/vmx.h
rename to tools/testing/selftests/kvm/include/x86/vmx.h
index 5f0c0a29c556..edb3c391b982 100644
--- a/tools/testing/selftests/kvm/include/x86_64/vmx.h
+++ b/tools/testing/selftests/kvm/include/x86/vmx.h
@@ -1,7 +1,5 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
- * tools/testing/selftests/kvm/include/x86_64/vmx.h
- *
* Copyright (C) 2018, Google LLC.
*/
diff --git a/tools/testing/selftests/kvm/lib/aarch64/gic.c b/tools/testing/selftests/kvm/lib/arm64/gic.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/aarch64/gic.c
rename to tools/testing/selftests/kvm/lib/arm64/gic.c
diff --git a/tools/testing/selftests/kvm/lib/aarch64/gic_private.h b/tools/testing/selftests/kvm/lib/arm64/gic_private.h
similarity index 100%
rename from tools/testing/selftests/kvm/lib/aarch64/gic_private.h
rename to tools/testing/selftests/kvm/lib/arm64/gic_private.h
diff --git a/tools/testing/selftests/kvm/lib/aarch64/gic_v3.c b/tools/testing/selftests/kvm/lib/arm64/gic_v3.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/aarch64/gic_v3.c
rename to tools/testing/selftests/kvm/lib/arm64/gic_v3.c
diff --git a/tools/testing/selftests/kvm/lib/aarch64/gic_v3_its.c b/tools/testing/selftests/kvm/lib/arm64/gic_v3_its.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/aarch64/gic_v3_its.c
rename to tools/testing/selftests/kvm/lib/arm64/gic_v3_its.c
diff --git a/tools/testing/selftests/kvm/lib/aarch64/handlers.S b/tools/testing/selftests/kvm/lib/arm64/handlers.S
similarity index 100%
rename from tools/testing/selftests/kvm/lib/aarch64/handlers.S
rename to tools/testing/selftests/kvm/lib/arm64/handlers.S
diff --git a/tools/testing/selftests/kvm/lib/aarch64/processor.c b/tools/testing/selftests/kvm/lib/arm64/processor.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/aarch64/processor.c
rename to tools/testing/selftests/kvm/lib/arm64/processor.c
diff --git a/tools/testing/selftests/kvm/lib/aarch64/spinlock.c b/tools/testing/selftests/kvm/lib/arm64/spinlock.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/aarch64/spinlock.c
rename to tools/testing/selftests/kvm/lib/arm64/spinlock.c
diff --git a/tools/testing/selftests/kvm/lib/aarch64/ucall.c b/tools/testing/selftests/kvm/lib/arm64/ucall.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/aarch64/ucall.c
rename to tools/testing/selftests/kvm/lib/arm64/ucall.c
diff --git a/tools/testing/selftests/kvm/lib/aarch64/vgic.c b/tools/testing/selftests/kvm/lib/arm64/vgic.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/aarch64/vgic.c
rename to tools/testing/selftests/kvm/lib/arm64/vgic.c
diff --git a/tools/testing/selftests/kvm/lib/s390x/diag318_test_handler.c b/tools/testing/selftests/kvm/lib/s390/diag318_test_handler.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/s390x/diag318_test_handler.c
rename to tools/testing/selftests/kvm/lib/s390/diag318_test_handler.c
diff --git a/tools/testing/selftests/kvm/lib/s390x/facility.c b/tools/testing/selftests/kvm/lib/s390/facility.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/s390x/facility.c
rename to tools/testing/selftests/kvm/lib/s390/facility.c
diff --git a/tools/testing/selftests/kvm/lib/s390x/processor.c b/tools/testing/selftests/kvm/lib/s390/processor.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/s390x/processor.c
rename to tools/testing/selftests/kvm/lib/s390/processor.c
diff --git a/tools/testing/selftests/kvm/lib/s390x/ucall.c b/tools/testing/selftests/kvm/lib/s390/ucall.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/s390x/ucall.c
rename to tools/testing/selftests/kvm/lib/s390/ucall.c
diff --git a/tools/testing/selftests/kvm/lib/x86_64/apic.c b/tools/testing/selftests/kvm/lib/x86/apic.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/x86_64/apic.c
rename to tools/testing/selftests/kvm/lib/x86/apic.c
diff --git a/tools/testing/selftests/kvm/lib/x86_64/handlers.S b/tools/testing/selftests/kvm/lib/x86/handlers.S
similarity index 100%
rename from tools/testing/selftests/kvm/lib/x86_64/handlers.S
rename to tools/testing/selftests/kvm/lib/x86/handlers.S
diff --git a/tools/testing/selftests/kvm/lib/x86_64/hyperv.c b/tools/testing/selftests/kvm/lib/x86/hyperv.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/x86_64/hyperv.c
rename to tools/testing/selftests/kvm/lib/x86/hyperv.c
diff --git a/tools/testing/selftests/kvm/lib/x86_64/memstress.c b/tools/testing/selftests/kvm/lib/x86/memstress.c
similarity index 98%
rename from tools/testing/selftests/kvm/lib/x86_64/memstress.c
rename to tools/testing/selftests/kvm/lib/x86/memstress.c
index d61e623afc8c..7f5d62a65c68 100644
--- a/tools/testing/selftests/kvm/lib/x86_64/memstress.c
+++ b/tools/testing/selftests/kvm/lib/x86/memstress.c
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0
/*
- * x86_64-specific extensions to memstress.c.
+ * x86-specific extensions to memstress.c.
*
* Copyright (C) 2022, Google, Inc.
*/
diff --git a/tools/testing/selftests/kvm/lib/x86_64/pmu.c b/tools/testing/selftests/kvm/lib/x86/pmu.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/x86_64/pmu.c
rename to tools/testing/selftests/kvm/lib/x86/pmu.c
diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/testing/selftests/kvm/lib/x86/processor.c
similarity index 99%
rename from tools/testing/selftests/kvm/lib/x86_64/processor.c
rename to tools/testing/selftests/kvm/lib/x86/processor.c
index 636b29ba8985..bd5a802fa7a5 100644
--- a/tools/testing/selftests/kvm/lib/x86_64/processor.c
+++ b/tools/testing/selftests/kvm/lib/x86/processor.c
@@ -1,7 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
- * tools/testing/selftests/kvm/lib/x86_64/processor.c
- *
* Copyright (C) 2018, Google LLC.
*/
diff --git a/tools/testing/selftests/kvm/lib/x86_64/sev.c b/tools/testing/selftests/kvm/lib/x86/sev.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/x86_64/sev.c
rename to tools/testing/selftests/kvm/lib/x86/sev.c
diff --git a/tools/testing/selftests/kvm/lib/x86_64/svm.c b/tools/testing/selftests/kvm/lib/x86/svm.c
similarity index 99%
rename from tools/testing/selftests/kvm/lib/x86_64/svm.c
rename to tools/testing/selftests/kvm/lib/x86/svm.c
index 5495a92dfd5a..d239c2097391 100644
--- a/tools/testing/selftests/kvm/lib/x86_64/svm.c
+++ b/tools/testing/selftests/kvm/lib/x86/svm.c
@@ -1,6 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
- * tools/testing/selftests/kvm/lib/x86_64/svm.c
* Helpers used for nested SVM testing
* Largely inspired from KVM unit test svm.c
*
diff --git a/tools/testing/selftests/kvm/lib/x86_64/ucall.c b/tools/testing/selftests/kvm/lib/x86/ucall.c
similarity index 100%
rename from tools/testing/selftests/kvm/lib/x86_64/ucall.c
rename to tools/testing/selftests/kvm/lib/x86/ucall.c
diff --git a/tools/testing/selftests/kvm/lib/x86_64/vmx.c b/tools/testing/selftests/kvm/lib/x86/vmx.c
similarity index 99%
rename from tools/testing/selftests/kvm/lib/x86_64/vmx.c
rename to tools/testing/selftests/kvm/lib/x86/vmx.c
index d7ac122820bf..d4d1208dd023 100644
--- a/tools/testing/selftests/kvm/lib/x86_64/vmx.c
+++ b/tools/testing/selftests/kvm/lib/x86/vmx.c
@@ -1,7 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
- * tools/testing/selftests/kvm/lib/x86_64/vmx.c
- *
* Copyright (C) 2018, Google LLC.
*/
diff --git a/tools/testing/selftests/kvm/s390x/cmma_test.c b/tools/testing/selftests/kvm/s390/cmma_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/s390x/cmma_test.c
rename to tools/testing/selftests/kvm/s390/cmma_test.c
diff --git a/tools/testing/selftests/kvm/s390x/config b/tools/testing/selftests/kvm/s390/config
similarity index 100%
rename from tools/testing/selftests/kvm/s390x/config
rename to tools/testing/selftests/kvm/s390/config
diff --git a/tools/testing/selftests/kvm/s390x/cpumodel_subfuncs_test.c b/tools/testing/selftests/kvm/s390/cpumodel_subfuncs_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/s390x/cpumodel_subfuncs_test.c
rename to tools/testing/selftests/kvm/s390/cpumodel_subfuncs_test.c
diff --git a/tools/testing/selftests/kvm/s390x/debug_test.c b/tools/testing/selftests/kvm/s390/debug_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/s390x/debug_test.c
rename to tools/testing/selftests/kvm/s390/debug_test.c
diff --git a/tools/testing/selftests/kvm/s390x/memop.c b/tools/testing/selftests/kvm/s390/memop.c
similarity index 100%
rename from tools/testing/selftests/kvm/s390x/memop.c
rename to tools/testing/selftests/kvm/s390/memop.c
diff --git a/tools/testing/selftests/kvm/s390x/resets.c b/tools/testing/selftests/kvm/s390/resets.c
similarity index 100%
rename from tools/testing/selftests/kvm/s390x/resets.c
rename to tools/testing/selftests/kvm/s390/resets.c
diff --git a/tools/testing/selftests/kvm/s390x/shared_zeropage_test.c b/tools/testing/selftests/kvm/s390/shared_zeropage_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/s390x/shared_zeropage_test.c
rename to tools/testing/selftests/kvm/s390/shared_zeropage_test.c
diff --git a/tools/testing/selftests/kvm/s390x/sync_regs_test.c b/tools/testing/selftests/kvm/s390/sync_regs_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/s390x/sync_regs_test.c
rename to tools/testing/selftests/kvm/s390/sync_regs_test.c
diff --git a/tools/testing/selftests/kvm/s390x/tprot.c b/tools/testing/selftests/kvm/s390/tprot.c
similarity index 100%
rename from tools/testing/selftests/kvm/s390x/tprot.c
rename to tools/testing/selftests/kvm/s390/tprot.c
diff --git a/tools/testing/selftests/kvm/s390x/ucontrol_test.c b/tools/testing/selftests/kvm/s390/ucontrol_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/s390x/ucontrol_test.c
rename to tools/testing/selftests/kvm/s390/ucontrol_test.c
diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/testing/selftests/kvm/set_memory_region_test.c
index a8267628e9ed..86ee3385e860 100644
--- a/tools/testing/selftests/kvm/set_memory_region_test.c
+++ b/tools/testing/selftests/kvm/set_memory_region_test.c
@@ -17,9 +17,9 @@
#include <processor.h>
/*
- * s390x needs at least 1MB alignment, and the x86_64 MOVE/DELETE tests need a
- * 2MB sized and aligned region so that the initial region corresponds to
- * exactly one large page.
+ * s390 needs at least 1MB alignment, and the x86 MOVE/DELETE tests need a 2MB
+ * sized and aligned region so that the initial region corresponds to exactly
+ * one large page.
*/
#define MEM_REGION_SIZE 0x200000
diff --git a/tools/testing/selftests/kvm/x86_64/amx_test.c b/tools/testing/selftests/kvm/x86/amx_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/amx_test.c
rename to tools/testing/selftests/kvm/x86/amx_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/apic_bus_clock_test.c b/tools/testing/selftests/kvm/x86/apic_bus_clock_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/apic_bus_clock_test.c
rename to tools/testing/selftests/kvm/x86/apic_bus_clock_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/cpuid_test.c b/tools/testing/selftests/kvm/x86/cpuid_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/cpuid_test.c
rename to tools/testing/selftests/kvm/x86/cpuid_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/cr4_cpuid_sync_test.c b/tools/testing/selftests/kvm/x86/cr4_cpuid_sync_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/cr4_cpuid_sync_test.c
rename to tools/testing/selftests/kvm/x86/cr4_cpuid_sync_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/debug_regs.c b/tools/testing/selftests/kvm/x86/debug_regs.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/debug_regs.c
rename to tools/testing/selftests/kvm/x86/debug_regs.c
diff --git a/tools/testing/selftests/kvm/x86_64/dirty_log_page_splitting_test.c b/tools/testing/selftests/kvm/x86/dirty_log_page_splitting_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/dirty_log_page_splitting_test.c
rename to tools/testing/selftests/kvm/x86/dirty_log_page_splitting_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/exit_on_emulation_failure_test.c b/tools/testing/selftests/kvm/x86/exit_on_emulation_failure_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/exit_on_emulation_failure_test.c
rename to tools/testing/selftests/kvm/x86/exit_on_emulation_failure_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/feature_msrs_test.c b/tools/testing/selftests/kvm/x86/feature_msrs_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/feature_msrs_test.c
rename to tools/testing/selftests/kvm/x86/feature_msrs_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/fix_hypercall_test.c b/tools/testing/selftests/kvm/x86/fix_hypercall_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/fix_hypercall_test.c
rename to tools/testing/selftests/kvm/x86/fix_hypercall_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/flds_emulation.h b/tools/testing/selftests/kvm/x86/flds_emulation.h
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/flds_emulation.h
rename to tools/testing/selftests/kvm/x86/flds_emulation.h
diff --git a/tools/testing/selftests/kvm/x86_64/hwcr_msr_test.c b/tools/testing/selftests/kvm/x86/hwcr_msr_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/hwcr_msr_test.c
rename to tools/testing/selftests/kvm/x86/hwcr_msr_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_clock.c b/tools/testing/selftests/kvm/x86/hyperv_clock.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/hyperv_clock.c
rename to tools/testing/selftests/kvm/x86/hyperv_clock.c
diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c b/tools/testing/selftests/kvm/x86/hyperv_cpuid.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c
rename to tools/testing/selftests/kvm/x86/hyperv_cpuid.c
diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c b/tools/testing/selftests/kvm/x86/hyperv_evmcs.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c
rename to tools/testing/selftests/kvm/x86/hyperv_evmcs.c
diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_extended_hypercalls.c b/tools/testing/selftests/kvm/x86/hyperv_extended_hypercalls.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/hyperv_extended_hypercalls.c
rename to tools/testing/selftests/kvm/x86/hyperv_extended_hypercalls.c
diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_features.c b/tools/testing/selftests/kvm/x86/hyperv_features.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/hyperv_features.c
rename to tools/testing/selftests/kvm/x86/hyperv_features.c
diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_ipi.c b/tools/testing/selftests/kvm/x86/hyperv_ipi.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/hyperv_ipi.c
rename to tools/testing/selftests/kvm/x86/hyperv_ipi.c
diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c b/tools/testing/selftests/kvm/x86/hyperv_svm_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c
rename to tools/testing/selftests/kvm/x86/hyperv_svm_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_tlb_flush.c b/tools/testing/selftests/kvm/x86/hyperv_tlb_flush.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/hyperv_tlb_flush.c
rename to tools/testing/selftests/kvm/x86/hyperv_tlb_flush.c
diff --git a/tools/testing/selftests/kvm/x86_64/kvm_clock_test.c b/tools/testing/selftests/kvm/x86/kvm_clock_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/kvm_clock_test.c
rename to tools/testing/selftests/kvm/x86/kvm_clock_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/kvm_pv_test.c b/tools/testing/selftests/kvm/x86/kvm_pv_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/kvm_pv_test.c
rename to tools/testing/selftests/kvm/x86/kvm_pv_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/max_vcpuid_cap_test.c b/tools/testing/selftests/kvm/x86/max_vcpuid_cap_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/max_vcpuid_cap_test.c
rename to tools/testing/selftests/kvm/x86/max_vcpuid_cap_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/monitor_mwait_test.c b/tools/testing/selftests/kvm/x86/monitor_mwait_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/monitor_mwait_test.c
rename to tools/testing/selftests/kvm/x86/monitor_mwait_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/nested_exceptions_test.c b/tools/testing/selftests/kvm/x86/nested_exceptions_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/nested_exceptions_test.c
rename to tools/testing/selftests/kvm/x86/nested_exceptions_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.c b/tools/testing/selftests/kvm/x86/nx_huge_pages_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.c
rename to tools/testing/selftests/kvm/x86/nx_huge_pages_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.sh b/tools/testing/selftests/kvm/x86/nx_huge_pages_test.sh
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.sh
rename to tools/testing/selftests/kvm/x86/nx_huge_pages_test.sh
diff --git a/tools/testing/selftests/kvm/x86_64/platform_info_test.c b/tools/testing/selftests/kvm/x86/platform_info_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/platform_info_test.c
rename to tools/testing/selftests/kvm/x86/platform_info_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/pmu_counters_test.c b/tools/testing/selftests/kvm/x86/pmu_counters_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/pmu_counters_test.c
rename to tools/testing/selftests/kvm/x86/pmu_counters_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c b/tools/testing/selftests/kvm/x86/pmu_event_filter_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c
rename to tools/testing/selftests/kvm/x86/pmu_event_filter_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c b/tools/testing/selftests/kvm/x86/private_mem_conversions_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c
rename to tools/testing/selftests/kvm/x86/private_mem_conversions_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/private_mem_kvm_exits_test.c b/tools/testing/selftests/kvm/x86/private_mem_kvm_exits_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/private_mem_kvm_exits_test.c
rename to tools/testing/selftests/kvm/x86/private_mem_kvm_exits_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/recalc_apic_map_test.c b/tools/testing/selftests/kvm/x86/recalc_apic_map_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/recalc_apic_map_test.c
rename to tools/testing/selftests/kvm/x86/recalc_apic_map_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c b/tools/testing/selftests/kvm/x86/set_boot_cpu_id.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c
rename to tools/testing/selftests/kvm/x86/set_boot_cpu_id.c
diff --git a/tools/testing/selftests/kvm/x86_64/set_sregs_test.c b/tools/testing/selftests/kvm/x86/set_sregs_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/set_sregs_test.c
rename to tools/testing/selftests/kvm/x86/set_sregs_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/sev_init2_tests.c b/tools/testing/selftests/kvm/x86/sev_init2_tests.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/sev_init2_tests.c
rename to tools/testing/selftests/kvm/x86/sev_init2_tests.c
diff --git a/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c b/tools/testing/selftests/kvm/x86/sev_migrate_tests.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c
rename to tools/testing/selftests/kvm/x86/sev_migrate_tests.c
diff --git a/tools/testing/selftests/kvm/x86_64/sev_smoke_test.c b/tools/testing/selftests/kvm/x86/sev_smoke_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/sev_smoke_test.c
rename to tools/testing/selftests/kvm/x86/sev_smoke_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/smaller_maxphyaddr_emulation_test.c b/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/smaller_maxphyaddr_emulation_test.c
rename to tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/smm_test.c b/tools/testing/selftests/kvm/x86/smm_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/smm_test.c
rename to tools/testing/selftests/kvm/x86/smm_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/state_test.c b/tools/testing/selftests/kvm/x86/state_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/state_test.c
rename to tools/testing/selftests/kvm/x86/state_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/svm_int_ctl_test.c b/tools/testing/selftests/kvm/x86/svm_int_ctl_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/svm_int_ctl_test.c
rename to tools/testing/selftests/kvm/x86/svm_int_ctl_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/svm_nested_shutdown_test.c b/tools/testing/selftests/kvm/x86/svm_nested_shutdown_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/svm_nested_shutdown_test.c
rename to tools/testing/selftests/kvm/x86/svm_nested_shutdown_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/svm_nested_soft_inject_test.c b/tools/testing/selftests/kvm/x86/svm_nested_soft_inject_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/svm_nested_soft_inject_test.c
rename to tools/testing/selftests/kvm/x86/svm_nested_soft_inject_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/svm_vmcall_test.c b/tools/testing/selftests/kvm/x86/svm_vmcall_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/svm_vmcall_test.c
rename to tools/testing/selftests/kvm/x86/svm_vmcall_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/sync_regs_test.c b/tools/testing/selftests/kvm/x86/sync_regs_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/sync_regs_test.c
rename to tools/testing/selftests/kvm/x86/sync_regs_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/triple_fault_event_test.c b/tools/testing/selftests/kvm/x86/triple_fault_event_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/triple_fault_event_test.c
rename to tools/testing/selftests/kvm/x86/triple_fault_event_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/tsc_msrs_test.c b/tools/testing/selftests/kvm/x86/tsc_msrs_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/tsc_msrs_test.c
rename to tools/testing/selftests/kvm/x86/tsc_msrs_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/tsc_scaling_sync.c b/tools/testing/selftests/kvm/x86/tsc_scaling_sync.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/tsc_scaling_sync.c
rename to tools/testing/selftests/kvm/x86/tsc_scaling_sync.c
diff --git a/tools/testing/selftests/kvm/x86_64/ucna_injection_test.c b/tools/testing/selftests/kvm/x86/ucna_injection_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/ucna_injection_test.c
rename to tools/testing/selftests/kvm/x86/ucna_injection_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/userspace_io_test.c b/tools/testing/selftests/kvm/x86/userspace_io_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/userspace_io_test.c
rename to tools/testing/selftests/kvm/x86/userspace_io_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/userspace_msr_exit_test.c b/tools/testing/selftests/kvm/x86/userspace_msr_exit_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/userspace_msr_exit_test.c
rename to tools/testing/selftests/kvm/x86/userspace_msr_exit_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_apic_access_test.c b/tools/testing/selftests/kvm/x86/vmx_apic_access_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/vmx_apic_access_test.c
rename to tools/testing/selftests/kvm/x86/vmx_apic_access_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c b/tools/testing/selftests/kvm/x86/vmx_close_while_nested_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c
rename to tools/testing/selftests/kvm/x86/vmx_close_while_nested_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c b/tools/testing/selftests/kvm/x86/vmx_dirty_log_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c
rename to tools/testing/selftests/kvm/x86/vmx_dirty_log_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_exception_with_invalid_guest_state.c b/tools/testing/selftests/kvm/x86/vmx_exception_with_invalid_guest_state.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/vmx_exception_with_invalid_guest_state.c
rename to tools/testing/selftests/kvm/x86/vmx_exception_with_invalid_guest_state.c
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_invalid_nested_guest_state.c b/tools/testing/selftests/kvm/x86/vmx_invalid_nested_guest_state.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/vmx_invalid_nested_guest_state.c
rename to tools/testing/selftests/kvm/x86/vmx_invalid_nested_guest_state.c
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_msrs_test.c b/tools/testing/selftests/kvm/x86/vmx_msrs_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/vmx_msrs_test.c
rename to tools/testing/selftests/kvm/x86/vmx_msrs_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test.c b/tools/testing/selftests/kvm/x86/vmx_nested_tsc_scaling_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test.c
rename to tools/testing/selftests/kvm/x86/vmx_nested_tsc_scaling_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86/vmx_pmu_caps_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c
rename to tools/testing/selftests/kvm/x86/vmx_pmu_caps_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c b/tools/testing/selftests/kvm/x86/vmx_preemption_timer_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c
rename to tools/testing/selftests/kvm/x86/vmx_preemption_timer_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c b/tools/testing/selftests/kvm/x86/vmx_set_nested_state_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c
rename to tools/testing/selftests/kvm/x86/vmx_set_nested_state_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c b/tools/testing/selftests/kvm/x86/vmx_tsc_adjust_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c
rename to tools/testing/selftests/kvm/x86/vmx_tsc_adjust_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c b/tools/testing/selftests/kvm/x86/xapic_ipi_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c
rename to tools/testing/selftests/kvm/x86/xapic_ipi_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/xapic_state_test.c b/tools/testing/selftests/kvm/x86/xapic_state_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/xapic_state_test.c
rename to tools/testing/selftests/kvm/x86/xapic_state_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c b/tools/testing/selftests/kvm/x86/xcr0_cpuid_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c
rename to tools/testing/selftests/kvm/x86/xcr0_cpuid_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/xen_shinfo_test.c b/tools/testing/selftests/kvm/x86/xen_shinfo_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/xen_shinfo_test.c
rename to tools/testing/selftests/kvm/x86/xen_shinfo_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/xen_vmcall_test.c b/tools/testing/selftests/kvm/x86/xen_vmcall_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/xen_vmcall_test.c
rename to tools/testing/selftests/kvm/x86/xen_vmcall_test.c
diff --git a/tools/testing/selftests/kvm/x86_64/xss_msr_test.c b/tools/testing/selftests/kvm/x86/xss_msr_test.c
similarity index 100%
rename from tools/testing/selftests/kvm/x86_64/xss_msr_test.c
rename to tools/testing/selftests/kvm/x86/xss_msr_test.c
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH v4 16/16] KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (14 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories Sean Christopherson
@ 2024-11-28 0:55 ` Sean Christopherson
2024-11-28 8:20 ` Muhammad Usama Anjum
2024-12-16 22:33 ` [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
2024-12-18 21:56 ` Sean Christopherson
17 siblings, 1 reply; 32+ messages in thread
From: Sean Christopherson @ 2024-11-28 0:55 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, Sean Christopherson
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
Now that KVM selftests uses the kernel's canonical arch paths, directly
override ARCH to 'x86' when targeting x86_64 instead of defining ARCH_DIR
to redirect to appropriate paths. ARCH_DIR was originally added to deal
with KVM selftests using the target triple ARCH for directories, e.g.
s390x and aarch64; keeping it around just to deal with the one-off alias
from x86_64=>x86 is unnecessary and confusing.
Note, even when selftests are built from the top-level Makefile, ARCH is
scoped to KVM's makefiles, i.e. overriding ARCH won't trip up some other
selftests that (somehow) expects x86_64 and can't work with x86.
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
tools/testing/selftests/kvm/Makefile | 4 +---
tools/testing/selftests/kvm/Makefile.kvm | 20 ++++++++++----------
2 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
index 9bc2eba1af1c..20af35a91d6f 100644
--- a/tools/testing/selftests/kvm/Makefile
+++ b/tools/testing/selftests/kvm/Makefile
@@ -6,9 +6,7 @@ ARCH ?= $(SUBARCH)
ifeq ($(ARCH),$(filter $(ARCH),arm64 s390 riscv x86 x86_64))
# Top-level selftests allows ARCH=x86_64 :-(
ifeq ($(ARCH),x86_64)
- ARCH_DIR := x86
-else
- ARCH_DIR := $(ARCH)
+ ARCH := x86
endif
include Makefile.kvm
else
diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index 9888dd6bb483..4277b983cace 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -207,10 +207,10 @@ TEST_GEN_PROGS_riscv += steal_time
SPLIT_TESTS += arch_timer
SPLIT_TESTS += get-reg-list
-TEST_PROGS += $(TEST_PROGS_$(ARCH_DIR))
-TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH_DIR))
-TEST_GEN_PROGS_EXTENDED += $(TEST_GEN_PROGS_EXTENDED_$(ARCH_DIR))
-LIBKVM += $(LIBKVM_$(ARCH_DIR))
+TEST_PROGS += $(TEST_PROGS_$(ARCH))
+TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH))
+TEST_GEN_PROGS_EXTENDED += $(TEST_GEN_PROGS_EXTENDED_$(ARCH))
+LIBKVM += $(LIBKVM_$(ARCH))
OVERRIDE_TARGETS = 1
@@ -222,14 +222,14 @@ include ../lib.mk
INSTALL_HDR_PATH = $(top_srcdir)/usr
LINUX_HDR_PATH = $(INSTALL_HDR_PATH)/include/
LINUX_TOOL_INCLUDE = $(top_srcdir)/tools/include
-LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH_DIR)/include
+LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH)/include
CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \
-Wno-gnu-variable-sized-type-not-at-end -MD -MP -DCONFIG_64BIT \
-fno-builtin-memcmp -fno-builtin-memcpy \
-fno-builtin-memset -fno-builtin-strnlen \
-fno-stack-protector -fno-PIE -fno-strict-aliasing \
-I$(LINUX_TOOL_INCLUDE) -I$(LINUX_TOOL_ARCH_INCLUDE) \
- -I$(LINUX_HDR_PATH) -Iinclude -I$(<D) -Iinclude/$(ARCH_DIR) \
+ -I$(LINUX_HDR_PATH) -Iinclude -I$(<D) -Iinclude/$(ARCH) \
-I ../rseq -I.. $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
ifeq ($(ARCH),s390)
CFLAGS += -march=z10
@@ -273,7 +273,7 @@ LIBKVM_S_OBJ := $(patsubst %.S, $(OUTPUT)/%.o, $(LIBKVM_S))
LIBKVM_STRING_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_STRING))
LIBKVM_OBJS = $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ) $(LIBKVM_STRING_OBJ)
SPLIT_TEST_GEN_PROGS := $(patsubst %, $(OUTPUT)/%, $(SPLIT_TESTS))
-SPLIT_TEST_GEN_OBJ := $(patsubst %, $(OUTPUT)/$(ARCH_DIR)/%.o, $(SPLIT_TESTS))
+SPLIT_TEST_GEN_OBJ := $(patsubst %, $(OUTPUT)/$(ARCH)/%.o, $(SPLIT_TESTS))
TEST_GEN_OBJ = $(patsubst %, %.o, $(TEST_GEN_PROGS))
TEST_GEN_OBJ += $(patsubst %, %.o, $(TEST_GEN_PROGS_EXTENDED))
@@ -282,7 +282,7 @@ TEST_DEP_FILES += $(patsubst %.o, %.d, $(LIBKVM_OBJS))
TEST_DEP_FILES += $(patsubst %.o, %.d, $(SPLIT_TEST_GEN_OBJ))
-include $(TEST_DEP_FILES)
-$(shell mkdir -p $(sort $(OUTPUT)/$(ARCH_DIR) $(dir $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ))))
+$(shell mkdir -p $(sort $(OUTPUT)/$(ARCH) $(dir $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ))))
$(filter-out $(SPLIT_TEST_GEN_PROGS), $(TEST_GEN_PROGS)) \
$(TEST_GEN_PROGS_EXTENDED): %: %.o
@@ -290,9 +290,9 @@ $(TEST_GEN_PROGS_EXTENDED): %: %.o
$(TEST_GEN_OBJ): $(OUTPUT)/%.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
-$(SPLIT_TEST_GEN_PROGS): $(OUTPUT)/%: $(OUTPUT)/%.o $(OUTPUT)/$(ARCH_DIR)/%.o
+$(SPLIT_TEST_GEN_PROGS): $(OUTPUT)/%: $(OUTPUT)/%.o $(OUTPUT)/$(ARCH)/%.o
$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@
-$(SPLIT_TEST_GEN_OBJ): $(OUTPUT)/$(ARCH_DIR)/%.o: $(ARCH_DIR)/%.c
+$(SPLIT_TEST_GEN_OBJ): $(OUTPUT)/$(ARCH)/%.o: $(ARCH)/%.c
$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
EXTRA_CLEAN += $(GEN_HDRS) \
--
2.47.0.338.g60cca15819-goog
^ permalink raw reply related [flat|nested] 32+ messages in thread
* Re: [PATCH v4 01/16] KVM: Move KVM_REG_SIZE() definition to common uAPI header
2024-11-28 0:55 ` [PATCH v4 01/16] KVM: Move KVM_REG_SIZE() definition to common uAPI header Sean Christopherson
@ 2024-11-28 8:14 ` Muhammad Usama Anjum
0 siblings, 0 replies; 32+ messages in thread
From: Muhammad Usama Anjum @ 2024-11-28 8:14 UTC (permalink / raw)
To: Sean Christopherson, Marc Zyngier, Oliver Upton, Anup Patel,
Paul Walmsley, Palmer Dabbelt, Albert Ou, Paolo Bonzini,
Christian Borntraeger, Janosch Frank, Claudio Imbrenda
Cc: Usama.Anjum, linux-arm-kernel, kvmarm, kvm, kvm-riscv,
linux-riscv, linux-kernel, Andrew Jones, James Houghton
On 11/28/24 5:55 AM, Sean Christopherson wrote:
> Define KVM_REG_SIZE() in the common kvm.h header, and delete the arm64 and
> RISC-V versions. As evidenced by the surrounding definitions, all aspects
> of the register size encoding are generic, i.e. RISC-V should have moved
> arm64's definition to common code instead of copy+pasting.
>
> Acked-by: Anup Patel <anup@brainfault.org>
> Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> ---
> arch/arm64/include/uapi/asm/kvm.h | 3 ---
> arch/riscv/include/uapi/asm/kvm.h | 3 ---
> include/uapi/linux/kvm.h | 4 ++++
> 3 files changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm64/include/uapi/asm/kvm.h b/arch/arm64/include/uapi/asm/kvm.h
> index 66736ff04011..568bf858f319 100644
> --- a/arch/arm64/include/uapi/asm/kvm.h
> +++ b/arch/arm64/include/uapi/asm/kvm.h
> @@ -43,9 +43,6 @@
> #define KVM_COALESCED_MMIO_PAGE_OFFSET 1
> #define KVM_DIRTY_LOG_PAGE_OFFSET 64
>
> -#define KVM_REG_SIZE(id) \
> - (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
> -
> struct kvm_regs {
> struct user_pt_regs regs; /* sp = sp_el0 */
>
> diff --git a/arch/riscv/include/uapi/asm/kvm.h b/arch/riscv/include/uapi/asm/kvm.h
> index 3482c9a73d1b..9f60d6185077 100644
> --- a/arch/riscv/include/uapi/asm/kvm.h
> +++ b/arch/riscv/include/uapi/asm/kvm.h
> @@ -211,9 +211,6 @@ struct kvm_riscv_sbi_sta {
> #define KVM_RISCV_TIMER_STATE_OFF 0
> #define KVM_RISCV_TIMER_STATE_ON 1
>
> -#define KVM_REG_SIZE(id) \
> - (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
> -
> /* If you need to interpret the index values, here is the key: */
> #define KVM_REG_RISCV_TYPE_MASK 0x00000000FF000000
> #define KVM_REG_RISCV_TYPE_SHIFT 24
> diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
> index 502ea63b5d2e..343de0a51797 100644
> --- a/include/uapi/linux/kvm.h
> +++ b/include/uapi/linux/kvm.h
> @@ -1070,6 +1070,10 @@ struct kvm_dirty_tlb {
>
> #define KVM_REG_SIZE_SHIFT 52
> #define KVM_REG_SIZE_MASK 0x00f0000000000000ULL
> +
> +#define KVM_REG_SIZE(id) \
> + (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
> +
> #define KVM_REG_SIZE_U8 0x0000000000000000ULL
> #define KVM_REG_SIZE_U16 0x0010000000000000ULL
> #define KVM_REG_SIZE_U32 0x0020000000000000ULL
--
BR,
Muhammad Usama Anjum
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 14/16] KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs
2024-11-28 0:55 ` [PATCH v4 14/16] KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs Sean Christopherson
@ 2024-11-28 8:19 ` Muhammad Usama Anjum
2024-11-28 8:42 ` Andrew Jones
1 sibling, 0 replies; 32+ messages in thread
From: Muhammad Usama Anjum @ 2024-11-28 8:19 UTC (permalink / raw)
To: Sean Christopherson, Marc Zyngier, Oliver Upton, Anup Patel,
Paul Walmsley, Palmer Dabbelt, Albert Ou, Paolo Bonzini,
Christian Borntraeger, Janosch Frank, Claudio Imbrenda
Cc: Usama.Anjum, linux-arm-kernel, kvmarm, kvm, kvm-riscv,
linux-riscv, linux-kernel, Andrew Jones, James Houghton
On 11/28/24 5:55 AM, Sean Christopherson wrote:
> Provide empty targets for KVM selftests if the target architecture is
> unsupported to make it obvious which architectures are supported, and so
> that various side effects don't fail and/or do weird things, e.g. as is,
> "mkdir -p $(sort $(dir $(TEST_GEN_PROGS)))" fails due to a missing operand,
> and conversely, "$(shell mkdir -p $(sort $(OUTPUT)/$(ARCH_DIR) ..." will
> create an empty, useless directory for the unsupported architecture.
>
> Move the guts of the Makefile to Makefile.kvm so that it's easier to see
> that the if-statement effectively guards all of KVM selftests.
>
> Reported-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
Acked-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> ---
> tools/testing/selftests/kvm/.gitignore | 1 +
> tools/testing/selftests/kvm/Makefile | 336 +----------------------
> tools/testing/selftests/kvm/Makefile.kvm | 334 ++++++++++++++++++++++
> 3 files changed, 340 insertions(+), 331 deletions(-)
> create mode 100644 tools/testing/selftests/kvm/Makefile.kvm
>
> diff --git a/tools/testing/selftests/kvm/.gitignore b/tools/testing/selftests/kvm/.gitignore
> index 7f57abf936e7..1d41a046a7bf 100644
> --- a/tools/testing/selftests/kvm/.gitignore
> +++ b/tools/testing/selftests/kvm/.gitignore
> @@ -9,3 +9,4 @@
> !config
> !settings
> !Makefile
> +!Makefile.kvm
> \ No newline at end of file
> diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
> index c59a337cd4da..7b33464bf8cc 100644
> --- a/tools/testing/selftests/kvm/Makefile
> +++ b/tools/testing/selftests/kvm/Makefile
> @@ -1,12 +1,9 @@
> # SPDX-License-Identifier: GPL-2.0-only
> -include ../../../build/Build.include
> -
> -all:
> -
> top_srcdir = ../../../..
> include $(top_srcdir)/scripts/subarch.include
> ARCH ?= $(SUBARCH)
>
> +ifeq ($(ARCH),$(filter $(ARCH),arm64 s390 riscv x86 x86_64))
> ifeq ($(ARCH),x86)
> ARCH_DIR := x86_64
> else ifeq ($(ARCH),arm64)
> @@ -17,332 +14,9 @@ else
> ARCH_DIR := $(ARCH)
> endif
>
> -LIBKVM += lib/assert.c
> -LIBKVM += lib/elf.c
> -LIBKVM += lib/guest_modes.c
> -LIBKVM += lib/io.c
> -LIBKVM += lib/kvm_util.c
> -LIBKVM += lib/memstress.c
> -LIBKVM += lib/guest_sprintf.c
> -LIBKVM += lib/rbtree.c
> -LIBKVM += lib/sparsebit.c
> -LIBKVM += lib/test_util.c
> -LIBKVM += lib/ucall_common.c
> -LIBKVM += lib/userfaultfd_util.c
> -
> -LIBKVM_STRING += lib/string_override.c
> -
> -LIBKVM_x86_64 += lib/x86_64/apic.c
> -LIBKVM_x86_64 += lib/x86_64/handlers.S
> -LIBKVM_x86_64 += lib/x86_64/hyperv.c
> -LIBKVM_x86_64 += lib/x86_64/memstress.c
> -LIBKVM_x86_64 += lib/x86_64/pmu.c
> -LIBKVM_x86_64 += lib/x86_64/processor.c
> -LIBKVM_x86_64 += lib/x86_64/sev.c
> -LIBKVM_x86_64 += lib/x86_64/svm.c
> -LIBKVM_x86_64 += lib/x86_64/ucall.c
> -LIBKVM_x86_64 += lib/x86_64/vmx.c
> -
> -LIBKVM_aarch64 += lib/aarch64/gic.c
> -LIBKVM_aarch64 += lib/aarch64/gic_v3.c
> -LIBKVM_aarch64 += lib/aarch64/gic_v3_its.c
> -LIBKVM_aarch64 += lib/aarch64/handlers.S
> -LIBKVM_aarch64 += lib/aarch64/processor.c
> -LIBKVM_aarch64 += lib/aarch64/spinlock.c
> -LIBKVM_aarch64 += lib/aarch64/ucall.c
> -LIBKVM_aarch64 += lib/aarch64/vgic.c
> -
> -LIBKVM_s390x += lib/s390x/diag318_test_handler.c
> -LIBKVM_s390x += lib/s390x/processor.c
> -LIBKVM_s390x += lib/s390x/ucall.c
> -LIBKVM_s390x += lib/s390x/facility.c
> -
> -LIBKVM_riscv += lib/riscv/handlers.S
> -LIBKVM_riscv += lib/riscv/processor.c
> -LIBKVM_riscv += lib/riscv/ucall.c
> -
> -# Non-compiled test targets
> -TEST_PROGS_x86_64 += x86_64/nx_huge_pages_test.sh
> -
> -# Compiled test targets
> -TEST_GEN_PROGS_x86_64 = x86_64/cpuid_test
> -TEST_GEN_PROGS_x86_64 += x86_64/cr4_cpuid_sync_test
> -TEST_GEN_PROGS_x86_64 += x86_64/dirty_log_page_splitting_test
> -TEST_GEN_PROGS_x86_64 += x86_64/feature_msrs_test
> -TEST_GEN_PROGS_x86_64 += x86_64/exit_on_emulation_failure_test
> -TEST_GEN_PROGS_x86_64 += x86_64/fix_hypercall_test
> -TEST_GEN_PROGS_x86_64 += x86_64/hwcr_msr_test
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_clock
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_cpuid
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_evmcs
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_extended_hypercalls
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_features
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_ipi
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_svm_test
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_tlb_flush
> -TEST_GEN_PROGS_x86_64 += x86_64/kvm_clock_test
> -TEST_GEN_PROGS_x86_64 += x86_64/kvm_pv_test
> -TEST_GEN_PROGS_x86_64 += x86_64/monitor_mwait_test
> -TEST_GEN_PROGS_x86_64 += x86_64/nested_exceptions_test
> -TEST_GEN_PROGS_x86_64 += x86_64/platform_info_test
> -TEST_GEN_PROGS_x86_64 += x86_64/pmu_counters_test
> -TEST_GEN_PROGS_x86_64 += x86_64/pmu_event_filter_test
> -TEST_GEN_PROGS_x86_64 += x86_64/private_mem_conversions_test
> -TEST_GEN_PROGS_x86_64 += x86_64/private_mem_kvm_exits_test
> -TEST_GEN_PROGS_x86_64 += x86_64/set_boot_cpu_id
> -TEST_GEN_PROGS_x86_64 += x86_64/set_sregs_test
> -TEST_GEN_PROGS_x86_64 += x86_64/smaller_maxphyaddr_emulation_test
> -TEST_GEN_PROGS_x86_64 += x86_64/smm_test
> -TEST_GEN_PROGS_x86_64 += x86_64/state_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_preemption_timer_test
> -TEST_GEN_PROGS_x86_64 += x86_64/svm_vmcall_test
> -TEST_GEN_PROGS_x86_64 += x86_64/svm_int_ctl_test
> -TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_shutdown_test
> -TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_soft_inject_test
> -TEST_GEN_PROGS_x86_64 += x86_64/tsc_scaling_sync
> -TEST_GEN_PROGS_x86_64 += x86_64/sync_regs_test
> -TEST_GEN_PROGS_x86_64 += x86_64/ucna_injection_test
> -TEST_GEN_PROGS_x86_64 += x86_64/userspace_io_test
> -TEST_GEN_PROGS_x86_64 += x86_64/userspace_msr_exit_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_apic_access_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_close_while_nested_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_dirty_log_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_exception_with_invalid_guest_state
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_msrs_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_invalid_nested_guest_state
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_set_nested_state_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_tsc_adjust_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_nested_tsc_scaling_test
> -TEST_GEN_PROGS_x86_64 += x86_64/apic_bus_clock_test
> -TEST_GEN_PROGS_x86_64 += x86_64/xapic_ipi_test
> -TEST_GEN_PROGS_x86_64 += x86_64/xapic_state_test
> -TEST_GEN_PROGS_x86_64 += x86_64/xcr0_cpuid_test
> -TEST_GEN_PROGS_x86_64 += x86_64/xss_msr_test
> -TEST_GEN_PROGS_x86_64 += x86_64/debug_regs
> -TEST_GEN_PROGS_x86_64 += x86_64/tsc_msrs_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_pmu_caps_test
> -TEST_GEN_PROGS_x86_64 += x86_64/xen_shinfo_test
> -TEST_GEN_PROGS_x86_64 += x86_64/xen_vmcall_test
> -TEST_GEN_PROGS_x86_64 += x86_64/sev_init2_tests
> -TEST_GEN_PROGS_x86_64 += x86_64/sev_migrate_tests
> -TEST_GEN_PROGS_x86_64 += x86_64/sev_smoke_test
> -TEST_GEN_PROGS_x86_64 += x86_64/amx_test
> -TEST_GEN_PROGS_x86_64 += x86_64/max_vcpuid_cap_test
> -TEST_GEN_PROGS_x86_64 += x86_64/triple_fault_event_test
> -TEST_GEN_PROGS_x86_64 += x86_64/recalc_apic_map_test
> -TEST_GEN_PROGS_x86_64 += access_tracking_perf_test
> -TEST_GEN_PROGS_x86_64 += coalesced_io_test
> -TEST_GEN_PROGS_x86_64 += demand_paging_test
> -TEST_GEN_PROGS_x86_64 += dirty_log_test
> -TEST_GEN_PROGS_x86_64 += dirty_log_perf_test
> -TEST_GEN_PROGS_x86_64 += guest_memfd_test
> -TEST_GEN_PROGS_x86_64 += guest_print_test
> -TEST_GEN_PROGS_x86_64 += hardware_disable_test
> -TEST_GEN_PROGS_x86_64 += kvm_create_max_vcpus
> -TEST_GEN_PROGS_x86_64 += kvm_page_table_test
> -TEST_GEN_PROGS_x86_64 += mmu_stress_test
> -TEST_GEN_PROGS_x86_64 += memslot_modification_stress_test
> -TEST_GEN_PROGS_x86_64 += memslot_perf_test
> -TEST_GEN_PROGS_x86_64 += rseq_test
> -TEST_GEN_PROGS_x86_64 += set_memory_region_test
> -TEST_GEN_PROGS_x86_64 += steal_time
> -TEST_GEN_PROGS_x86_64 += kvm_binary_stats_test
> -TEST_GEN_PROGS_x86_64 += system_counter_offset_test
> -TEST_GEN_PROGS_x86_64 += pre_fault_memory_test
> -
> -# Compiled outputs used by test targets
> -TEST_GEN_PROGS_EXTENDED_x86_64 += x86_64/nx_huge_pages_test
> -
> -TEST_GEN_PROGS_aarch64 += aarch64/aarch32_id_regs
> -TEST_GEN_PROGS_aarch64 += aarch64/arch_timer_edge_cases
> -TEST_GEN_PROGS_aarch64 += aarch64/debug-exceptions
> -TEST_GEN_PROGS_aarch64 += aarch64/hypercalls
> -TEST_GEN_PROGS_aarch64 += aarch64/mmio_abort
> -TEST_GEN_PROGS_aarch64 += aarch64/page_fault_test
> -TEST_GEN_PROGS_aarch64 += aarch64/psci_test
> -TEST_GEN_PROGS_aarch64 += aarch64/set_id_regs
> -TEST_GEN_PROGS_aarch64 += aarch64/smccc_filter
> -TEST_GEN_PROGS_aarch64 += aarch64/vcpu_width_config
> -TEST_GEN_PROGS_aarch64 += aarch64/vgic_init
> -TEST_GEN_PROGS_aarch64 += aarch64/vgic_irq
> -TEST_GEN_PROGS_aarch64 += aarch64/vgic_lpi_stress
> -TEST_GEN_PROGS_aarch64 += aarch64/vpmu_counter_access
> -TEST_GEN_PROGS_aarch64 += aarch64/no-vgic-v3
> -TEST_GEN_PROGS_aarch64 += access_tracking_perf_test
> -TEST_GEN_PROGS_aarch64 += arch_timer
> -TEST_GEN_PROGS_aarch64 += coalesced_io_test
> -TEST_GEN_PROGS_aarch64 += demand_paging_test
> -TEST_GEN_PROGS_aarch64 += dirty_log_test
> -TEST_GEN_PROGS_aarch64 += dirty_log_perf_test
> -TEST_GEN_PROGS_aarch64 += guest_print_test
> -TEST_GEN_PROGS_aarch64 += get-reg-list
> -TEST_GEN_PROGS_aarch64 += kvm_create_max_vcpus
> -TEST_GEN_PROGS_aarch64 += kvm_page_table_test
> -TEST_GEN_PROGS_aarch64 += memslot_modification_stress_test
> -TEST_GEN_PROGS_aarch64 += memslot_perf_test
> -TEST_GEN_PROGS_aarch64 += mmu_stress_test
> -TEST_GEN_PROGS_aarch64 += rseq_test
> -TEST_GEN_PROGS_aarch64 += set_memory_region_test
> -TEST_GEN_PROGS_aarch64 += steal_time
> -TEST_GEN_PROGS_aarch64 += kvm_binary_stats_test
> -
> -TEST_GEN_PROGS_s390x = s390x/memop
> -TEST_GEN_PROGS_s390x += s390x/resets
> -TEST_GEN_PROGS_s390x += s390x/sync_regs_test
> -TEST_GEN_PROGS_s390x += s390x/tprot
> -TEST_GEN_PROGS_s390x += s390x/cmma_test
> -TEST_GEN_PROGS_s390x += s390x/debug_test
> -TEST_GEN_PROGS_s390x += s390x/cpumodel_subfuncs_test
> -TEST_GEN_PROGS_s390x += s390x/shared_zeropage_test
> -TEST_GEN_PROGS_s390x += s390x/ucontrol_test
> -TEST_GEN_PROGS_s390x += demand_paging_test
> -TEST_GEN_PROGS_s390x += dirty_log_test
> -TEST_GEN_PROGS_s390x += guest_print_test
> -TEST_GEN_PROGS_s390x += kvm_create_max_vcpus
> -TEST_GEN_PROGS_s390x += kvm_page_table_test
> -TEST_GEN_PROGS_s390x += rseq_test
> -TEST_GEN_PROGS_s390x += set_memory_region_test
> -TEST_GEN_PROGS_s390x += kvm_binary_stats_test
> -
> -TEST_GEN_PROGS_riscv += riscv/sbi_pmu_test
> -TEST_GEN_PROGS_riscv += riscv/ebreak_test
> -TEST_GEN_PROGS_riscv += arch_timer
> -TEST_GEN_PROGS_riscv += coalesced_io_test
> -TEST_GEN_PROGS_riscv += demand_paging_test
> -TEST_GEN_PROGS_riscv += dirty_log_test
> -TEST_GEN_PROGS_riscv += get-reg-list
> -TEST_GEN_PROGS_riscv += guest_print_test
> -TEST_GEN_PROGS_riscv += kvm_binary_stats_test
> -TEST_GEN_PROGS_riscv += kvm_create_max_vcpus
> -TEST_GEN_PROGS_riscv += kvm_page_table_test
> -TEST_GEN_PROGS_riscv += set_memory_region_test
> -TEST_GEN_PROGS_riscv += steal_time
> -
> -SPLIT_TESTS += arch_timer
> -SPLIT_TESTS += get-reg-list
> -
> -TEST_PROGS += $(TEST_PROGS_$(ARCH_DIR))
> -TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH_DIR))
> -TEST_GEN_PROGS_EXTENDED += $(TEST_GEN_PROGS_EXTENDED_$(ARCH_DIR))
> -LIBKVM += $(LIBKVM_$(ARCH_DIR))
> -
> -OVERRIDE_TARGETS = 1
> -
> -# lib.mak defines $(OUTPUT), prepends $(OUTPUT)/ to $(TEST_GEN_PROGS), and most
> -# importantly defines, i.e. overwrites, $(CC) (unless `make -e` or `make CC=`,
> -# which causes the environment variable to override the makefile).
> -include ../lib.mk
> -
> -INSTALL_HDR_PATH = $(top_srcdir)/usr
> -LINUX_HDR_PATH = $(INSTALL_HDR_PATH)/include/
> -LINUX_TOOL_INCLUDE = $(top_srcdir)/tools/include
> -ifeq ($(ARCH),x86_64)
> -LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/x86/include
> +include Makefile.kvm
> else
> -LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH)/include
> +# Empty targets for unsupported architectures
> +all:
> +clean:
> endif
> -CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \
> - -Wno-gnu-variable-sized-type-not-at-end -MD -MP -DCONFIG_64BIT \
> - -fno-builtin-memcmp -fno-builtin-memcpy \
> - -fno-builtin-memset -fno-builtin-strnlen \
> - -fno-stack-protector -fno-PIE -fno-strict-aliasing \
> - -I$(LINUX_TOOL_INCLUDE) -I$(LINUX_TOOL_ARCH_INCLUDE) \
> - -I$(LINUX_HDR_PATH) -Iinclude -I$(<D) -Iinclude/$(ARCH_DIR) \
> - -I ../rseq -I.. $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
> -ifeq ($(ARCH),s390)
> - CFLAGS += -march=z10
> -endif
> -ifeq ($(ARCH),x86)
> -ifeq ($(shell echo "void foo(void) { }" | $(CC) -march=x86-64-v2 -x c - -c -o /dev/null 2>/dev/null; echo "$$?"),0)
> - CFLAGS += -march=x86-64-v2
> -endif
> -endif
> -ifeq ($(ARCH),arm64)
> -tools_dir := $(top_srcdir)/tools
> -arm64_tools_dir := $(tools_dir)/arch/arm64/tools/
> -
> -ifneq ($(abs_objdir),)
> -arm64_hdr_outdir := $(abs_objdir)/tools/
> -else
> -arm64_hdr_outdir := $(tools_dir)/
> -endif
> -
> -GEN_HDRS := $(arm64_hdr_outdir)arch/arm64/include/generated/
> -CFLAGS += -I$(GEN_HDRS)
> -
> -$(GEN_HDRS): $(wildcard $(arm64_tools_dir)/*)
> - $(MAKE) -C $(arm64_tools_dir) OUTPUT=$(arm64_hdr_outdir)
> -endif
> -
> -no-pie-option := $(call try-run, echo 'int main(void) { return 0; }' | \
> - $(CC) -Werror $(CFLAGS) -no-pie -x c - -o "$$TMP", -no-pie)
> -
> -# On s390, build the testcases KVM-enabled
> -pgste-option = $(call try-run, echo 'int main(void) { return 0; }' | \
> - $(CC) -Werror -Wl$(comma)--s390-pgste -x c - -o "$$TMP",-Wl$(comma)--s390-pgste)
> -
> -LDLIBS += -ldl
> -LDFLAGS += -pthread $(no-pie-option) $(pgste-option)
> -
> -LIBKVM_C := $(filter %.c,$(LIBKVM))
> -LIBKVM_S := $(filter %.S,$(LIBKVM))
> -LIBKVM_C_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_C))
> -LIBKVM_S_OBJ := $(patsubst %.S, $(OUTPUT)/%.o, $(LIBKVM_S))
> -LIBKVM_STRING_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_STRING))
> -LIBKVM_OBJS = $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ) $(LIBKVM_STRING_OBJ)
> -SPLIT_TEST_GEN_PROGS := $(patsubst %, $(OUTPUT)/%, $(SPLIT_TESTS))
> -SPLIT_TEST_GEN_OBJ := $(patsubst %, $(OUTPUT)/$(ARCH_DIR)/%.o, $(SPLIT_TESTS))
> -
> -TEST_GEN_OBJ = $(patsubst %, %.o, $(TEST_GEN_PROGS))
> -TEST_GEN_OBJ += $(patsubst %, %.o, $(TEST_GEN_PROGS_EXTENDED))
> -TEST_DEP_FILES = $(patsubst %.o, %.d, $(TEST_GEN_OBJ))
> -TEST_DEP_FILES += $(patsubst %.o, %.d, $(LIBKVM_OBJS))
> -TEST_DEP_FILES += $(patsubst %.o, %.d, $(SPLIT_TEST_GEN_OBJ))
> --include $(TEST_DEP_FILES)
> -
> -$(shell mkdir -p $(sort $(OUTPUT)/$(ARCH_DIR) $(dir $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ))))
> -
> -$(filter-out $(SPLIT_TEST_GEN_PROGS), $(TEST_GEN_PROGS)) \
> -$(TEST_GEN_PROGS_EXTENDED): %: %.o
> - $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $< $(LIBKVM_OBJS) $(LDLIBS) -o $@
> -$(TEST_GEN_OBJ): $(OUTPUT)/%.o: %.c
> - $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
> -
> -$(SPLIT_TEST_GEN_PROGS): $(OUTPUT)/%: $(OUTPUT)/%.o $(OUTPUT)/$(ARCH_DIR)/%.o
> - $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@
> -$(SPLIT_TEST_GEN_OBJ): $(OUTPUT)/$(ARCH_DIR)/%.o: $(ARCH_DIR)/%.c
> - $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
> -
> -EXTRA_CLEAN += $(GEN_HDRS) \
> - $(LIBKVM_OBJS) \
> - $(SPLIT_TEST_GEN_OBJ) \
> - $(TEST_DEP_FILES) \
> - $(TEST_GEN_OBJ) \
> - cscope.*
> -
> -$(LIBKVM_C_OBJ): $(OUTPUT)/%.o: %.c $(GEN_HDRS)
> - $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
> -
> -$(LIBKVM_S_OBJ): $(OUTPUT)/%.o: %.S $(GEN_HDRS)
> - $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
> -
> -# Compile the string overrides as freestanding to prevent the compiler from
> -# generating self-referential code, e.g. without "freestanding" the compiler may
> -# "optimize" memcmp() by invoking memcmp(), thus causing infinite recursion.
> -$(LIBKVM_STRING_OBJ): $(OUTPUT)/%.o: %.c
> - $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@
> -
> -$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))))
> -$(SPLIT_TEST_GEN_OBJ): $(GEN_HDRS)
> -$(TEST_GEN_PROGS): $(LIBKVM_OBJS)
> -$(TEST_GEN_PROGS_EXTENDED): $(LIBKVM_OBJS)
> -$(TEST_GEN_OBJ): $(GEN_HDRS)
> -
> -cscope: include_paths = $(LINUX_TOOL_INCLUDE) $(LINUX_HDR_PATH) include lib ..
> -cscope:
> - $(RM) cscope.*
> - (find $(include_paths) -name '*.h' \
> - -exec realpath --relative-base=$(PWD) {} \;; \
> - find . -name '*.c' \
> - -exec realpath --relative-base=$(PWD) {} \;) | sort -u > cscope.files
> - cscope -b
> diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
> new file mode 100644
> index 000000000000..e988a72f8c20
> --- /dev/null
> +++ b/tools/testing/selftests/kvm/Makefile.kvm
> @@ -0,0 +1,334 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +include ../../../build/Build.include
> +
> +all:
> +
> +LIBKVM += lib/assert.c
> +LIBKVM += lib/elf.c
> +LIBKVM += lib/guest_modes.c
> +LIBKVM += lib/io.c
> +LIBKVM += lib/kvm_util.c
> +LIBKVM += lib/memstress.c
> +LIBKVM += lib/guest_sprintf.c
> +LIBKVM += lib/rbtree.c
> +LIBKVM += lib/sparsebit.c
> +LIBKVM += lib/test_util.c
> +LIBKVM += lib/ucall_common.c
> +LIBKVM += lib/userfaultfd_util.c
> +
> +LIBKVM_STRING += lib/string_override.c
> +
> +LIBKVM_x86_64 += lib/x86_64/apic.c
> +LIBKVM_x86_64 += lib/x86_64/handlers.S
> +LIBKVM_x86_64 += lib/x86_64/hyperv.c
> +LIBKVM_x86_64 += lib/x86_64/memstress.c
> +LIBKVM_x86_64 += lib/x86_64/pmu.c
> +LIBKVM_x86_64 += lib/x86_64/processor.c
> +LIBKVM_x86_64 += lib/x86_64/sev.c
> +LIBKVM_x86_64 += lib/x86_64/svm.c
> +LIBKVM_x86_64 += lib/x86_64/ucall.c
> +LIBKVM_x86_64 += lib/x86_64/vmx.c
> +
> +LIBKVM_aarch64 += lib/aarch64/gic.c
> +LIBKVM_aarch64 += lib/aarch64/gic_v3.c
> +LIBKVM_aarch64 += lib/aarch64/gic_v3_its.c
> +LIBKVM_aarch64 += lib/aarch64/handlers.S
> +LIBKVM_aarch64 += lib/aarch64/processor.c
> +LIBKVM_aarch64 += lib/aarch64/spinlock.c
> +LIBKVM_aarch64 += lib/aarch64/ucall.c
> +LIBKVM_aarch64 += lib/aarch64/vgic.c
> +
> +LIBKVM_s390x += lib/s390x/diag318_test_handler.c
> +LIBKVM_s390x += lib/s390x/processor.c
> +LIBKVM_s390x += lib/s390x/ucall.c
> +LIBKVM_s390x += lib/s390x/facility.c
> +
> +LIBKVM_riscv += lib/riscv/handlers.S
> +LIBKVM_riscv += lib/riscv/processor.c
> +LIBKVM_riscv += lib/riscv/ucall.c
> +
> +# Non-compiled test targets
> +TEST_PROGS_x86_64 += x86_64/nx_huge_pages_test.sh
> +
> +# Compiled test targets
> +TEST_GEN_PROGS_x86_64 = x86_64/cpuid_test
> +TEST_GEN_PROGS_x86_64 += x86_64/cr4_cpuid_sync_test
> +TEST_GEN_PROGS_x86_64 += x86_64/dirty_log_page_splitting_test
> +TEST_GEN_PROGS_x86_64 += x86_64/feature_msrs_test
> +TEST_GEN_PROGS_x86_64 += x86_64/exit_on_emulation_failure_test
> +TEST_GEN_PROGS_x86_64 += x86_64/fix_hypercall_test
> +TEST_GEN_PROGS_x86_64 += x86_64/hwcr_msr_test
> +TEST_GEN_PROGS_x86_64 += x86_64/hyperv_clock
> +TEST_GEN_PROGS_x86_64 += x86_64/hyperv_cpuid
> +TEST_GEN_PROGS_x86_64 += x86_64/hyperv_evmcs
> +TEST_GEN_PROGS_x86_64 += x86_64/hyperv_extended_hypercalls
> +TEST_GEN_PROGS_x86_64 += x86_64/hyperv_features
> +TEST_GEN_PROGS_x86_64 += x86_64/hyperv_ipi
> +TEST_GEN_PROGS_x86_64 += x86_64/hyperv_svm_test
> +TEST_GEN_PROGS_x86_64 += x86_64/hyperv_tlb_flush
> +TEST_GEN_PROGS_x86_64 += x86_64/kvm_clock_test
> +TEST_GEN_PROGS_x86_64 += x86_64/kvm_pv_test
> +TEST_GEN_PROGS_x86_64 += x86_64/monitor_mwait_test
> +TEST_GEN_PROGS_x86_64 += x86_64/nested_exceptions_test
> +TEST_GEN_PROGS_x86_64 += x86_64/platform_info_test
> +TEST_GEN_PROGS_x86_64 += x86_64/pmu_counters_test
> +TEST_GEN_PROGS_x86_64 += x86_64/pmu_event_filter_test
> +TEST_GEN_PROGS_x86_64 += x86_64/private_mem_conversions_test
> +TEST_GEN_PROGS_x86_64 += x86_64/private_mem_kvm_exits_test
> +TEST_GEN_PROGS_x86_64 += x86_64/set_boot_cpu_id
> +TEST_GEN_PROGS_x86_64 += x86_64/set_sregs_test
> +TEST_GEN_PROGS_x86_64 += x86_64/smaller_maxphyaddr_emulation_test
> +TEST_GEN_PROGS_x86_64 += x86_64/smm_test
> +TEST_GEN_PROGS_x86_64 += x86_64/state_test
> +TEST_GEN_PROGS_x86_64 += x86_64/vmx_preemption_timer_test
> +TEST_GEN_PROGS_x86_64 += x86_64/svm_vmcall_test
> +TEST_GEN_PROGS_x86_64 += x86_64/svm_int_ctl_test
> +TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_shutdown_test
> +TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_soft_inject_test
> +TEST_GEN_PROGS_x86_64 += x86_64/tsc_scaling_sync
> +TEST_GEN_PROGS_x86_64 += x86_64/sync_regs_test
> +TEST_GEN_PROGS_x86_64 += x86_64/ucna_injection_test
> +TEST_GEN_PROGS_x86_64 += x86_64/userspace_io_test
> +TEST_GEN_PROGS_x86_64 += x86_64/userspace_msr_exit_test
> +TEST_GEN_PROGS_x86_64 += x86_64/vmx_apic_access_test
> +TEST_GEN_PROGS_x86_64 += x86_64/vmx_close_while_nested_test
> +TEST_GEN_PROGS_x86_64 += x86_64/vmx_dirty_log_test
> +TEST_GEN_PROGS_x86_64 += x86_64/vmx_exception_with_invalid_guest_state
> +TEST_GEN_PROGS_x86_64 += x86_64/vmx_msrs_test
> +TEST_GEN_PROGS_x86_64 += x86_64/vmx_invalid_nested_guest_state
> +TEST_GEN_PROGS_x86_64 += x86_64/vmx_set_nested_state_test
> +TEST_GEN_PROGS_x86_64 += x86_64/vmx_tsc_adjust_test
> +TEST_GEN_PROGS_x86_64 += x86_64/vmx_nested_tsc_scaling_test
> +TEST_GEN_PROGS_x86_64 += x86_64/apic_bus_clock_test
> +TEST_GEN_PROGS_x86_64 += x86_64/xapic_ipi_test
> +TEST_GEN_PROGS_x86_64 += x86_64/xapic_state_test
> +TEST_GEN_PROGS_x86_64 += x86_64/xcr0_cpuid_test
> +TEST_GEN_PROGS_x86_64 += x86_64/xss_msr_test
> +TEST_GEN_PROGS_x86_64 += x86_64/debug_regs
> +TEST_GEN_PROGS_x86_64 += x86_64/tsc_msrs_test
> +TEST_GEN_PROGS_x86_64 += x86_64/vmx_pmu_caps_test
> +TEST_GEN_PROGS_x86_64 += x86_64/xen_shinfo_test
> +TEST_GEN_PROGS_x86_64 += x86_64/xen_vmcall_test
> +TEST_GEN_PROGS_x86_64 += x86_64/sev_init2_tests
> +TEST_GEN_PROGS_x86_64 += x86_64/sev_migrate_tests
> +TEST_GEN_PROGS_x86_64 += x86_64/sev_smoke_test
> +TEST_GEN_PROGS_x86_64 += x86_64/amx_test
> +TEST_GEN_PROGS_x86_64 += x86_64/max_vcpuid_cap_test
> +TEST_GEN_PROGS_x86_64 += x86_64/triple_fault_event_test
> +TEST_GEN_PROGS_x86_64 += x86_64/recalc_apic_map_test
> +TEST_GEN_PROGS_x86_64 += access_tracking_perf_test
> +TEST_GEN_PROGS_x86_64 += coalesced_io_test
> +TEST_GEN_PROGS_x86_64 += demand_paging_test
> +TEST_GEN_PROGS_x86_64 += dirty_log_test
> +TEST_GEN_PROGS_x86_64 += dirty_log_perf_test
> +TEST_GEN_PROGS_x86_64 += guest_memfd_test
> +TEST_GEN_PROGS_x86_64 += guest_print_test
> +TEST_GEN_PROGS_x86_64 += hardware_disable_test
> +TEST_GEN_PROGS_x86_64 += kvm_create_max_vcpus
> +TEST_GEN_PROGS_x86_64 += kvm_page_table_test
> +TEST_GEN_PROGS_x86_64 += mmu_stress_test
> +TEST_GEN_PROGS_x86_64 += memslot_modification_stress_test
> +TEST_GEN_PROGS_x86_64 += memslot_perf_test
> +TEST_GEN_PROGS_x86_64 += rseq_test
> +TEST_GEN_PROGS_x86_64 += set_memory_region_test
> +TEST_GEN_PROGS_x86_64 += steal_time
> +TEST_GEN_PROGS_x86_64 += kvm_binary_stats_test
> +TEST_GEN_PROGS_x86_64 += system_counter_offset_test
> +TEST_GEN_PROGS_x86_64 += pre_fault_memory_test
> +
> +# Compiled outputs used by test targets
> +TEST_GEN_PROGS_EXTENDED_x86_64 += x86_64/nx_huge_pages_test
> +
> +TEST_GEN_PROGS_aarch64 += aarch64/aarch32_id_regs
> +TEST_GEN_PROGS_aarch64 += aarch64/arch_timer_edge_cases
> +TEST_GEN_PROGS_aarch64 += aarch64/debug-exceptions
> +TEST_GEN_PROGS_aarch64 += aarch64/hypercalls
> +TEST_GEN_PROGS_aarch64 += aarch64/mmio_abort
> +TEST_GEN_PROGS_aarch64 += aarch64/page_fault_test
> +TEST_GEN_PROGS_aarch64 += aarch64/psci_test
> +TEST_GEN_PROGS_aarch64 += aarch64/set_id_regs
> +TEST_GEN_PROGS_aarch64 += aarch64/smccc_filter
> +TEST_GEN_PROGS_aarch64 += aarch64/vcpu_width_config
> +TEST_GEN_PROGS_aarch64 += aarch64/vgic_init
> +TEST_GEN_PROGS_aarch64 += aarch64/vgic_irq
> +TEST_GEN_PROGS_aarch64 += aarch64/vgic_lpi_stress
> +TEST_GEN_PROGS_aarch64 += aarch64/vpmu_counter_access
> +TEST_GEN_PROGS_aarch64 += aarch64/no-vgic-v3
> +TEST_GEN_PROGS_aarch64 += access_tracking_perf_test
> +TEST_GEN_PROGS_aarch64 += arch_timer
> +TEST_GEN_PROGS_aarch64 += coalesced_io_test
> +TEST_GEN_PROGS_aarch64 += demand_paging_test
> +TEST_GEN_PROGS_aarch64 += dirty_log_test
> +TEST_GEN_PROGS_aarch64 += dirty_log_perf_test
> +TEST_GEN_PROGS_aarch64 += guest_print_test
> +TEST_GEN_PROGS_aarch64 += get-reg-list
> +TEST_GEN_PROGS_aarch64 += kvm_create_max_vcpus
> +TEST_GEN_PROGS_aarch64 += kvm_page_table_test
> +TEST_GEN_PROGS_aarch64 += memslot_modification_stress_test
> +TEST_GEN_PROGS_aarch64 += memslot_perf_test
> +TEST_GEN_PROGS_aarch64 += mmu_stress_test
> +TEST_GEN_PROGS_aarch64 += rseq_test
> +TEST_GEN_PROGS_aarch64 += set_memory_region_test
> +TEST_GEN_PROGS_aarch64 += steal_time
> +TEST_GEN_PROGS_aarch64 += kvm_binary_stats_test
> +
> +TEST_GEN_PROGS_s390x = s390x/memop
> +TEST_GEN_PROGS_s390x += s390x/resets
> +TEST_GEN_PROGS_s390x += s390x/sync_regs_test
> +TEST_GEN_PROGS_s390x += s390x/tprot
> +TEST_GEN_PROGS_s390x += s390x/cmma_test
> +TEST_GEN_PROGS_s390x += s390x/debug_test
> +TEST_GEN_PROGS_s390x += s390x/cpumodel_subfuncs_test
> +TEST_GEN_PROGS_s390x += s390x/shared_zeropage_test
> +TEST_GEN_PROGS_s390x += s390x/ucontrol_test
> +TEST_GEN_PROGS_s390x += demand_paging_test
> +TEST_GEN_PROGS_s390x += dirty_log_test
> +TEST_GEN_PROGS_s390x += guest_print_test
> +TEST_GEN_PROGS_s390x += kvm_create_max_vcpus
> +TEST_GEN_PROGS_s390x += kvm_page_table_test
> +TEST_GEN_PROGS_s390x += rseq_test
> +TEST_GEN_PROGS_s390x += set_memory_region_test
> +TEST_GEN_PROGS_s390x += kvm_binary_stats_test
> +
> +TEST_GEN_PROGS_riscv += riscv/sbi_pmu_test
> +TEST_GEN_PROGS_riscv += riscv/ebreak_test
> +TEST_GEN_PROGS_riscv += arch_timer
> +TEST_GEN_PROGS_riscv += coalesced_io_test
> +TEST_GEN_PROGS_riscv += demand_paging_test
> +TEST_GEN_PROGS_riscv += dirty_log_test
> +TEST_GEN_PROGS_riscv += get-reg-list
> +TEST_GEN_PROGS_riscv += guest_print_test
> +TEST_GEN_PROGS_riscv += kvm_binary_stats_test
> +TEST_GEN_PROGS_riscv += kvm_create_max_vcpus
> +TEST_GEN_PROGS_riscv += kvm_page_table_test
> +TEST_GEN_PROGS_riscv += set_memory_region_test
> +TEST_GEN_PROGS_riscv += steal_time
> +
> +SPLIT_TESTS += arch_timer
> +SPLIT_TESTS += get-reg-list
> +
> +TEST_PROGS += $(TEST_PROGS_$(ARCH_DIR))
> +TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH_DIR))
> +TEST_GEN_PROGS_EXTENDED += $(TEST_GEN_PROGS_EXTENDED_$(ARCH_DIR))
> +LIBKVM += $(LIBKVM_$(ARCH_DIR))
> +
> +OVERRIDE_TARGETS = 1
> +
> +# lib.mak defines $(OUTPUT), prepends $(OUTPUT)/ to $(TEST_GEN_PROGS), and most
> +# importantly defines, i.e. overwrites, $(CC) (unless `make -e` or `make CC=`,
> +# which causes the environment variable to override the makefile).
> +include ../lib.mk
> +
> +INSTALL_HDR_PATH = $(top_srcdir)/usr
> +LINUX_HDR_PATH = $(INSTALL_HDR_PATH)/include/
> +LINUX_TOOL_INCLUDE = $(top_srcdir)/tools/include
> +ifeq ($(ARCH),x86_64)
> +LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/x86/include
> +else
> +LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH)/include
> +endif
> +CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \
> + -Wno-gnu-variable-sized-type-not-at-end -MD -MP -DCONFIG_64BIT \
> + -fno-builtin-memcmp -fno-builtin-memcpy \
> + -fno-builtin-memset -fno-builtin-strnlen \
> + -fno-stack-protector -fno-PIE -fno-strict-aliasing \
> + -I$(LINUX_TOOL_INCLUDE) -I$(LINUX_TOOL_ARCH_INCLUDE) \
> + -I$(LINUX_HDR_PATH) -Iinclude -I$(<D) -Iinclude/$(ARCH_DIR) \
> + -I ../rseq -I.. $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
> +ifeq ($(ARCH),s390)
> + CFLAGS += -march=z10
> +endif
> +ifeq ($(ARCH),x86)
> +ifeq ($(shell echo "void foo(void) { }" | $(CC) -march=x86-64-v2 -x c - -c -o /dev/null 2>/dev/null; echo "$$?"),0)
> + CFLAGS += -march=x86-64-v2
> +endif
> +endif
> +ifeq ($(ARCH),arm64)
> +tools_dir := $(top_srcdir)/tools
> +arm64_tools_dir := $(tools_dir)/arch/arm64/tools/
> +
> +ifneq ($(abs_objdir),)
> +arm64_hdr_outdir := $(abs_objdir)/tools/
> +else
> +arm64_hdr_outdir := $(tools_dir)/
> +endif
> +
> +GEN_HDRS := $(arm64_hdr_outdir)arch/arm64/include/generated/
> +CFLAGS += -I$(GEN_HDRS)
> +
> +$(GEN_HDRS): $(wildcard $(arm64_tools_dir)/*)
> + $(MAKE) -C $(arm64_tools_dir) OUTPUT=$(arm64_hdr_outdir)
> +endif
> +
> +no-pie-option := $(call try-run, echo 'int main(void) { return 0; }' | \
> + $(CC) -Werror $(CFLAGS) -no-pie -x c - -o "$$TMP", -no-pie)
> +
> +# On s390, build the testcases KVM-enabled
> +pgste-option = $(call try-run, echo 'int main(void) { return 0; }' | \
> + $(CC) -Werror -Wl$(comma)--s390-pgste -x c - -o "$$TMP",-Wl$(comma)--s390-pgste)
> +
> +LDLIBS += -ldl
> +LDFLAGS += -pthread $(no-pie-option) $(pgste-option)
> +
> +LIBKVM_C := $(filter %.c,$(LIBKVM))
> +LIBKVM_S := $(filter %.S,$(LIBKVM))
> +LIBKVM_C_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_C))
> +LIBKVM_S_OBJ := $(patsubst %.S, $(OUTPUT)/%.o, $(LIBKVM_S))
> +LIBKVM_STRING_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_STRING))
> +LIBKVM_OBJS = $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ) $(LIBKVM_STRING_OBJ)
> +SPLIT_TEST_GEN_PROGS := $(patsubst %, $(OUTPUT)/%, $(SPLIT_TESTS))
> +SPLIT_TEST_GEN_OBJ := $(patsubst %, $(OUTPUT)/$(ARCH_DIR)/%.o, $(SPLIT_TESTS))
> +
> +TEST_GEN_OBJ = $(patsubst %, %.o, $(TEST_GEN_PROGS))
> +TEST_GEN_OBJ += $(patsubst %, %.o, $(TEST_GEN_PROGS_EXTENDED))
> +TEST_DEP_FILES = $(patsubst %.o, %.d, $(TEST_GEN_OBJ))
> +TEST_DEP_FILES += $(patsubst %.o, %.d, $(LIBKVM_OBJS))
> +TEST_DEP_FILES += $(patsubst %.o, %.d, $(SPLIT_TEST_GEN_OBJ))
> +-include $(TEST_DEP_FILES)
> +
> +$(shell mkdir -p $(sort $(OUTPUT)/$(ARCH_DIR) $(dir $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ))))
> +
> +$(filter-out $(SPLIT_TEST_GEN_PROGS), $(TEST_GEN_PROGS)) \
> +$(TEST_GEN_PROGS_EXTENDED): %: %.o
> + $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $< $(LIBKVM_OBJS) $(LDLIBS) -o $@
> +$(TEST_GEN_OBJ): $(OUTPUT)/%.o: %.c
> + $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
> +
> +$(SPLIT_TEST_GEN_PROGS): $(OUTPUT)/%: $(OUTPUT)/%.o $(OUTPUT)/$(ARCH_DIR)/%.o
> + $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@
> +$(SPLIT_TEST_GEN_OBJ): $(OUTPUT)/$(ARCH_DIR)/%.o: $(ARCH_DIR)/%.c
> + $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
> +
> +EXTRA_CLEAN += $(GEN_HDRS) \
> + $(LIBKVM_OBJS) \
> + $(SPLIT_TEST_GEN_OBJ) \
> + $(TEST_DEP_FILES) \
> + $(TEST_GEN_OBJ) \
> + cscope.*
> +
> +$(LIBKVM_C_OBJ): $(OUTPUT)/%.o: %.c $(GEN_HDRS)
> + $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
> +
> +$(LIBKVM_S_OBJ): $(OUTPUT)/%.o: %.S $(GEN_HDRS)
> + $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
> +
> +# Compile the string overrides as freestanding to prevent the compiler from
> +# generating self-referential code, e.g. without "freestanding" the compiler may
> +# "optimize" memcmp() by invoking memcmp(), thus causing infinite recursion.
> +$(LIBKVM_STRING_OBJ): $(OUTPUT)/%.o: %.c
> + $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@
> +
> +$(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))))
> +$(SPLIT_TEST_GEN_OBJ): $(GEN_HDRS)
> +$(TEST_GEN_PROGS): $(LIBKVM_OBJS)
> +$(TEST_GEN_PROGS_EXTENDED): $(LIBKVM_OBJS)
> +$(TEST_GEN_OBJ): $(GEN_HDRS)
> +
> +cscope: include_paths = $(LINUX_TOOL_INCLUDE) $(LINUX_HDR_PATH) include lib ..
> +cscope:
> + $(RM) cscope.*
> + (find $(include_paths) -name '*.h' \
> + -exec realpath --relative-base=$(PWD) {} \;; \
> + find . -name '*.c' \
> + -exec realpath --relative-base=$(PWD) {} \;) | sort -u > cscope.files
> + cscope -b
--
BR,
Muhammad Usama Anjum
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories
2024-11-28 0:55 ` [PATCH v4 15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories Sean Christopherson
@ 2024-11-28 8:20 ` Muhammad Usama Anjum
2024-11-28 8:25 ` Claudio Imbrenda
2024-11-28 8:43 ` Andrew Jones
2 siblings, 0 replies; 32+ messages in thread
From: Muhammad Usama Anjum @ 2024-11-28 8:20 UTC (permalink / raw)
To: Sean Christopherson, Marc Zyngier, Oliver Upton, Anup Patel,
Paul Walmsley, Palmer Dabbelt, Albert Ou, Paolo Bonzini,
Christian Borntraeger, Janosch Frank, Claudio Imbrenda
Cc: Usama.Anjum, linux-arm-kernel, kvmarm, kvm, kvm-riscv,
linux-riscv, linux-kernel, Andrew Jones, James Houghton
On 11/28/24 5:55 AM, Sean Christopherson wrote:
> Use the kernel's canonical $(ARCH) paths instead of the raw target triple
> for KVM selftests directories. KVM selftests are quite nearly the only
> place in the entire kernel that using the target triple for directories,
> tools/testing/selftests/drivers/s390x being the lone holdout.
>
> Using the kernel's preferred nomenclature eliminates the minor, but
> annoying, friction of having to translate to KVM's selftests directories,
> e.g. for pattern matching, opening files, running selftests, etc.
>
> Opportunsitically delete file comments that reference the full path of the
> file, as they are obviously prone to becoming stale, and serve no known
> purpose.
>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> ---
> MAINTAINERS | 12 +-
> tools/testing/selftests/kvm/Makefile | 10 +-
> tools/testing/selftests/kvm/Makefile.kvm | 320 +++++++++---------
> .../kvm/{aarch64 => arm64}/aarch32_id_regs.c | 0
> .../kvm/{aarch64 => arm64}/arch_timer.c | 0
> .../arch_timer_edge_cases.c | 0
> .../kvm/{aarch64 => arm64}/debug-exceptions.c | 0
> .../kvm/{aarch64 => arm64}/get-reg-list.c | 0
> .../kvm/{aarch64 => arm64}/hypercalls.c | 0
> .../kvm/{aarch64 => arm64}/mmio_abort.c | 0
> .../kvm/{aarch64 => arm64}/no-vgic-v3.c | 0
> .../kvm/{aarch64 => arm64}/page_fault_test.c | 0
> .../kvm/{aarch64 => arm64}/psci_test.c | 0
> .../kvm/{aarch64 => arm64}/set_id_regs.c | 0
> .../kvm/{aarch64 => arm64}/smccc_filter.c | 0
> .../{aarch64 => arm64}/vcpu_width_config.c | 0
> .../kvm/{aarch64 => arm64}/vgic_init.c | 0
> .../kvm/{aarch64 => arm64}/vgic_irq.c | 0
> .../kvm/{aarch64 => arm64}/vgic_lpi_stress.c | 0
> .../{aarch64 => arm64}/vpmu_counter_access.c | 0
> .../selftests/kvm/dirty_log_perf_test.c | 2 +-
> .../include/{aarch64 => arm64}/arch_timer.h | 0
> .../kvm/include/{aarch64 => arm64}/delay.h | 0
> .../kvm/include/{aarch64 => arm64}/gic.h | 0
> .../kvm/include/{aarch64 => arm64}/gic_v3.h | 0
> .../include/{aarch64 => arm64}/gic_v3_its.h | 0
> .../{aarch64 => arm64}/kvm_util_arch.h | 0
> .../include/{aarch64 => arm64}/processor.h | 0
> .../kvm/include/{aarch64 => arm64}/spinlock.h | 0
> .../kvm/include/{aarch64 => arm64}/ucall.h | 0
> .../kvm/include/{aarch64 => arm64}/vgic.h | 0
> .../kvm/include/{s390x => s390}/debug_print.h | 0
> .../{s390x => s390}/diag318_test_handler.h | 0
> .../kvm/include/{s390x => s390}/facility.h | 0
> .../include/{s390x => s390}/kvm_util_arch.h | 0
> .../kvm/include/{s390x => s390}/processor.h | 0
> .../kvm/include/{s390x => s390}/sie.h | 0
> .../kvm/include/{s390x => s390}/ucall.h | 0
> .../kvm/include/{x86_64 => x86}/apic.h | 2 -
> .../kvm/include/{x86_64 => x86}/evmcs.h | 3 -
> .../kvm/include/{x86_64 => x86}/hyperv.h | 3 -
> .../include/{x86_64 => x86}/kvm_util_arch.h | 0
> .../kvm/include/{x86_64 => x86}/mce.h | 2 -
> .../kvm/include/{x86_64 => x86}/pmu.h | 0
> .../kvm/include/{x86_64 => x86}/processor.h | 2 -
> .../kvm/include/{x86_64 => x86}/sev.h | 0
> .../kvm/include/{x86_64 => x86}/svm.h | 6 -
> .../kvm/include/{x86_64 => x86}/svm_util.h | 3 -
> .../kvm/include/{x86_64 => x86}/ucall.h | 0
> .../kvm/include/{x86_64 => x86}/vmx.h | 2 -
> .../kvm/lib/{aarch64 => arm64}/gic.c | 0
> .../kvm/lib/{aarch64 => arm64}/gic_private.h | 0
> .../kvm/lib/{aarch64 => arm64}/gic_v3.c | 0
> .../kvm/lib/{aarch64 => arm64}/gic_v3_its.c | 0
> .../kvm/lib/{aarch64 => arm64}/handlers.S | 0
> .../kvm/lib/{aarch64 => arm64}/processor.c | 0
> .../kvm/lib/{aarch64 => arm64}/spinlock.c | 0
> .../kvm/lib/{aarch64 => arm64}/ucall.c | 0
> .../kvm/lib/{aarch64 => arm64}/vgic.c | 0
> .../{s390x => s390}/diag318_test_handler.c | 0
> .../kvm/lib/{s390x => s390}/facility.c | 0
> .../kvm/lib/{s390x => s390}/processor.c | 0
> .../selftests/kvm/lib/{s390x => s390}/ucall.c | 0
> .../selftests/kvm/lib/{x86_64 => x86}/apic.c | 0
> .../kvm/lib/{x86_64 => x86}/handlers.S | 0
> .../kvm/lib/{x86_64 => x86}/hyperv.c | 0
> .../kvm/lib/{x86_64 => x86}/memstress.c | 2 +-
> .../selftests/kvm/lib/{x86_64 => x86}/pmu.c | 0
> .../kvm/lib/{x86_64 => x86}/processor.c | 2 -
> .../selftests/kvm/lib/{x86_64 => x86}/sev.c | 0
> .../selftests/kvm/lib/{x86_64 => x86}/svm.c | 1 -
> .../selftests/kvm/lib/{x86_64 => x86}/ucall.c | 0
> .../selftests/kvm/lib/{x86_64 => x86}/vmx.c | 2 -
> .../selftests/kvm/{s390x => s390}/cmma_test.c | 0
> .../selftests/kvm/{s390x => s390}/config | 0
> .../{s390x => s390}/cpumodel_subfuncs_test.c | 0
> .../kvm/{s390x => s390}/debug_test.c | 0
> .../selftests/kvm/{s390x => s390}/memop.c | 0
> .../selftests/kvm/{s390x => s390}/resets.c | 0
> .../{s390x => s390}/shared_zeropage_test.c | 0
> .../kvm/{s390x => s390}/sync_regs_test.c | 0
> .../selftests/kvm/{s390x => s390}/tprot.c | 0
> .../kvm/{s390x => s390}/ucontrol_test.c | 0
> .../selftests/kvm/set_memory_region_test.c | 6 +-
> .../selftests/kvm/{x86_64 => x86}/amx_test.c | 0
> .../kvm/{x86_64 => x86}/apic_bus_clock_test.c | 0
> .../kvm/{x86_64 => x86}/cpuid_test.c | 0
> .../kvm/{x86_64 => x86}/cr4_cpuid_sync_test.c | 0
> .../kvm/{x86_64 => x86}/debug_regs.c | 0
> .../dirty_log_page_splitting_test.c | 0
> .../exit_on_emulation_failure_test.c | 0
> .../kvm/{x86_64 => x86}/feature_msrs_test.c | 0
> .../kvm/{x86_64 => x86}/fix_hypercall_test.c | 0
> .../kvm/{x86_64 => x86}/flds_emulation.h | 0
> .../kvm/{x86_64 => x86}/hwcr_msr_test.c | 0
> .../kvm/{x86_64 => x86}/hyperv_clock.c | 0
> .../kvm/{x86_64 => x86}/hyperv_cpuid.c | 0
> .../kvm/{x86_64 => x86}/hyperv_evmcs.c | 0
> .../hyperv_extended_hypercalls.c | 0
> .../kvm/{x86_64 => x86}/hyperv_features.c | 0
> .../kvm/{x86_64 => x86}/hyperv_ipi.c | 0
> .../kvm/{x86_64 => x86}/hyperv_svm_test.c | 0
> .../kvm/{x86_64 => x86}/hyperv_tlb_flush.c | 0
> .../kvm/{x86_64 => x86}/kvm_clock_test.c | 0
> .../kvm/{x86_64 => x86}/kvm_pv_test.c | 0
> .../kvm/{x86_64 => x86}/max_vcpuid_cap_test.c | 0
> .../kvm/{x86_64 => x86}/monitor_mwait_test.c | 0
> .../{x86_64 => x86}/nested_exceptions_test.c | 0
> .../kvm/{x86_64 => x86}/nx_huge_pages_test.c | 0
> .../kvm/{x86_64 => x86}/nx_huge_pages_test.sh | 0
> .../kvm/{x86_64 => x86}/platform_info_test.c | 0
> .../kvm/{x86_64 => x86}/pmu_counters_test.c | 0
> .../{x86_64 => x86}/pmu_event_filter_test.c | 0
> .../private_mem_conversions_test.c | 0
> .../private_mem_kvm_exits_test.c | 0
> .../{x86_64 => x86}/recalc_apic_map_test.c | 0
> .../kvm/{x86_64 => x86}/set_boot_cpu_id.c | 0
> .../kvm/{x86_64 => x86}/set_sregs_test.c | 0
> .../kvm/{x86_64 => x86}/sev_init2_tests.c | 0
> .../kvm/{x86_64 => x86}/sev_migrate_tests.c | 0
> .../kvm/{x86_64 => x86}/sev_smoke_test.c | 0
> .../smaller_maxphyaddr_emulation_test.c | 0
> .../selftests/kvm/{x86_64 => x86}/smm_test.c | 0
> .../kvm/{x86_64 => x86}/state_test.c | 0
> .../kvm/{x86_64 => x86}/svm_int_ctl_test.c | 0
> .../svm_nested_shutdown_test.c | 0
> .../svm_nested_soft_inject_test.c | 0
> .../kvm/{x86_64 => x86}/svm_vmcall_test.c | 0
> .../kvm/{x86_64 => x86}/sync_regs_test.c | 0
> .../{x86_64 => x86}/triple_fault_event_test.c | 0
> .../kvm/{x86_64 => x86}/tsc_msrs_test.c | 0
> .../kvm/{x86_64 => x86}/tsc_scaling_sync.c | 0
> .../kvm/{x86_64 => x86}/ucna_injection_test.c | 0
> .../kvm/{x86_64 => x86}/userspace_io_test.c | 0
> .../{x86_64 => x86}/userspace_msr_exit_test.c | 0
> .../{x86_64 => x86}/vmx_apic_access_test.c | 0
> .../vmx_close_while_nested_test.c | 0
> .../kvm/{x86_64 => x86}/vmx_dirty_log_test.c | 0
> .../vmx_exception_with_invalid_guest_state.c | 0
> .../vmx_invalid_nested_guest_state.c | 0
> .../kvm/{x86_64 => x86}/vmx_msrs_test.c | 0
> .../vmx_nested_tsc_scaling_test.c | 0
> .../kvm/{x86_64 => x86}/vmx_pmu_caps_test.c | 0
> .../vmx_preemption_timer_test.c | 0
> .../vmx_set_nested_state_test.c | 0
> .../kvm/{x86_64 => x86}/vmx_tsc_adjust_test.c | 0
> .../kvm/{x86_64 => x86}/xapic_ipi_test.c | 0
> .../kvm/{x86_64 => x86}/xapic_state_test.c | 0
> .../kvm/{x86_64 => x86}/xcr0_cpuid_test.c | 0
> .../kvm/{x86_64 => x86}/xen_shinfo_test.c | 0
> .../kvm/{x86_64 => x86}/xen_vmcall_test.c | 0
> .../kvm/{x86_64 => x86}/xss_msr_test.c | 0
> 152 files changed, 172 insertions(+), 208 deletions(-)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/aarch32_id_regs.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer_edge_cases.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/debug-exceptions.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/get-reg-list.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/hypercalls.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/mmio_abort.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/no-vgic-v3.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/page_fault_test.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/psci_test.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/set_id_regs.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/smccc_filter.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/vcpu_width_config.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_init.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_irq.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_lpi_stress.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/vpmu_counter_access.c (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/arch_timer.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/delay.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3_its.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/kvm_util_arch.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/processor.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/spinlock.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/ucall.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/vgic.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/debug_print.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/diag318_test_handler.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/facility.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/kvm_util_arch.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/processor.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/sie.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/ucall.h (100%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/apic.h (98%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/evmcs.h (99%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/hyperv.h (99%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/kvm_util_arch.h (100%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/mce.h (94%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/pmu.h (100%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/processor.h (99%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/sev.h (100%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/svm.h (98%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/svm_util.h (94%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/ucall.h (100%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/vmx.h (99%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic.c (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_private.h (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3.c (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3_its.c (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/handlers.S (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/processor.c (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/spinlock.c (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/ucall.c (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/vgic.c (100%)
> rename tools/testing/selftests/kvm/lib/{s390x => s390}/diag318_test_handler.c (100%)
> rename tools/testing/selftests/kvm/lib/{s390x => s390}/facility.c (100%)
> rename tools/testing/selftests/kvm/lib/{s390x => s390}/processor.c (100%)
> rename tools/testing/selftests/kvm/lib/{s390x => s390}/ucall.c (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/apic.c (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/handlers.S (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/hyperv.c (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/memstress.c (98%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/pmu.c (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/processor.c (99%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/sev.c (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/svm.c (99%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/ucall.c (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/vmx.c (99%)
> rename tools/testing/selftests/kvm/{s390x => s390}/cmma_test.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/config (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/cpumodel_subfuncs_test.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/debug_test.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/memop.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/resets.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/shared_zeropage_test.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/sync_regs_test.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/tprot.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/ucontrol_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/amx_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/apic_bus_clock_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/cpuid_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/cr4_cpuid_sync_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/debug_regs.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/dirty_log_page_splitting_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/exit_on_emulation_failure_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/feature_msrs_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/fix_hypercall_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/flds_emulation.h (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hwcr_msr_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_clock.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_cpuid.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_evmcs.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_extended_hypercalls.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_features.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_ipi.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_svm_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_tlb_flush.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/kvm_clock_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/kvm_pv_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/max_vcpuid_cap_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/monitor_mwait_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/nested_exceptions_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.sh (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/platform_info_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/pmu_counters_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/pmu_event_filter_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_conversions_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_kvm_exits_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/recalc_apic_map_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/set_boot_cpu_id.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/set_sregs_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_init2_tests.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_migrate_tests.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_smoke_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/smaller_maxphyaddr_emulation_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/smm_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/state_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_int_ctl_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_shutdown_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_soft_inject_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_vmcall_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/sync_regs_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/triple_fault_event_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/tsc_msrs_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/tsc_scaling_sync.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/ucna_injection_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/userspace_io_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/userspace_msr_exit_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_apic_access_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_close_while_nested_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_dirty_log_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_exception_with_invalid_guest_state.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_invalid_nested_guest_state.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_msrs_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_nested_tsc_scaling_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_pmu_caps_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_preemption_timer_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_set_nested_state_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_tsc_adjust_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/xapic_ipi_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/xapic_state_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/xcr0_cpuid_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/xen_shinfo_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/xen_vmcall_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/xss_msr_test.c (100%)
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 21fdaa19229a..c2939c8f7ce4 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -12461,8 +12461,8 @@ F: arch/arm64/include/asm/kvm*
> F: arch/arm64/include/uapi/asm/kvm*
> F: arch/arm64/kvm/
> F: include/kvm/arm_*
> -F: tools/testing/selftests/kvm/*/aarch64/
> -F: tools/testing/selftests/kvm/aarch64/
> +F: tools/testing/selftests/kvm/*/arm64/
> +F: tools/testing/selftests/kvm/arm64/
>
> KERNEL VIRTUAL MACHINE FOR LOONGARCH (KVM/LoongArch)
> M: Tianrui Zhao <zhaotianrui@loongson.cn>
> @@ -12533,8 +12533,8 @@ F: arch/s390/kvm/
> F: arch/s390/mm/gmap.c
> F: drivers/s390/char/uvdevice.c
> F: tools/testing/selftests/drivers/s390x/uvdevice/
> -F: tools/testing/selftests/kvm/*/s390x/
> -F: tools/testing/selftests/kvm/s390x/
> +F: tools/testing/selftests/kvm/*/s390/
> +F: tools/testing/selftests/kvm/s390/
>
> KERNEL VIRTUAL MACHINE FOR X86 (KVM/x86)
> M: Sean Christopherson <seanjc@google.com>
> @@ -12551,8 +12551,8 @@ F: arch/x86/include/uapi/asm/svm.h
> F: arch/x86/include/uapi/asm/vmx.h
> F: arch/x86/kvm/
> F: arch/x86/kvm/*/
> -F: tools/testing/selftests/kvm/*/x86_64/
> -F: tools/testing/selftests/kvm/x86_64/
> +F: tools/testing/selftests/kvm/*/x86/
> +F: tools/testing/selftests/kvm/x86/
>
> KERNFS
> M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
> index 7b33464bf8cc..9bc2eba1af1c 100644
> --- a/tools/testing/selftests/kvm/Makefile
> +++ b/tools/testing/selftests/kvm/Makefile
> @@ -4,16 +4,12 @@ include $(top_srcdir)/scripts/subarch.include
> ARCH ?= $(SUBARCH)
>
> ifeq ($(ARCH),$(filter $(ARCH),arm64 s390 riscv x86 x86_64))
> -ifeq ($(ARCH),x86)
> - ARCH_DIR := x86_64
> -else ifeq ($(ARCH),arm64)
> - ARCH_DIR := aarch64
> -else ifeq ($(ARCH),s390)
> - ARCH_DIR := s390x
> +# Top-level selftests allows ARCH=x86_64 :-(
> +ifeq ($(ARCH),x86_64)
> + ARCH_DIR := x86
> else
> ARCH_DIR := $(ARCH)
> endif
> -
> include Makefile.kvm
> else
> # Empty targets for unsupported architectures
> diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
> index e988a72f8c20..9888dd6bb483 100644
> --- a/tools/testing/selftests/kvm/Makefile.kvm
> +++ b/tools/testing/selftests/kvm/Makefile.kvm
> @@ -18,177 +18,177 @@ LIBKVM += lib/userfaultfd_util.c
>
> LIBKVM_STRING += lib/string_override.c
>
> -LIBKVM_x86_64 += lib/x86_64/apic.c
> -LIBKVM_x86_64 += lib/x86_64/handlers.S
> -LIBKVM_x86_64 += lib/x86_64/hyperv.c
> -LIBKVM_x86_64 += lib/x86_64/memstress.c
> -LIBKVM_x86_64 += lib/x86_64/pmu.c
> -LIBKVM_x86_64 += lib/x86_64/processor.c
> -LIBKVM_x86_64 += lib/x86_64/sev.c
> -LIBKVM_x86_64 += lib/x86_64/svm.c
> -LIBKVM_x86_64 += lib/x86_64/ucall.c
> -LIBKVM_x86_64 += lib/x86_64/vmx.c
> +LIBKVM_x86 += lib/x86/apic.c
> +LIBKVM_x86 += lib/x86/handlers.S
> +LIBKVM_x86 += lib/x86/hyperv.c
> +LIBKVM_x86 += lib/x86/memstress.c
> +LIBKVM_x86 += lib/x86/pmu.c
> +LIBKVM_x86 += lib/x86/processor.c
> +LIBKVM_x86 += lib/x86/sev.c
> +LIBKVM_x86 += lib/x86/svm.c
> +LIBKVM_x86 += lib/x86/ucall.c
> +LIBKVM_x86 += lib/x86/vmx.c
>
> -LIBKVM_aarch64 += lib/aarch64/gic.c
> -LIBKVM_aarch64 += lib/aarch64/gic_v3.c
> -LIBKVM_aarch64 += lib/aarch64/gic_v3_its.c
> -LIBKVM_aarch64 += lib/aarch64/handlers.S
> -LIBKVM_aarch64 += lib/aarch64/processor.c
> -LIBKVM_aarch64 += lib/aarch64/spinlock.c
> -LIBKVM_aarch64 += lib/aarch64/ucall.c
> -LIBKVM_aarch64 += lib/aarch64/vgic.c
> +LIBKVM_arm64 += lib/arm64/gic.c
> +LIBKVM_arm64 += lib/arm64/gic_v3.c
> +LIBKVM_arm64 += lib/arm64/gic_v3_its.c
> +LIBKVM_arm64 += lib/arm64/handlers.S
> +LIBKVM_arm64 += lib/arm64/processor.c
> +LIBKVM_arm64 += lib/arm64/spinlock.c
> +LIBKVM_arm64 += lib/arm64/ucall.c
> +LIBKVM_arm64 += lib/arm64/vgic.c
>
> -LIBKVM_s390x += lib/s390x/diag318_test_handler.c
> -LIBKVM_s390x += lib/s390x/processor.c
> -LIBKVM_s390x += lib/s390x/ucall.c
> -LIBKVM_s390x += lib/s390x/facility.c
> +LIBKVM_s390 += lib/s390/diag318_test_handler.c
> +LIBKVM_s390 += lib/s390/processor.c
> +LIBKVM_s390 += lib/s390/ucall.c
> +LIBKVM_s390 += lib/s390/facility.c
>
> LIBKVM_riscv += lib/riscv/handlers.S
> LIBKVM_riscv += lib/riscv/processor.c
> LIBKVM_riscv += lib/riscv/ucall.c
>
> # Non-compiled test targets
> -TEST_PROGS_x86_64 += x86_64/nx_huge_pages_test.sh
> +TEST_PROGS_x86 += x86/nx_huge_pages_test.sh
>
> # Compiled test targets
> -TEST_GEN_PROGS_x86_64 = x86_64/cpuid_test
> -TEST_GEN_PROGS_x86_64 += x86_64/cr4_cpuid_sync_test
> -TEST_GEN_PROGS_x86_64 += x86_64/dirty_log_page_splitting_test
> -TEST_GEN_PROGS_x86_64 += x86_64/feature_msrs_test
> -TEST_GEN_PROGS_x86_64 += x86_64/exit_on_emulation_failure_test
> -TEST_GEN_PROGS_x86_64 += x86_64/fix_hypercall_test
> -TEST_GEN_PROGS_x86_64 += x86_64/hwcr_msr_test
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_clock
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_cpuid
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_evmcs
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_extended_hypercalls
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_features
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_ipi
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_svm_test
> -TEST_GEN_PROGS_x86_64 += x86_64/hyperv_tlb_flush
> -TEST_GEN_PROGS_x86_64 += x86_64/kvm_clock_test
> -TEST_GEN_PROGS_x86_64 += x86_64/kvm_pv_test
> -TEST_GEN_PROGS_x86_64 += x86_64/monitor_mwait_test
> -TEST_GEN_PROGS_x86_64 += x86_64/nested_exceptions_test
> -TEST_GEN_PROGS_x86_64 += x86_64/platform_info_test
> -TEST_GEN_PROGS_x86_64 += x86_64/pmu_counters_test
> -TEST_GEN_PROGS_x86_64 += x86_64/pmu_event_filter_test
> -TEST_GEN_PROGS_x86_64 += x86_64/private_mem_conversions_test
> -TEST_GEN_PROGS_x86_64 += x86_64/private_mem_kvm_exits_test
> -TEST_GEN_PROGS_x86_64 += x86_64/set_boot_cpu_id
> -TEST_GEN_PROGS_x86_64 += x86_64/set_sregs_test
> -TEST_GEN_PROGS_x86_64 += x86_64/smaller_maxphyaddr_emulation_test
> -TEST_GEN_PROGS_x86_64 += x86_64/smm_test
> -TEST_GEN_PROGS_x86_64 += x86_64/state_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_preemption_timer_test
> -TEST_GEN_PROGS_x86_64 += x86_64/svm_vmcall_test
> -TEST_GEN_PROGS_x86_64 += x86_64/svm_int_ctl_test
> -TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_shutdown_test
> -TEST_GEN_PROGS_x86_64 += x86_64/svm_nested_soft_inject_test
> -TEST_GEN_PROGS_x86_64 += x86_64/tsc_scaling_sync
> -TEST_GEN_PROGS_x86_64 += x86_64/sync_regs_test
> -TEST_GEN_PROGS_x86_64 += x86_64/ucna_injection_test
> -TEST_GEN_PROGS_x86_64 += x86_64/userspace_io_test
> -TEST_GEN_PROGS_x86_64 += x86_64/userspace_msr_exit_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_apic_access_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_close_while_nested_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_dirty_log_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_exception_with_invalid_guest_state
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_msrs_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_invalid_nested_guest_state
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_set_nested_state_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_tsc_adjust_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_nested_tsc_scaling_test
> -TEST_GEN_PROGS_x86_64 += x86_64/apic_bus_clock_test
> -TEST_GEN_PROGS_x86_64 += x86_64/xapic_ipi_test
> -TEST_GEN_PROGS_x86_64 += x86_64/xapic_state_test
> -TEST_GEN_PROGS_x86_64 += x86_64/xcr0_cpuid_test
> -TEST_GEN_PROGS_x86_64 += x86_64/xss_msr_test
> -TEST_GEN_PROGS_x86_64 += x86_64/debug_regs
> -TEST_GEN_PROGS_x86_64 += x86_64/tsc_msrs_test
> -TEST_GEN_PROGS_x86_64 += x86_64/vmx_pmu_caps_test
> -TEST_GEN_PROGS_x86_64 += x86_64/xen_shinfo_test
> -TEST_GEN_PROGS_x86_64 += x86_64/xen_vmcall_test
> -TEST_GEN_PROGS_x86_64 += x86_64/sev_init2_tests
> -TEST_GEN_PROGS_x86_64 += x86_64/sev_migrate_tests
> -TEST_GEN_PROGS_x86_64 += x86_64/sev_smoke_test
> -TEST_GEN_PROGS_x86_64 += x86_64/amx_test
> -TEST_GEN_PROGS_x86_64 += x86_64/max_vcpuid_cap_test
> -TEST_GEN_PROGS_x86_64 += x86_64/triple_fault_event_test
> -TEST_GEN_PROGS_x86_64 += x86_64/recalc_apic_map_test
> -TEST_GEN_PROGS_x86_64 += access_tracking_perf_test
> -TEST_GEN_PROGS_x86_64 += coalesced_io_test
> -TEST_GEN_PROGS_x86_64 += demand_paging_test
> -TEST_GEN_PROGS_x86_64 += dirty_log_test
> -TEST_GEN_PROGS_x86_64 += dirty_log_perf_test
> -TEST_GEN_PROGS_x86_64 += guest_memfd_test
> -TEST_GEN_PROGS_x86_64 += guest_print_test
> -TEST_GEN_PROGS_x86_64 += hardware_disable_test
> -TEST_GEN_PROGS_x86_64 += kvm_create_max_vcpus
> -TEST_GEN_PROGS_x86_64 += kvm_page_table_test
> -TEST_GEN_PROGS_x86_64 += mmu_stress_test
> -TEST_GEN_PROGS_x86_64 += memslot_modification_stress_test
> -TEST_GEN_PROGS_x86_64 += memslot_perf_test
> -TEST_GEN_PROGS_x86_64 += rseq_test
> -TEST_GEN_PROGS_x86_64 += set_memory_region_test
> -TEST_GEN_PROGS_x86_64 += steal_time
> -TEST_GEN_PROGS_x86_64 += kvm_binary_stats_test
> -TEST_GEN_PROGS_x86_64 += system_counter_offset_test
> -TEST_GEN_PROGS_x86_64 += pre_fault_memory_test
> +TEST_GEN_PROGS_x86 = x86/cpuid_test
> +TEST_GEN_PROGS_x86 += x86/cr4_cpuid_sync_test
> +TEST_GEN_PROGS_x86 += x86/dirty_log_page_splitting_test
> +TEST_GEN_PROGS_x86 += x86/feature_msrs_test
> +TEST_GEN_PROGS_x86 += x86/exit_on_emulation_failure_test
> +TEST_GEN_PROGS_x86 += x86/fix_hypercall_test
> +TEST_GEN_PROGS_x86 += x86/hwcr_msr_test
> +TEST_GEN_PROGS_x86 += x86/hyperv_clock
> +TEST_GEN_PROGS_x86 += x86/hyperv_cpuid
> +TEST_GEN_PROGS_x86 += x86/hyperv_evmcs
> +TEST_GEN_PROGS_x86 += x86/hyperv_extended_hypercalls
> +TEST_GEN_PROGS_x86 += x86/hyperv_features
> +TEST_GEN_PROGS_x86 += x86/hyperv_ipi
> +TEST_GEN_PROGS_x86 += x86/hyperv_svm_test
> +TEST_GEN_PROGS_x86 += x86/hyperv_tlb_flush
> +TEST_GEN_PROGS_x86 += x86/kvm_clock_test
> +TEST_GEN_PROGS_x86 += x86/kvm_pv_test
> +TEST_GEN_PROGS_x86 += x86/monitor_mwait_test
> +TEST_GEN_PROGS_x86 += x86/nested_exceptions_test
> +TEST_GEN_PROGS_x86 += x86/platform_info_test
> +TEST_GEN_PROGS_x86 += x86/pmu_counters_test
> +TEST_GEN_PROGS_x86 += x86/pmu_event_filter_test
> +TEST_GEN_PROGS_x86 += x86/private_mem_conversions_test
> +TEST_GEN_PROGS_x86 += x86/private_mem_kvm_exits_test
> +TEST_GEN_PROGS_x86 += x86/set_boot_cpu_id
> +TEST_GEN_PROGS_x86 += x86/set_sregs_test
> +TEST_GEN_PROGS_x86 += x86/smaller_maxphyaddr_emulation_test
> +TEST_GEN_PROGS_x86 += x86/smm_test
> +TEST_GEN_PROGS_x86 += x86/state_test
> +TEST_GEN_PROGS_x86 += x86/vmx_preemption_timer_test
> +TEST_GEN_PROGS_x86 += x86/svm_vmcall_test
> +TEST_GEN_PROGS_x86 += x86/svm_int_ctl_test
> +TEST_GEN_PROGS_x86 += x86/svm_nested_shutdown_test
> +TEST_GEN_PROGS_x86 += x86/svm_nested_soft_inject_test
> +TEST_GEN_PROGS_x86 += x86/tsc_scaling_sync
> +TEST_GEN_PROGS_x86 += x86/sync_regs_test
> +TEST_GEN_PROGS_x86 += x86/ucna_injection_test
> +TEST_GEN_PROGS_x86 += x86/userspace_io_test
> +TEST_GEN_PROGS_x86 += x86/userspace_msr_exit_test
> +TEST_GEN_PROGS_x86 += x86/vmx_apic_access_test
> +TEST_GEN_PROGS_x86 += x86/vmx_close_while_nested_test
> +TEST_GEN_PROGS_x86 += x86/vmx_dirty_log_test
> +TEST_GEN_PROGS_x86 += x86/vmx_exception_with_invalid_guest_state
> +TEST_GEN_PROGS_x86 += x86/vmx_msrs_test
> +TEST_GEN_PROGS_x86 += x86/vmx_invalid_nested_guest_state
> +TEST_GEN_PROGS_x86 += x86/vmx_set_nested_state_test
> +TEST_GEN_PROGS_x86 += x86/vmx_tsc_adjust_test
> +TEST_GEN_PROGS_x86 += x86/vmx_nested_tsc_scaling_test
> +TEST_GEN_PROGS_x86 += x86/apic_bus_clock_test
> +TEST_GEN_PROGS_x86 += x86/xapic_ipi_test
> +TEST_GEN_PROGS_x86 += x86/xapic_state_test
> +TEST_GEN_PROGS_x86 += x86/xcr0_cpuid_test
> +TEST_GEN_PROGS_x86 += x86/xss_msr_test
> +TEST_GEN_PROGS_x86 += x86/debug_regs
> +TEST_GEN_PROGS_x86 += x86/tsc_msrs_test
> +TEST_GEN_PROGS_x86 += x86/vmx_pmu_caps_test
> +TEST_GEN_PROGS_x86 += x86/xen_shinfo_test
> +TEST_GEN_PROGS_x86 += x86/xen_vmcall_test
> +TEST_GEN_PROGS_x86 += x86/sev_init2_tests
> +TEST_GEN_PROGS_x86 += x86/sev_migrate_tests
> +TEST_GEN_PROGS_x86 += x86/sev_smoke_test
> +TEST_GEN_PROGS_x86 += x86/amx_test
> +TEST_GEN_PROGS_x86 += x86/max_vcpuid_cap_test
> +TEST_GEN_PROGS_x86 += x86/triple_fault_event_test
> +TEST_GEN_PROGS_x86 += x86/recalc_apic_map_test
> +TEST_GEN_PROGS_x86 += access_tracking_perf_test
> +TEST_GEN_PROGS_x86 += coalesced_io_test
> +TEST_GEN_PROGS_x86 += demand_paging_test
> +TEST_GEN_PROGS_x86 += dirty_log_test
> +TEST_GEN_PROGS_x86 += dirty_log_perf_test
> +TEST_GEN_PROGS_x86 += guest_memfd_test
> +TEST_GEN_PROGS_x86 += guest_print_test
> +TEST_GEN_PROGS_x86 += hardware_disable_test
> +TEST_GEN_PROGS_x86 += kvm_create_max_vcpus
> +TEST_GEN_PROGS_x86 += kvm_page_table_test
> +TEST_GEN_PROGS_x86 += memslot_modification_stress_test
> +TEST_GEN_PROGS_x86 += memslot_perf_test
> +TEST_GEN_PROGS_x86 += mmu_stress_test
> +TEST_GEN_PROGS_x86 += rseq_test
> +TEST_GEN_PROGS_x86 += set_memory_region_test
> +TEST_GEN_PROGS_x86 += steal_time
> +TEST_GEN_PROGS_x86 += kvm_binary_stats_test
> +TEST_GEN_PROGS_x86 += system_counter_offset_test
> +TEST_GEN_PROGS_x86 += pre_fault_memory_test
>
> # Compiled outputs used by test targets
> -TEST_GEN_PROGS_EXTENDED_x86_64 += x86_64/nx_huge_pages_test
> +TEST_GEN_PROGS_EXTENDED_x86 += x86/nx_huge_pages_test
>
> -TEST_GEN_PROGS_aarch64 += aarch64/aarch32_id_regs
> -TEST_GEN_PROGS_aarch64 += aarch64/arch_timer_edge_cases
> -TEST_GEN_PROGS_aarch64 += aarch64/debug-exceptions
> -TEST_GEN_PROGS_aarch64 += aarch64/hypercalls
> -TEST_GEN_PROGS_aarch64 += aarch64/mmio_abort
> -TEST_GEN_PROGS_aarch64 += aarch64/page_fault_test
> -TEST_GEN_PROGS_aarch64 += aarch64/psci_test
> -TEST_GEN_PROGS_aarch64 += aarch64/set_id_regs
> -TEST_GEN_PROGS_aarch64 += aarch64/smccc_filter
> -TEST_GEN_PROGS_aarch64 += aarch64/vcpu_width_config
> -TEST_GEN_PROGS_aarch64 += aarch64/vgic_init
> -TEST_GEN_PROGS_aarch64 += aarch64/vgic_irq
> -TEST_GEN_PROGS_aarch64 += aarch64/vgic_lpi_stress
> -TEST_GEN_PROGS_aarch64 += aarch64/vpmu_counter_access
> -TEST_GEN_PROGS_aarch64 += aarch64/no-vgic-v3
> -TEST_GEN_PROGS_aarch64 += access_tracking_perf_test
> -TEST_GEN_PROGS_aarch64 += arch_timer
> -TEST_GEN_PROGS_aarch64 += coalesced_io_test
> -TEST_GEN_PROGS_aarch64 += demand_paging_test
> -TEST_GEN_PROGS_aarch64 += dirty_log_test
> -TEST_GEN_PROGS_aarch64 += dirty_log_perf_test
> -TEST_GEN_PROGS_aarch64 += guest_print_test
> -TEST_GEN_PROGS_aarch64 += get-reg-list
> -TEST_GEN_PROGS_aarch64 += kvm_create_max_vcpus
> -TEST_GEN_PROGS_aarch64 += kvm_page_table_test
> -TEST_GEN_PROGS_aarch64 += memslot_modification_stress_test
> -TEST_GEN_PROGS_aarch64 += memslot_perf_test
> -TEST_GEN_PROGS_aarch64 += mmu_stress_test
> -TEST_GEN_PROGS_aarch64 += rseq_test
> -TEST_GEN_PROGS_aarch64 += set_memory_region_test
> -TEST_GEN_PROGS_aarch64 += steal_time
> -TEST_GEN_PROGS_aarch64 += kvm_binary_stats_test
> +TEST_GEN_PROGS_arm64 += arm64/aarch32_id_regs
> +TEST_GEN_PROGS_arm64 += arm64/arch_timer_edge_cases
> +TEST_GEN_PROGS_arm64 += arm64/debug-exceptions
> +TEST_GEN_PROGS_arm64 += arm64/hypercalls
> +TEST_GEN_PROGS_arm64 += arm64/mmio_abort
> +TEST_GEN_PROGS_arm64 += arm64/page_fault_test
> +TEST_GEN_PROGS_arm64 += arm64/psci_test
> +TEST_GEN_PROGS_arm64 += arm64/set_id_regs
> +TEST_GEN_PROGS_arm64 += arm64/smccc_filter
> +TEST_GEN_PROGS_arm64 += arm64/vcpu_width_config
> +TEST_GEN_PROGS_arm64 += arm64/vgic_init
> +TEST_GEN_PROGS_arm64 += arm64/vgic_irq
> +TEST_GEN_PROGS_arm64 += arm64/vgic_lpi_stress
> +TEST_GEN_PROGS_arm64 += arm64/vpmu_counter_access
> +TEST_GEN_PROGS_arm64 += arm64/no-vgic-v3
> +TEST_GEN_PROGS_arm64 += access_tracking_perf_test
> +TEST_GEN_PROGS_arm64 += arch_timer
> +TEST_GEN_PROGS_arm64 += coalesced_io_test
> +TEST_GEN_PROGS_arm64 += demand_paging_test
> +TEST_GEN_PROGS_arm64 += dirty_log_test
> +TEST_GEN_PROGS_arm64 += dirty_log_perf_test
> +TEST_GEN_PROGS_arm64 += guest_print_test
> +TEST_GEN_PROGS_arm64 += get-reg-list
> +TEST_GEN_PROGS_arm64 += kvm_create_max_vcpus
> +TEST_GEN_PROGS_arm64 += kvm_page_table_test
> +TEST_GEN_PROGS_arm64 += memslot_modification_stress_test
> +TEST_GEN_PROGS_arm64 += memslot_perf_test
> +TEST_GEN_PROGS_arm64 += mmu_stress_test
> +TEST_GEN_PROGS_arm64 += rseq_test
> +TEST_GEN_PROGS_arm64 += set_memory_region_test
> +TEST_GEN_PROGS_arm64 += steal_time
> +TEST_GEN_PROGS_arm64 += kvm_binary_stats_test
>
> -TEST_GEN_PROGS_s390x = s390x/memop
> -TEST_GEN_PROGS_s390x += s390x/resets
> -TEST_GEN_PROGS_s390x += s390x/sync_regs_test
> -TEST_GEN_PROGS_s390x += s390x/tprot
> -TEST_GEN_PROGS_s390x += s390x/cmma_test
> -TEST_GEN_PROGS_s390x += s390x/debug_test
> -TEST_GEN_PROGS_s390x += s390x/cpumodel_subfuncs_test
> -TEST_GEN_PROGS_s390x += s390x/shared_zeropage_test
> -TEST_GEN_PROGS_s390x += s390x/ucontrol_test
> -TEST_GEN_PROGS_s390x += demand_paging_test
> -TEST_GEN_PROGS_s390x += dirty_log_test
> -TEST_GEN_PROGS_s390x += guest_print_test
> -TEST_GEN_PROGS_s390x += kvm_create_max_vcpus
> -TEST_GEN_PROGS_s390x += kvm_page_table_test
> -TEST_GEN_PROGS_s390x += rseq_test
> -TEST_GEN_PROGS_s390x += set_memory_region_test
> -TEST_GEN_PROGS_s390x += kvm_binary_stats_test
> +TEST_GEN_PROGS_s390 = s390/memop
> +TEST_GEN_PROGS_s390 += s390/resets
> +TEST_GEN_PROGS_s390 += s390/sync_regs_test
> +TEST_GEN_PROGS_s390 += s390/tprot
> +TEST_GEN_PROGS_s390 += s390/cmma_test
> +TEST_GEN_PROGS_s390 += s390/debug_test
> +TEST_GEN_PROGS_s390 += s390/cpumodel_subfuncs_test
> +TEST_GEN_PROGS_s390 += s390/shared_zeropage_test
> +TEST_GEN_PROGS_s390 += s390/ucontrol_test
> +TEST_GEN_PROGS_s390 += demand_paging_test
> +TEST_GEN_PROGS_s390 += dirty_log_test
> +TEST_GEN_PROGS_s390 += guest_print_test
> +TEST_GEN_PROGS_s390 += kvm_create_max_vcpus
> +TEST_GEN_PROGS_s390 += kvm_page_table_test
> +TEST_GEN_PROGS_s390 += rseq_test
> +TEST_GEN_PROGS_s390 += set_memory_region_test
> +TEST_GEN_PROGS_s390 += kvm_binary_stats_test
>
> TEST_GEN_PROGS_riscv += riscv/sbi_pmu_test
> TEST_GEN_PROGS_riscv += riscv/ebreak_test
> @@ -222,11 +222,7 @@ include ../lib.mk
> INSTALL_HDR_PATH = $(top_srcdir)/usr
> LINUX_HDR_PATH = $(INSTALL_HDR_PATH)/include/
> LINUX_TOOL_INCLUDE = $(top_srcdir)/tools/include
> -ifeq ($(ARCH),x86_64)
> -LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/x86/include
> -else
> -LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH)/include
> -endif
> +LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH_DIR)/include
> CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \
> -Wno-gnu-variable-sized-type-not-at-end -MD -MP -DCONFIG_64BIT \
> -fno-builtin-memcmp -fno-builtin-memcpy \
> diff --git a/tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c b/tools/testing/selftests/kvm/arm64/aarch32_id_regs.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c
> rename to tools/testing/selftests/kvm/arm64/aarch32_id_regs.c
> diff --git a/tools/testing/selftests/kvm/aarch64/arch_timer.c b/tools/testing/selftests/kvm/arm64/arch_timer.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/arch_timer.c
> rename to tools/testing/selftests/kvm/arm64/arch_timer.c
> diff --git a/tools/testing/selftests/kvm/aarch64/arch_timer_edge_cases.c b/tools/testing/selftests/kvm/arm64/arch_timer_edge_cases.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/arch_timer_edge_cases.c
> rename to tools/testing/selftests/kvm/arm64/arch_timer_edge_cases.c
> diff --git a/tools/testing/selftests/kvm/aarch64/debug-exceptions.c b/tools/testing/selftests/kvm/arm64/debug-exceptions.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/debug-exceptions.c
> rename to tools/testing/selftests/kvm/arm64/debug-exceptions.c
> diff --git a/tools/testing/selftests/kvm/aarch64/get-reg-list.c b/tools/testing/selftests/kvm/arm64/get-reg-list.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/get-reg-list.c
> rename to tools/testing/selftests/kvm/arm64/get-reg-list.c
> diff --git a/tools/testing/selftests/kvm/aarch64/hypercalls.c b/tools/testing/selftests/kvm/arm64/hypercalls.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/hypercalls.c
> rename to tools/testing/selftests/kvm/arm64/hypercalls.c
> diff --git a/tools/testing/selftests/kvm/aarch64/mmio_abort.c b/tools/testing/selftests/kvm/arm64/mmio_abort.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/mmio_abort.c
> rename to tools/testing/selftests/kvm/arm64/mmio_abort.c
> diff --git a/tools/testing/selftests/kvm/aarch64/no-vgic-v3.c b/tools/testing/selftests/kvm/arm64/no-vgic-v3.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/no-vgic-v3.c
> rename to tools/testing/selftests/kvm/arm64/no-vgic-v3.c
> diff --git a/tools/testing/selftests/kvm/aarch64/page_fault_test.c b/tools/testing/selftests/kvm/arm64/page_fault_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/page_fault_test.c
> rename to tools/testing/selftests/kvm/arm64/page_fault_test.c
> diff --git a/tools/testing/selftests/kvm/aarch64/psci_test.c b/tools/testing/selftests/kvm/arm64/psci_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/psci_test.c
> rename to tools/testing/selftests/kvm/arm64/psci_test.c
> diff --git a/tools/testing/selftests/kvm/aarch64/set_id_regs.c b/tools/testing/selftests/kvm/arm64/set_id_regs.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/set_id_regs.c
> rename to tools/testing/selftests/kvm/arm64/set_id_regs.c
> diff --git a/tools/testing/selftests/kvm/aarch64/smccc_filter.c b/tools/testing/selftests/kvm/arm64/smccc_filter.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/smccc_filter.c
> rename to tools/testing/selftests/kvm/arm64/smccc_filter.c
> diff --git a/tools/testing/selftests/kvm/aarch64/vcpu_width_config.c b/tools/testing/selftests/kvm/arm64/vcpu_width_config.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/vcpu_width_config.c
> rename to tools/testing/selftests/kvm/arm64/vcpu_width_config.c
> diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testing/selftests/kvm/arm64/vgic_init.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/vgic_init.c
> rename to tools/testing/selftests/kvm/arm64/vgic_init.c
> diff --git a/tools/testing/selftests/kvm/aarch64/vgic_irq.c b/tools/testing/selftests/kvm/arm64/vgic_irq.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/vgic_irq.c
> rename to tools/testing/selftests/kvm/arm64/vgic_irq.c
> diff --git a/tools/testing/selftests/kvm/aarch64/vgic_lpi_stress.c b/tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/vgic_lpi_stress.c
> rename to tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c
> diff --git a/tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c b/tools/testing/selftests/kvm/arm64/vpmu_counter_access.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c
> rename to tools/testing/selftests/kvm/arm64/vpmu_counter_access.c
> diff --git a/tools/testing/selftests/kvm/dirty_log_perf_test.c b/tools/testing/selftests/kvm/dirty_log_perf_test.c
> index 9f24303acb8c..e79817bd0e29 100644
> --- a/tools/testing/selftests/kvm/dirty_log_perf_test.c
> +++ b/tools/testing/selftests/kvm/dirty_log_perf_test.c
> @@ -21,7 +21,7 @@
> #include "ucall_common.h"
>
> #ifdef __aarch64__
> -#include "aarch64/vgic.h"
> +#include "arm64/vgic.h"
>
> static int gic_fd;
>
> diff --git a/tools/testing/selftests/kvm/include/aarch64/arch_timer.h b/tools/testing/selftests/kvm/include/arm64/arch_timer.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/aarch64/arch_timer.h
> rename to tools/testing/selftests/kvm/include/arm64/arch_timer.h
> diff --git a/tools/testing/selftests/kvm/include/aarch64/delay.h b/tools/testing/selftests/kvm/include/arm64/delay.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/aarch64/delay.h
> rename to tools/testing/selftests/kvm/include/arm64/delay.h
> diff --git a/tools/testing/selftests/kvm/include/aarch64/gic.h b/tools/testing/selftests/kvm/include/arm64/gic.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/aarch64/gic.h
> rename to tools/testing/selftests/kvm/include/arm64/gic.h
> diff --git a/tools/testing/selftests/kvm/include/aarch64/gic_v3.h b/tools/testing/selftests/kvm/include/arm64/gic_v3.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/aarch64/gic_v3.h
> rename to tools/testing/selftests/kvm/include/arm64/gic_v3.h
> diff --git a/tools/testing/selftests/kvm/include/aarch64/gic_v3_its.h b/tools/testing/selftests/kvm/include/arm64/gic_v3_its.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/aarch64/gic_v3_its.h
> rename to tools/testing/selftests/kvm/include/arm64/gic_v3_its.h
> diff --git a/tools/testing/selftests/kvm/include/aarch64/kvm_util_arch.h b/tools/testing/selftests/kvm/include/arm64/kvm_util_arch.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/aarch64/kvm_util_arch.h
> rename to tools/testing/selftests/kvm/include/arm64/kvm_util_arch.h
> diff --git a/tools/testing/selftests/kvm/include/aarch64/processor.h b/tools/testing/selftests/kvm/include/arm64/processor.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/aarch64/processor.h
> rename to tools/testing/selftests/kvm/include/arm64/processor.h
> diff --git a/tools/testing/selftests/kvm/include/aarch64/spinlock.h b/tools/testing/selftests/kvm/include/arm64/spinlock.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/aarch64/spinlock.h
> rename to tools/testing/selftests/kvm/include/arm64/spinlock.h
> diff --git a/tools/testing/selftests/kvm/include/aarch64/ucall.h b/tools/testing/selftests/kvm/include/arm64/ucall.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/aarch64/ucall.h
> rename to tools/testing/selftests/kvm/include/arm64/ucall.h
> diff --git a/tools/testing/selftests/kvm/include/aarch64/vgic.h b/tools/testing/selftests/kvm/include/arm64/vgic.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/aarch64/vgic.h
> rename to tools/testing/selftests/kvm/include/arm64/vgic.h
> diff --git a/tools/testing/selftests/kvm/include/s390x/debug_print.h b/tools/testing/selftests/kvm/include/s390/debug_print.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/s390x/debug_print.h
> rename to tools/testing/selftests/kvm/include/s390/debug_print.h
> diff --git a/tools/testing/selftests/kvm/include/s390x/diag318_test_handler.h b/tools/testing/selftests/kvm/include/s390/diag318_test_handler.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/s390x/diag318_test_handler.h
> rename to tools/testing/selftests/kvm/include/s390/diag318_test_handler.h
> diff --git a/tools/testing/selftests/kvm/include/s390x/facility.h b/tools/testing/selftests/kvm/include/s390/facility.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/s390x/facility.h
> rename to tools/testing/selftests/kvm/include/s390/facility.h
> diff --git a/tools/testing/selftests/kvm/include/s390x/kvm_util_arch.h b/tools/testing/selftests/kvm/include/s390/kvm_util_arch.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/s390x/kvm_util_arch.h
> rename to tools/testing/selftests/kvm/include/s390/kvm_util_arch.h
> diff --git a/tools/testing/selftests/kvm/include/s390x/processor.h b/tools/testing/selftests/kvm/include/s390/processor.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/s390x/processor.h
> rename to tools/testing/selftests/kvm/include/s390/processor.h
> diff --git a/tools/testing/selftests/kvm/include/s390x/sie.h b/tools/testing/selftests/kvm/include/s390/sie.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/s390x/sie.h
> rename to tools/testing/selftests/kvm/include/s390/sie.h
> diff --git a/tools/testing/selftests/kvm/include/s390x/ucall.h b/tools/testing/selftests/kvm/include/s390/ucall.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/s390x/ucall.h
> rename to tools/testing/selftests/kvm/include/s390/ucall.h
> diff --git a/tools/testing/selftests/kvm/include/x86_64/apic.h b/tools/testing/selftests/kvm/include/x86/apic.h
> similarity index 98%
> rename from tools/testing/selftests/kvm/include/x86_64/apic.h
> rename to tools/testing/selftests/kvm/include/x86/apic.h
> index 51990094effd..80fe9f69b38d 100644
> --- a/tools/testing/selftests/kvm/include/x86_64/apic.h
> +++ b/tools/testing/selftests/kvm/include/x86/apic.h
> @@ -1,7 +1,5 @@
> /* SPDX-License-Identifier: GPL-2.0-only */
> /*
> - * tools/testing/selftests/kvm/include/x86_64/apic.h
> - *
> * Copyright (C) 2021, Google LLC.
> */
>
> diff --git a/tools/testing/selftests/kvm/include/x86_64/evmcs.h b/tools/testing/selftests/kvm/include/x86/evmcs.h
> similarity index 99%
> rename from tools/testing/selftests/kvm/include/x86_64/evmcs.h
> rename to tools/testing/selftests/kvm/include/x86/evmcs.h
> index 901caf0e0939..5a74bb30e2f8 100644
> --- a/tools/testing/selftests/kvm/include/x86_64/evmcs.h
> +++ b/tools/testing/selftests/kvm/include/x86/evmcs.h
> @@ -1,9 +1,6 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> /*
> - * tools/testing/selftests/kvm/include/x86_64/evmcs.h
> - *
> * Copyright (C) 2018, Red Hat, Inc.
> - *
> */
>
> #ifndef SELFTEST_KVM_EVMCS_H
> diff --git a/tools/testing/selftests/kvm/include/x86_64/hyperv.h b/tools/testing/selftests/kvm/include/x86/hyperv.h
> similarity index 99%
> rename from tools/testing/selftests/kvm/include/x86_64/hyperv.h
> rename to tools/testing/selftests/kvm/include/x86/hyperv.h
> index 6849e2552f1b..f13e532be240 100644
> --- a/tools/testing/selftests/kvm/include/x86_64/hyperv.h
> +++ b/tools/testing/selftests/kvm/include/x86/hyperv.h
> @@ -1,9 +1,6 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> /*
> - * tools/testing/selftests/kvm/include/x86_64/hyperv.h
> - *
> * Copyright (C) 2021, Red Hat, Inc.
> - *
> */
>
> #ifndef SELFTEST_KVM_HYPERV_H
> diff --git a/tools/testing/selftests/kvm/include/x86_64/kvm_util_arch.h b/tools/testing/selftests/kvm/include/x86/kvm_util_arch.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/x86_64/kvm_util_arch.h
> rename to tools/testing/selftests/kvm/include/x86/kvm_util_arch.h
> diff --git a/tools/testing/selftests/kvm/include/x86_64/mce.h b/tools/testing/selftests/kvm/include/x86/mce.h
> similarity index 94%
> rename from tools/testing/selftests/kvm/include/x86_64/mce.h
> rename to tools/testing/selftests/kvm/include/x86/mce.h
> index 6119321f3f5d..295f2d554754 100644
> --- a/tools/testing/selftests/kvm/include/x86_64/mce.h
> +++ b/tools/testing/selftests/kvm/include/x86/mce.h
> @@ -1,7 +1,5 @@
> /* SPDX-License-Identifier: GPL-2.0-only */
> /*
> - * tools/testing/selftests/kvm/include/x86_64/mce.h
> - *
> * Copyright (C) 2022, Google LLC.
> */
>
> diff --git a/tools/testing/selftests/kvm/include/x86_64/pmu.h b/tools/testing/selftests/kvm/include/x86/pmu.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/x86_64/pmu.h
> rename to tools/testing/selftests/kvm/include/x86/pmu.h
> diff --git a/tools/testing/selftests/kvm/include/x86_64/processor.h b/tools/testing/selftests/kvm/include/x86/processor.h
> similarity index 99%
> rename from tools/testing/selftests/kvm/include/x86_64/processor.h
> rename to tools/testing/selftests/kvm/include/x86/processor.h
> index 645200e95f89..9ec984cf8674 100644
> --- a/tools/testing/selftests/kvm/include/x86_64/processor.h
> +++ b/tools/testing/selftests/kvm/include/x86/processor.h
> @@ -1,7 +1,5 @@
> /* SPDX-License-Identifier: GPL-2.0-only */
> /*
> - * tools/testing/selftests/kvm/include/x86_64/processor.h
> - *
> * Copyright (C) 2018, Google LLC.
> */
>
> diff --git a/tools/testing/selftests/kvm/include/x86_64/sev.h b/tools/testing/selftests/kvm/include/x86/sev.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/x86_64/sev.h
> rename to tools/testing/selftests/kvm/include/x86/sev.h
> diff --git a/tools/testing/selftests/kvm/include/x86_64/svm.h b/tools/testing/selftests/kvm/include/x86/svm.h
> similarity index 98%
> rename from tools/testing/selftests/kvm/include/x86_64/svm.h
> rename to tools/testing/selftests/kvm/include/x86/svm.h
> index 4803e1056055..29cffd0a9181 100644
> --- a/tools/testing/selftests/kvm/include/x86_64/svm.h
> +++ b/tools/testing/selftests/kvm/include/x86/svm.h
> @@ -1,10 +1,4 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * tools/testing/selftests/kvm/include/x86_64/svm.h
> - * This is a copy of arch/x86/include/asm/svm.h
> - *
> - */
> -
> #ifndef SELFTEST_KVM_SVM_H
> #define SELFTEST_KVM_SVM_H
>
> diff --git a/tools/testing/selftests/kvm/include/x86_64/svm_util.h b/tools/testing/selftests/kvm/include/x86/svm_util.h
> similarity index 94%
> rename from tools/testing/selftests/kvm/include/x86_64/svm_util.h
> rename to tools/testing/selftests/kvm/include/x86/svm_util.h
> index 044f0f872ba9..b74c6dcddcbd 100644
> --- a/tools/testing/selftests/kvm/include/x86_64/svm_util.h
> +++ b/tools/testing/selftests/kvm/include/x86/svm_util.h
> @@ -1,8 +1,5 @@
> /* SPDX-License-Identifier: GPL-2.0-only */
> /*
> - * tools/testing/selftests/kvm/include/x86_64/svm_utils.h
> - * Header for nested SVM testing
> - *
> * Copyright (C) 2020, Red Hat, Inc.
> */
>
> diff --git a/tools/testing/selftests/kvm/include/x86_64/ucall.h b/tools/testing/selftests/kvm/include/x86/ucall.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/include/x86_64/ucall.h
> rename to tools/testing/selftests/kvm/include/x86/ucall.h
> diff --git a/tools/testing/selftests/kvm/include/x86_64/vmx.h b/tools/testing/selftests/kvm/include/x86/vmx.h
> similarity index 99%
> rename from tools/testing/selftests/kvm/include/x86_64/vmx.h
> rename to tools/testing/selftests/kvm/include/x86/vmx.h
> index 5f0c0a29c556..edb3c391b982 100644
> --- a/tools/testing/selftests/kvm/include/x86_64/vmx.h
> +++ b/tools/testing/selftests/kvm/include/x86/vmx.h
> @@ -1,7 +1,5 @@
> /* SPDX-License-Identifier: GPL-2.0-only */
> /*
> - * tools/testing/selftests/kvm/include/x86_64/vmx.h
> - *
> * Copyright (C) 2018, Google LLC.
> */
>
> diff --git a/tools/testing/selftests/kvm/lib/aarch64/gic.c b/tools/testing/selftests/kvm/lib/arm64/gic.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/aarch64/gic.c
> rename to tools/testing/selftests/kvm/lib/arm64/gic.c
> diff --git a/tools/testing/selftests/kvm/lib/aarch64/gic_private.h b/tools/testing/selftests/kvm/lib/arm64/gic_private.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/aarch64/gic_private.h
> rename to tools/testing/selftests/kvm/lib/arm64/gic_private.h
> diff --git a/tools/testing/selftests/kvm/lib/aarch64/gic_v3.c b/tools/testing/selftests/kvm/lib/arm64/gic_v3.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/aarch64/gic_v3.c
> rename to tools/testing/selftests/kvm/lib/arm64/gic_v3.c
> diff --git a/tools/testing/selftests/kvm/lib/aarch64/gic_v3_its.c b/tools/testing/selftests/kvm/lib/arm64/gic_v3_its.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/aarch64/gic_v3_its.c
> rename to tools/testing/selftests/kvm/lib/arm64/gic_v3_its.c
> diff --git a/tools/testing/selftests/kvm/lib/aarch64/handlers.S b/tools/testing/selftests/kvm/lib/arm64/handlers.S
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/aarch64/handlers.S
> rename to tools/testing/selftests/kvm/lib/arm64/handlers.S
> diff --git a/tools/testing/selftests/kvm/lib/aarch64/processor.c b/tools/testing/selftests/kvm/lib/arm64/processor.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/aarch64/processor.c
> rename to tools/testing/selftests/kvm/lib/arm64/processor.c
> diff --git a/tools/testing/selftests/kvm/lib/aarch64/spinlock.c b/tools/testing/selftests/kvm/lib/arm64/spinlock.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/aarch64/spinlock.c
> rename to tools/testing/selftests/kvm/lib/arm64/spinlock.c
> diff --git a/tools/testing/selftests/kvm/lib/aarch64/ucall.c b/tools/testing/selftests/kvm/lib/arm64/ucall.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/aarch64/ucall.c
> rename to tools/testing/selftests/kvm/lib/arm64/ucall.c
> diff --git a/tools/testing/selftests/kvm/lib/aarch64/vgic.c b/tools/testing/selftests/kvm/lib/arm64/vgic.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/aarch64/vgic.c
> rename to tools/testing/selftests/kvm/lib/arm64/vgic.c
> diff --git a/tools/testing/selftests/kvm/lib/s390x/diag318_test_handler.c b/tools/testing/selftests/kvm/lib/s390/diag318_test_handler.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/s390x/diag318_test_handler.c
> rename to tools/testing/selftests/kvm/lib/s390/diag318_test_handler.c
> diff --git a/tools/testing/selftests/kvm/lib/s390x/facility.c b/tools/testing/selftests/kvm/lib/s390/facility.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/s390x/facility.c
> rename to tools/testing/selftests/kvm/lib/s390/facility.c
> diff --git a/tools/testing/selftests/kvm/lib/s390x/processor.c b/tools/testing/selftests/kvm/lib/s390/processor.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/s390x/processor.c
> rename to tools/testing/selftests/kvm/lib/s390/processor.c
> diff --git a/tools/testing/selftests/kvm/lib/s390x/ucall.c b/tools/testing/selftests/kvm/lib/s390/ucall.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/s390x/ucall.c
> rename to tools/testing/selftests/kvm/lib/s390/ucall.c
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/apic.c b/tools/testing/selftests/kvm/lib/x86/apic.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/x86_64/apic.c
> rename to tools/testing/selftests/kvm/lib/x86/apic.c
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/handlers.S b/tools/testing/selftests/kvm/lib/x86/handlers.S
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/x86_64/handlers.S
> rename to tools/testing/selftests/kvm/lib/x86/handlers.S
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/hyperv.c b/tools/testing/selftests/kvm/lib/x86/hyperv.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/x86_64/hyperv.c
> rename to tools/testing/selftests/kvm/lib/x86/hyperv.c
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/memstress.c b/tools/testing/selftests/kvm/lib/x86/memstress.c
> similarity index 98%
> rename from tools/testing/selftests/kvm/lib/x86_64/memstress.c
> rename to tools/testing/selftests/kvm/lib/x86/memstress.c
> index d61e623afc8c..7f5d62a65c68 100644
> --- a/tools/testing/selftests/kvm/lib/x86_64/memstress.c
> +++ b/tools/testing/selftests/kvm/lib/x86/memstress.c
> @@ -1,6 +1,6 @@
> // SPDX-License-Identifier: GPL-2.0
> /*
> - * x86_64-specific extensions to memstress.c.
> + * x86-specific extensions to memstress.c.
> *
> * Copyright (C) 2022, Google, Inc.
> */
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/pmu.c b/tools/testing/selftests/kvm/lib/x86/pmu.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/x86_64/pmu.c
> rename to tools/testing/selftests/kvm/lib/x86/pmu.c
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/testing/selftests/kvm/lib/x86/processor.c
> similarity index 99%
> rename from tools/testing/selftests/kvm/lib/x86_64/processor.c
> rename to tools/testing/selftests/kvm/lib/x86/processor.c
> index 636b29ba8985..bd5a802fa7a5 100644
> --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c
> +++ b/tools/testing/selftests/kvm/lib/x86/processor.c
> @@ -1,7 +1,5 @@
> // SPDX-License-Identifier: GPL-2.0-only
> /*
> - * tools/testing/selftests/kvm/lib/x86_64/processor.c
> - *
> * Copyright (C) 2018, Google LLC.
> */
>
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/sev.c b/tools/testing/selftests/kvm/lib/x86/sev.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/x86_64/sev.c
> rename to tools/testing/selftests/kvm/lib/x86/sev.c
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/svm.c b/tools/testing/selftests/kvm/lib/x86/svm.c
> similarity index 99%
> rename from tools/testing/selftests/kvm/lib/x86_64/svm.c
> rename to tools/testing/selftests/kvm/lib/x86/svm.c
> index 5495a92dfd5a..d239c2097391 100644
> --- a/tools/testing/selftests/kvm/lib/x86_64/svm.c
> +++ b/tools/testing/selftests/kvm/lib/x86/svm.c
> @@ -1,6 +1,5 @@
> // SPDX-License-Identifier: GPL-2.0-only
> /*
> - * tools/testing/selftests/kvm/lib/x86_64/svm.c
> * Helpers used for nested SVM testing
> * Largely inspired from KVM unit test svm.c
> *
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/ucall.c b/tools/testing/selftests/kvm/lib/x86/ucall.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/lib/x86_64/ucall.c
> rename to tools/testing/selftests/kvm/lib/x86/ucall.c
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/vmx.c b/tools/testing/selftests/kvm/lib/x86/vmx.c
> similarity index 99%
> rename from tools/testing/selftests/kvm/lib/x86_64/vmx.c
> rename to tools/testing/selftests/kvm/lib/x86/vmx.c
> index d7ac122820bf..d4d1208dd023 100644
> --- a/tools/testing/selftests/kvm/lib/x86_64/vmx.c
> +++ b/tools/testing/selftests/kvm/lib/x86/vmx.c
> @@ -1,7 +1,5 @@
> // SPDX-License-Identifier: GPL-2.0-only
> /*
> - * tools/testing/selftests/kvm/lib/x86_64/vmx.c
> - *
> * Copyright (C) 2018, Google LLC.
> */
>
> diff --git a/tools/testing/selftests/kvm/s390x/cmma_test.c b/tools/testing/selftests/kvm/s390/cmma_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/s390x/cmma_test.c
> rename to tools/testing/selftests/kvm/s390/cmma_test.c
> diff --git a/tools/testing/selftests/kvm/s390x/config b/tools/testing/selftests/kvm/s390/config
> similarity index 100%
> rename from tools/testing/selftests/kvm/s390x/config
> rename to tools/testing/selftests/kvm/s390/config
> diff --git a/tools/testing/selftests/kvm/s390x/cpumodel_subfuncs_test.c b/tools/testing/selftests/kvm/s390/cpumodel_subfuncs_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/s390x/cpumodel_subfuncs_test.c
> rename to tools/testing/selftests/kvm/s390/cpumodel_subfuncs_test.c
> diff --git a/tools/testing/selftests/kvm/s390x/debug_test.c b/tools/testing/selftests/kvm/s390/debug_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/s390x/debug_test.c
> rename to tools/testing/selftests/kvm/s390/debug_test.c
> diff --git a/tools/testing/selftests/kvm/s390x/memop.c b/tools/testing/selftests/kvm/s390/memop.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/s390x/memop.c
> rename to tools/testing/selftests/kvm/s390/memop.c
> diff --git a/tools/testing/selftests/kvm/s390x/resets.c b/tools/testing/selftests/kvm/s390/resets.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/s390x/resets.c
> rename to tools/testing/selftests/kvm/s390/resets.c
> diff --git a/tools/testing/selftests/kvm/s390x/shared_zeropage_test.c b/tools/testing/selftests/kvm/s390/shared_zeropage_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/s390x/shared_zeropage_test.c
> rename to tools/testing/selftests/kvm/s390/shared_zeropage_test.c
> diff --git a/tools/testing/selftests/kvm/s390x/sync_regs_test.c b/tools/testing/selftests/kvm/s390/sync_regs_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/s390x/sync_regs_test.c
> rename to tools/testing/selftests/kvm/s390/sync_regs_test.c
> diff --git a/tools/testing/selftests/kvm/s390x/tprot.c b/tools/testing/selftests/kvm/s390/tprot.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/s390x/tprot.c
> rename to tools/testing/selftests/kvm/s390/tprot.c
> diff --git a/tools/testing/selftests/kvm/s390x/ucontrol_test.c b/tools/testing/selftests/kvm/s390/ucontrol_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/s390x/ucontrol_test.c
> rename to tools/testing/selftests/kvm/s390/ucontrol_test.c
> diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/testing/selftests/kvm/set_memory_region_test.c
> index a8267628e9ed..86ee3385e860 100644
> --- a/tools/testing/selftests/kvm/set_memory_region_test.c
> +++ b/tools/testing/selftests/kvm/set_memory_region_test.c
> @@ -17,9 +17,9 @@
> #include <processor.h>
>
> /*
> - * s390x needs at least 1MB alignment, and the x86_64 MOVE/DELETE tests need a
> - * 2MB sized and aligned region so that the initial region corresponds to
> - * exactly one large page.
> + * s390 needs at least 1MB alignment, and the x86 MOVE/DELETE tests need a 2MB
> + * sized and aligned region so that the initial region corresponds to exactly
> + * one large page.
> */
> #define MEM_REGION_SIZE 0x200000
>
> diff --git a/tools/testing/selftests/kvm/x86_64/amx_test.c b/tools/testing/selftests/kvm/x86/amx_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/amx_test.c
> rename to tools/testing/selftests/kvm/x86/amx_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/apic_bus_clock_test.c b/tools/testing/selftests/kvm/x86/apic_bus_clock_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/apic_bus_clock_test.c
> rename to tools/testing/selftests/kvm/x86/apic_bus_clock_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/cpuid_test.c b/tools/testing/selftests/kvm/x86/cpuid_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/cpuid_test.c
> rename to tools/testing/selftests/kvm/x86/cpuid_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/cr4_cpuid_sync_test.c b/tools/testing/selftests/kvm/x86/cr4_cpuid_sync_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/cr4_cpuid_sync_test.c
> rename to tools/testing/selftests/kvm/x86/cr4_cpuid_sync_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/debug_regs.c b/tools/testing/selftests/kvm/x86/debug_regs.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/debug_regs.c
> rename to tools/testing/selftests/kvm/x86/debug_regs.c
> diff --git a/tools/testing/selftests/kvm/x86_64/dirty_log_page_splitting_test.c b/tools/testing/selftests/kvm/x86/dirty_log_page_splitting_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/dirty_log_page_splitting_test.c
> rename to tools/testing/selftests/kvm/x86/dirty_log_page_splitting_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/exit_on_emulation_failure_test.c b/tools/testing/selftests/kvm/x86/exit_on_emulation_failure_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/exit_on_emulation_failure_test.c
> rename to tools/testing/selftests/kvm/x86/exit_on_emulation_failure_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/feature_msrs_test.c b/tools/testing/selftests/kvm/x86/feature_msrs_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/feature_msrs_test.c
> rename to tools/testing/selftests/kvm/x86/feature_msrs_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/fix_hypercall_test.c b/tools/testing/selftests/kvm/x86/fix_hypercall_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/fix_hypercall_test.c
> rename to tools/testing/selftests/kvm/x86/fix_hypercall_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/flds_emulation.h b/tools/testing/selftests/kvm/x86/flds_emulation.h
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/flds_emulation.h
> rename to tools/testing/selftests/kvm/x86/flds_emulation.h
> diff --git a/tools/testing/selftests/kvm/x86_64/hwcr_msr_test.c b/tools/testing/selftests/kvm/x86/hwcr_msr_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/hwcr_msr_test.c
> rename to tools/testing/selftests/kvm/x86/hwcr_msr_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_clock.c b/tools/testing/selftests/kvm/x86/hyperv_clock.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/hyperv_clock.c
> rename to tools/testing/selftests/kvm/x86/hyperv_clock.c
> diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c b/tools/testing/selftests/kvm/x86/hyperv_cpuid.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c
> rename to tools/testing/selftests/kvm/x86/hyperv_cpuid.c
> diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c b/tools/testing/selftests/kvm/x86/hyperv_evmcs.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c
> rename to tools/testing/selftests/kvm/x86/hyperv_evmcs.c
> diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_extended_hypercalls.c b/tools/testing/selftests/kvm/x86/hyperv_extended_hypercalls.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/hyperv_extended_hypercalls.c
> rename to tools/testing/selftests/kvm/x86/hyperv_extended_hypercalls.c
> diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_features.c b/tools/testing/selftests/kvm/x86/hyperv_features.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/hyperv_features.c
> rename to tools/testing/selftests/kvm/x86/hyperv_features.c
> diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_ipi.c b/tools/testing/selftests/kvm/x86/hyperv_ipi.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/hyperv_ipi.c
> rename to tools/testing/selftests/kvm/x86/hyperv_ipi.c
> diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c b/tools/testing/selftests/kvm/x86/hyperv_svm_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c
> rename to tools/testing/selftests/kvm/x86/hyperv_svm_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_tlb_flush.c b/tools/testing/selftests/kvm/x86/hyperv_tlb_flush.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/hyperv_tlb_flush.c
> rename to tools/testing/selftests/kvm/x86/hyperv_tlb_flush.c
> diff --git a/tools/testing/selftests/kvm/x86_64/kvm_clock_test.c b/tools/testing/selftests/kvm/x86/kvm_clock_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/kvm_clock_test.c
> rename to tools/testing/selftests/kvm/x86/kvm_clock_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/kvm_pv_test.c b/tools/testing/selftests/kvm/x86/kvm_pv_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/kvm_pv_test.c
> rename to tools/testing/selftests/kvm/x86/kvm_pv_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/max_vcpuid_cap_test.c b/tools/testing/selftests/kvm/x86/max_vcpuid_cap_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/max_vcpuid_cap_test.c
> rename to tools/testing/selftests/kvm/x86/max_vcpuid_cap_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/monitor_mwait_test.c b/tools/testing/selftests/kvm/x86/monitor_mwait_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/monitor_mwait_test.c
> rename to tools/testing/selftests/kvm/x86/monitor_mwait_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/nested_exceptions_test.c b/tools/testing/selftests/kvm/x86/nested_exceptions_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/nested_exceptions_test.c
> rename to tools/testing/selftests/kvm/x86/nested_exceptions_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.c b/tools/testing/selftests/kvm/x86/nx_huge_pages_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.c
> rename to tools/testing/selftests/kvm/x86/nx_huge_pages_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.sh b/tools/testing/selftests/kvm/x86/nx_huge_pages_test.sh
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.sh
> rename to tools/testing/selftests/kvm/x86/nx_huge_pages_test.sh
> diff --git a/tools/testing/selftests/kvm/x86_64/platform_info_test.c b/tools/testing/selftests/kvm/x86/platform_info_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/platform_info_test.c
> rename to tools/testing/selftests/kvm/x86/platform_info_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/pmu_counters_test.c b/tools/testing/selftests/kvm/x86/pmu_counters_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/pmu_counters_test.c
> rename to tools/testing/selftests/kvm/x86/pmu_counters_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c b/tools/testing/selftests/kvm/x86/pmu_event_filter_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c
> rename to tools/testing/selftests/kvm/x86/pmu_event_filter_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c b/tools/testing/selftests/kvm/x86/private_mem_conversions_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c
> rename to tools/testing/selftests/kvm/x86/private_mem_conversions_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/private_mem_kvm_exits_test.c b/tools/testing/selftests/kvm/x86/private_mem_kvm_exits_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/private_mem_kvm_exits_test.c
> rename to tools/testing/selftests/kvm/x86/private_mem_kvm_exits_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/recalc_apic_map_test.c b/tools/testing/selftests/kvm/x86/recalc_apic_map_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/recalc_apic_map_test.c
> rename to tools/testing/selftests/kvm/x86/recalc_apic_map_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c b/tools/testing/selftests/kvm/x86/set_boot_cpu_id.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c
> rename to tools/testing/selftests/kvm/x86/set_boot_cpu_id.c
> diff --git a/tools/testing/selftests/kvm/x86_64/set_sregs_test.c b/tools/testing/selftests/kvm/x86/set_sregs_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/set_sregs_test.c
> rename to tools/testing/selftests/kvm/x86/set_sregs_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/sev_init2_tests.c b/tools/testing/selftests/kvm/x86/sev_init2_tests.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/sev_init2_tests.c
> rename to tools/testing/selftests/kvm/x86/sev_init2_tests.c
> diff --git a/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c b/tools/testing/selftests/kvm/x86/sev_migrate_tests.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c
> rename to tools/testing/selftests/kvm/x86/sev_migrate_tests.c
> diff --git a/tools/testing/selftests/kvm/x86_64/sev_smoke_test.c b/tools/testing/selftests/kvm/x86/sev_smoke_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/sev_smoke_test.c
> rename to tools/testing/selftests/kvm/x86/sev_smoke_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/smaller_maxphyaddr_emulation_test.c b/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/smaller_maxphyaddr_emulation_test.c
> rename to tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/smm_test.c b/tools/testing/selftests/kvm/x86/smm_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/smm_test.c
> rename to tools/testing/selftests/kvm/x86/smm_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/state_test.c b/tools/testing/selftests/kvm/x86/state_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/state_test.c
> rename to tools/testing/selftests/kvm/x86/state_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/svm_int_ctl_test.c b/tools/testing/selftests/kvm/x86/svm_int_ctl_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/svm_int_ctl_test.c
> rename to tools/testing/selftests/kvm/x86/svm_int_ctl_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/svm_nested_shutdown_test.c b/tools/testing/selftests/kvm/x86/svm_nested_shutdown_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/svm_nested_shutdown_test.c
> rename to tools/testing/selftests/kvm/x86/svm_nested_shutdown_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/svm_nested_soft_inject_test.c b/tools/testing/selftests/kvm/x86/svm_nested_soft_inject_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/svm_nested_soft_inject_test.c
> rename to tools/testing/selftests/kvm/x86/svm_nested_soft_inject_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/svm_vmcall_test.c b/tools/testing/selftests/kvm/x86/svm_vmcall_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/svm_vmcall_test.c
> rename to tools/testing/selftests/kvm/x86/svm_vmcall_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/sync_regs_test.c b/tools/testing/selftests/kvm/x86/sync_regs_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/sync_regs_test.c
> rename to tools/testing/selftests/kvm/x86/sync_regs_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/triple_fault_event_test.c b/tools/testing/selftests/kvm/x86/triple_fault_event_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/triple_fault_event_test.c
> rename to tools/testing/selftests/kvm/x86/triple_fault_event_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/tsc_msrs_test.c b/tools/testing/selftests/kvm/x86/tsc_msrs_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/tsc_msrs_test.c
> rename to tools/testing/selftests/kvm/x86/tsc_msrs_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/tsc_scaling_sync.c b/tools/testing/selftests/kvm/x86/tsc_scaling_sync.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/tsc_scaling_sync.c
> rename to tools/testing/selftests/kvm/x86/tsc_scaling_sync.c
> diff --git a/tools/testing/selftests/kvm/x86_64/ucna_injection_test.c b/tools/testing/selftests/kvm/x86/ucna_injection_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/ucna_injection_test.c
> rename to tools/testing/selftests/kvm/x86/ucna_injection_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/userspace_io_test.c b/tools/testing/selftests/kvm/x86/userspace_io_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/userspace_io_test.c
> rename to tools/testing/selftests/kvm/x86/userspace_io_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/userspace_msr_exit_test.c b/tools/testing/selftests/kvm/x86/userspace_msr_exit_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/userspace_msr_exit_test.c
> rename to tools/testing/selftests/kvm/x86/userspace_msr_exit_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/vmx_apic_access_test.c b/tools/testing/selftests/kvm/x86/vmx_apic_access_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/vmx_apic_access_test.c
> rename to tools/testing/selftests/kvm/x86/vmx_apic_access_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c b/tools/testing/selftests/kvm/x86/vmx_close_while_nested_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c
> rename to tools/testing/selftests/kvm/x86/vmx_close_while_nested_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c b/tools/testing/selftests/kvm/x86/vmx_dirty_log_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c
> rename to tools/testing/selftests/kvm/x86/vmx_dirty_log_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/vmx_exception_with_invalid_guest_state.c b/tools/testing/selftests/kvm/x86/vmx_exception_with_invalid_guest_state.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/vmx_exception_with_invalid_guest_state.c
> rename to tools/testing/selftests/kvm/x86/vmx_exception_with_invalid_guest_state.c
> diff --git a/tools/testing/selftests/kvm/x86_64/vmx_invalid_nested_guest_state.c b/tools/testing/selftests/kvm/x86/vmx_invalid_nested_guest_state.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/vmx_invalid_nested_guest_state.c
> rename to tools/testing/selftests/kvm/x86/vmx_invalid_nested_guest_state.c
> diff --git a/tools/testing/selftests/kvm/x86_64/vmx_msrs_test.c b/tools/testing/selftests/kvm/x86/vmx_msrs_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/vmx_msrs_test.c
> rename to tools/testing/selftests/kvm/x86/vmx_msrs_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test.c b/tools/testing/selftests/kvm/x86/vmx_nested_tsc_scaling_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test.c
> rename to tools/testing/selftests/kvm/x86/vmx_nested_tsc_scaling_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86/vmx_pmu_caps_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c
> rename to tools/testing/selftests/kvm/x86/vmx_pmu_caps_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c b/tools/testing/selftests/kvm/x86/vmx_preemption_timer_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c
> rename to tools/testing/selftests/kvm/x86/vmx_preemption_timer_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c b/tools/testing/selftests/kvm/x86/vmx_set_nested_state_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c
> rename to tools/testing/selftests/kvm/x86/vmx_set_nested_state_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c b/tools/testing/selftests/kvm/x86/vmx_tsc_adjust_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c
> rename to tools/testing/selftests/kvm/x86/vmx_tsc_adjust_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c b/tools/testing/selftests/kvm/x86/xapic_ipi_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c
> rename to tools/testing/selftests/kvm/x86/xapic_ipi_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/xapic_state_test.c b/tools/testing/selftests/kvm/x86/xapic_state_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/xapic_state_test.c
> rename to tools/testing/selftests/kvm/x86/xapic_state_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c b/tools/testing/selftests/kvm/x86/xcr0_cpuid_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c
> rename to tools/testing/selftests/kvm/x86/xcr0_cpuid_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/xen_shinfo_test.c b/tools/testing/selftests/kvm/x86/xen_shinfo_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/xen_shinfo_test.c
> rename to tools/testing/selftests/kvm/x86/xen_shinfo_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/xen_vmcall_test.c b/tools/testing/selftests/kvm/x86/xen_vmcall_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/xen_vmcall_test.c
> rename to tools/testing/selftests/kvm/x86/xen_vmcall_test.c
> diff --git a/tools/testing/selftests/kvm/x86_64/xss_msr_test.c b/tools/testing/selftests/kvm/x86/xss_msr_test.c
> similarity index 100%
> rename from tools/testing/selftests/kvm/x86_64/xss_msr_test.c
> rename to tools/testing/selftests/kvm/x86/xss_msr_test.c
--
BR,
Muhammad Usama Anjum
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 16/16] KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR
2024-11-28 0:55 ` [PATCH v4 16/16] KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR Sean Christopherson
@ 2024-11-28 8:20 ` Muhammad Usama Anjum
0 siblings, 0 replies; 32+ messages in thread
From: Muhammad Usama Anjum @ 2024-11-28 8:20 UTC (permalink / raw)
To: Sean Christopherson, Marc Zyngier, Oliver Upton, Anup Patel,
Paul Walmsley, Palmer Dabbelt, Albert Ou, Paolo Bonzini,
Christian Borntraeger, Janosch Frank, Claudio Imbrenda
Cc: Usama.Anjum, linux-arm-kernel, kvmarm, kvm, kvm-riscv,
linux-riscv, linux-kernel, Andrew Jones, James Houghton
On 11/28/24 5:55 AM, Sean Christopherson wrote:
> Now that KVM selftests uses the kernel's canonical arch paths, directly
> override ARCH to 'x86' when targeting x86_64 instead of defining ARCH_DIR
> to redirect to appropriate paths. ARCH_DIR was originally added to deal
> with KVM selftests using the target triple ARCH for directories, e.g.
> s390x and aarch64; keeping it around just to deal with the one-off alias
> from x86_64=>x86 is unnecessary and confusing.
>
> Note, even when selftests are built from the top-level Makefile, ARCH is
> scoped to KVM's makefiles, i.e. overriding ARCH won't trip up some other
> selftests that (somehow) expects x86_64 and can't work with x86.
>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> ---
> tools/testing/selftests/kvm/Makefile | 4 +---
> tools/testing/selftests/kvm/Makefile.kvm | 20 ++++++++++----------
> 2 files changed, 11 insertions(+), 13 deletions(-)
>
> diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
> index 9bc2eba1af1c..20af35a91d6f 100644
> --- a/tools/testing/selftests/kvm/Makefile
> +++ b/tools/testing/selftests/kvm/Makefile
> @@ -6,9 +6,7 @@ ARCH ?= $(SUBARCH)
> ifeq ($(ARCH),$(filter $(ARCH),arm64 s390 riscv x86 x86_64))
> # Top-level selftests allows ARCH=x86_64 :-(
> ifeq ($(ARCH),x86_64)
> - ARCH_DIR := x86
> -else
> - ARCH_DIR := $(ARCH)
> + ARCH := x86
> endif
> include Makefile.kvm
> else
> diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
> index 9888dd6bb483..4277b983cace 100644
> --- a/tools/testing/selftests/kvm/Makefile.kvm
> +++ b/tools/testing/selftests/kvm/Makefile.kvm
> @@ -207,10 +207,10 @@ TEST_GEN_PROGS_riscv += steal_time
> SPLIT_TESTS += arch_timer
> SPLIT_TESTS += get-reg-list
>
> -TEST_PROGS += $(TEST_PROGS_$(ARCH_DIR))
> -TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH_DIR))
> -TEST_GEN_PROGS_EXTENDED += $(TEST_GEN_PROGS_EXTENDED_$(ARCH_DIR))
> -LIBKVM += $(LIBKVM_$(ARCH_DIR))
> +TEST_PROGS += $(TEST_PROGS_$(ARCH))
> +TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(ARCH))
> +TEST_GEN_PROGS_EXTENDED += $(TEST_GEN_PROGS_EXTENDED_$(ARCH))
> +LIBKVM += $(LIBKVM_$(ARCH))
>
> OVERRIDE_TARGETS = 1
>
> @@ -222,14 +222,14 @@ include ../lib.mk
> INSTALL_HDR_PATH = $(top_srcdir)/usr
> LINUX_HDR_PATH = $(INSTALL_HDR_PATH)/include/
> LINUX_TOOL_INCLUDE = $(top_srcdir)/tools/include
> -LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH_DIR)/include
> +LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH)/include
> CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \
> -Wno-gnu-variable-sized-type-not-at-end -MD -MP -DCONFIG_64BIT \
> -fno-builtin-memcmp -fno-builtin-memcpy \
> -fno-builtin-memset -fno-builtin-strnlen \
> -fno-stack-protector -fno-PIE -fno-strict-aliasing \
> -I$(LINUX_TOOL_INCLUDE) -I$(LINUX_TOOL_ARCH_INCLUDE) \
> - -I$(LINUX_HDR_PATH) -Iinclude -I$(<D) -Iinclude/$(ARCH_DIR) \
> + -I$(LINUX_HDR_PATH) -Iinclude -I$(<D) -Iinclude/$(ARCH) \
> -I ../rseq -I.. $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
> ifeq ($(ARCH),s390)
> CFLAGS += -march=z10
> @@ -273,7 +273,7 @@ LIBKVM_S_OBJ := $(patsubst %.S, $(OUTPUT)/%.o, $(LIBKVM_S))
> LIBKVM_STRING_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM_STRING))
> LIBKVM_OBJS = $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ) $(LIBKVM_STRING_OBJ)
> SPLIT_TEST_GEN_PROGS := $(patsubst %, $(OUTPUT)/%, $(SPLIT_TESTS))
> -SPLIT_TEST_GEN_OBJ := $(patsubst %, $(OUTPUT)/$(ARCH_DIR)/%.o, $(SPLIT_TESTS))
> +SPLIT_TEST_GEN_OBJ := $(patsubst %, $(OUTPUT)/$(ARCH)/%.o, $(SPLIT_TESTS))
>
> TEST_GEN_OBJ = $(patsubst %, %.o, $(TEST_GEN_PROGS))
> TEST_GEN_OBJ += $(patsubst %, %.o, $(TEST_GEN_PROGS_EXTENDED))
> @@ -282,7 +282,7 @@ TEST_DEP_FILES += $(patsubst %.o, %.d, $(LIBKVM_OBJS))
> TEST_DEP_FILES += $(patsubst %.o, %.d, $(SPLIT_TEST_GEN_OBJ))
> -include $(TEST_DEP_FILES)
>
> -$(shell mkdir -p $(sort $(OUTPUT)/$(ARCH_DIR) $(dir $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ))))
> +$(shell mkdir -p $(sort $(OUTPUT)/$(ARCH) $(dir $(LIBKVM_C_OBJ) $(LIBKVM_S_OBJ))))
>
> $(filter-out $(SPLIT_TEST_GEN_PROGS), $(TEST_GEN_PROGS)) \
> $(TEST_GEN_PROGS_EXTENDED): %: %.o
> @@ -290,9 +290,9 @@ $(TEST_GEN_PROGS_EXTENDED): %: %.o
> $(TEST_GEN_OBJ): $(OUTPUT)/%.o: %.c
> $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
>
> -$(SPLIT_TEST_GEN_PROGS): $(OUTPUT)/%: $(OUTPUT)/%.o $(OUTPUT)/$(ARCH_DIR)/%.o
> +$(SPLIT_TEST_GEN_PROGS): $(OUTPUT)/%: $(OUTPUT)/%.o $(OUTPUT)/$(ARCH)/%.o
> $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@
> -$(SPLIT_TEST_GEN_OBJ): $(OUTPUT)/$(ARCH_DIR)/%.o: $(ARCH_DIR)/%.c
> +$(SPLIT_TEST_GEN_OBJ): $(OUTPUT)/$(ARCH)/%.o: $(ARCH)/%.c
> $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
>
> EXTRA_CLEAN += $(GEN_HDRS) \
--
BR,
Muhammad Usama Anjum
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 02/16] KVM: selftests: Return a value from vcpu_get_reg() instead of using an out-param
2024-11-28 0:55 ` [PATCH v4 02/16] KVM: selftests: Return a value from vcpu_get_reg() instead of using an out-param Sean Christopherson
@ 2024-11-28 8:25 ` Claudio Imbrenda
0 siblings, 0 replies; 32+ messages in thread
From: Claudio Imbrenda @ 2024-11-28 8:25 UTC (permalink / raw)
To: Sean Christopherson
Cc: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, linux-arm-kernel, kvmarm, kvm, kvm-riscv,
linux-riscv, linux-kernel, Andrew Jones, James Houghton,
Muhammad Usama Anjum
On Wed, 27 Nov 2024 16:55:33 -0800
Sean Christopherson <seanjc@google.com> wrote:
> Return a uint64_t from vcpu_get_reg() instead of having the caller provide
> a pointer to storage, as none of the vcpu_get_reg() usage in KVM selftests
> accesses a register larger than 64 bits, and vcpu_set_reg() only accepts a
> 64-bit value. If a use case comes along that needs to get a register that
> is larger than 64 bits, then a utility can be added to assert success and
> take a void pointer, but until then, forcing an out param yields ugly code
> and prevents feeding the output of vcpu_get_reg() into vcpu_set_reg().
>
> Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
for the s390 part:
Acked-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
> ---
> .../selftests/kvm/aarch64/aarch32_id_regs.c | 10 +--
> .../selftests/kvm/aarch64/debug-exceptions.c | 4 +-
> .../selftests/kvm/aarch64/hypercalls.c | 6 +-
> .../selftests/kvm/aarch64/no-vgic-v3.c | 2 +-
> .../testing/selftests/kvm/aarch64/psci_test.c | 6 +-
> .../selftests/kvm/aarch64/set_id_regs.c | 18 ++---
> .../kvm/aarch64/vpmu_counter_access.c | 19 +++---
> .../testing/selftests/kvm/include/kvm_util.h | 6 +-
> .../selftests/kvm/lib/aarch64/processor.c | 8 +--
> .../selftests/kvm/lib/riscv/processor.c | 66 +++++++++----------
> .../testing/selftests/kvm/riscv/arch_timer.c | 2 +-
> .../testing/selftests/kvm/riscv/ebreak_test.c | 2 +-
> .../selftests/kvm/riscv/sbi_pmu_test.c | 2 +-
> tools/testing/selftests/kvm/s390x/resets.c | 2 +-
> tools/testing/selftests/kvm/steal_time.c | 3 +-
> 15 files changed, 78 insertions(+), 78 deletions(-)
>
> diff --git a/tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c b/tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c
> index 8e5bd07a3727..447d61cae4db 100644
> --- a/tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c
> +++ b/tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c
> @@ -97,7 +97,7 @@ static void test_user_raz_wi(struct kvm_vcpu *vcpu)
> uint64_t reg_id = raz_wi_reg_ids[i];
> uint64_t val;
>
> - vcpu_get_reg(vcpu, reg_id, &val);
> + val = vcpu_get_reg(vcpu, reg_id);
> TEST_ASSERT_EQ(val, 0);
>
> /*
> @@ -106,7 +106,7 @@ static void test_user_raz_wi(struct kvm_vcpu *vcpu)
> */
> vcpu_set_reg(vcpu, reg_id, BAD_ID_REG_VAL);
>
> - vcpu_get_reg(vcpu, reg_id, &val);
> + val = vcpu_get_reg(vcpu, reg_id);
> TEST_ASSERT_EQ(val, 0);
> }
> }
> @@ -126,14 +126,14 @@ static void test_user_raz_invariant(struct kvm_vcpu *vcpu)
> uint64_t reg_id = raz_invariant_reg_ids[i];
> uint64_t val;
>
> - vcpu_get_reg(vcpu, reg_id, &val);
> + val = vcpu_get_reg(vcpu, reg_id);
> TEST_ASSERT_EQ(val, 0);
>
> r = __vcpu_set_reg(vcpu, reg_id, BAD_ID_REG_VAL);
> TEST_ASSERT(r < 0 && errno == EINVAL,
> "unexpected KVM_SET_ONE_REG error: r=%d, errno=%d", r, errno);
>
> - vcpu_get_reg(vcpu, reg_id, &val);
> + val = vcpu_get_reg(vcpu, reg_id);
> TEST_ASSERT_EQ(val, 0);
> }
> }
> @@ -144,7 +144,7 @@ static bool vcpu_aarch64_only(struct kvm_vcpu *vcpu)
> {
> uint64_t val, el0;
>
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64PFR0_EL1), &val);
> + val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64PFR0_EL1));
>
> el0 = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_EL0), val);
> return el0 == ID_AA64PFR0_EL1_ELx_64BIT_ONLY;
> diff --git a/tools/testing/selftests/kvm/aarch64/debug-exceptions.c b/tools/testing/selftests/kvm/aarch64/debug-exceptions.c
> index ff7a949fc96a..c7fb55c9135b 100644
> --- a/tools/testing/selftests/kvm/aarch64/debug-exceptions.c
> +++ b/tools/testing/selftests/kvm/aarch64/debug-exceptions.c
> @@ -501,7 +501,7 @@ void test_single_step_from_userspace(int test_cnt)
> TEST_ASSERT(ss_enable, "Unexpected KVM_EXIT_DEBUG");
>
> /* Check if the current pc is expected. */
> - vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pc), &pc);
> + pc = vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pc));
> TEST_ASSERT(!test_pc || pc == test_pc,
> "Unexpected pc 0x%lx (expected 0x%lx)",
> pc, test_pc);
> @@ -583,7 +583,7 @@ int main(int argc, char *argv[])
> uint64_t aa64dfr0;
>
> vm = vm_create_with_one_vcpu(&vcpu, guest_code);
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64DFR0_EL1), &aa64dfr0);
> + aa64dfr0 = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64DFR0_EL1));
> __TEST_REQUIRE(debug_version(aa64dfr0) >= 6,
> "Armv8 debug architecture not supported.");
> kvm_vm_free(vm);
> diff --git a/tools/testing/selftests/kvm/aarch64/hypercalls.c b/tools/testing/selftests/kvm/aarch64/hypercalls.c
> index 9d192ce0078d..ec54ec7726e9 100644
> --- a/tools/testing/selftests/kvm/aarch64/hypercalls.c
> +++ b/tools/testing/selftests/kvm/aarch64/hypercalls.c
> @@ -173,7 +173,7 @@ static void test_fw_regs_before_vm_start(struct kvm_vcpu *vcpu)
> const struct kvm_fw_reg_info *reg_info = &fw_reg_info[i];
>
> /* First 'read' should be an upper limit of the features supported */
> - vcpu_get_reg(vcpu, reg_info->reg, &val);
> + val = vcpu_get_reg(vcpu, reg_info->reg);
> TEST_ASSERT(val == FW_REG_ULIMIT_VAL(reg_info->max_feat_bit),
> "Expected all the features to be set for reg: 0x%lx; expected: 0x%lx; read: 0x%lx",
> reg_info->reg, FW_REG_ULIMIT_VAL(reg_info->max_feat_bit), val);
> @@ -184,7 +184,7 @@ static void test_fw_regs_before_vm_start(struct kvm_vcpu *vcpu)
> "Failed to clear all the features of reg: 0x%lx; ret: %d",
> reg_info->reg, errno);
>
> - vcpu_get_reg(vcpu, reg_info->reg, &val);
> + val = vcpu_get_reg(vcpu, reg_info->reg);
> TEST_ASSERT(val == 0,
> "Expected all the features to be cleared for reg: 0x%lx", reg_info->reg);
>
> @@ -214,7 +214,7 @@ static void test_fw_regs_after_vm_start(struct kvm_vcpu *vcpu)
> * Before starting the VM, the test clears all the bits.
> * Check if that's still the case.
> */
> - vcpu_get_reg(vcpu, reg_info->reg, &val);
> + val = vcpu_get_reg(vcpu, reg_info->reg);
> TEST_ASSERT(val == 0,
> "Expected all the features to be cleared for reg: 0x%lx",
> reg_info->reg);
> diff --git a/tools/testing/selftests/kvm/aarch64/no-vgic-v3.c b/tools/testing/selftests/kvm/aarch64/no-vgic-v3.c
> index 58304bbc2036..ebd70430c89d 100644
> --- a/tools/testing/selftests/kvm/aarch64/no-vgic-v3.c
> +++ b/tools/testing/selftests/kvm/aarch64/no-vgic-v3.c
> @@ -164,7 +164,7 @@ int main(int argc, char *argv[])
> uint64_t pfr0;
>
> vm = vm_create_with_one_vcpu(&vcpu, NULL);
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64PFR0_EL1), &pfr0);
> + pfr0 = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64PFR0_EL1));
> __TEST_REQUIRE(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_GIC), pfr0),
> "GICv3 not supported.");
> kvm_vm_free(vm);
> diff --git a/tools/testing/selftests/kvm/aarch64/psci_test.c b/tools/testing/selftests/kvm/aarch64/psci_test.c
> index eaa7655fefc1..0ab7d5a24482 100644
> --- a/tools/testing/selftests/kvm/aarch64/psci_test.c
> +++ b/tools/testing/selftests/kvm/aarch64/psci_test.c
> @@ -111,8 +111,8 @@ static void assert_vcpu_reset(struct kvm_vcpu *vcpu)
> {
> uint64_t obs_pc, obs_x0;
>
> - vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pc), &obs_pc);
> - vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.regs[0]), &obs_x0);
> + obs_pc = vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pc));
> + obs_x0 = vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.regs[0]));
>
> TEST_ASSERT(obs_pc == CPU_ON_ENTRY_ADDR,
> "unexpected target cpu pc: %lx (expected: %lx)",
> @@ -152,7 +152,7 @@ static void host_test_cpu_on(void)
> */
> vcpu_power_off(target);
>
> - vcpu_get_reg(target, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1), &target_mpidr);
> + target_mpidr = vcpu_get_reg(target, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1));
> vcpu_args_set(source, 1, target_mpidr & MPIDR_HWID_BITMASK);
> enter_guest(source);
>
> diff --git a/tools/testing/selftests/kvm/aarch64/set_id_regs.c b/tools/testing/selftests/kvm/aarch64/set_id_regs.c
> index a79b7f18452d..25ba7d382196 100644
> --- a/tools/testing/selftests/kvm/aarch64/set_id_regs.c
> +++ b/tools/testing/selftests/kvm/aarch64/set_id_regs.c
> @@ -346,7 +346,7 @@ static uint64_t test_reg_set_success(struct kvm_vcpu *vcpu, uint64_t reg,
> uint64_t mask = ftr_bits->mask;
> uint64_t val, new_val, ftr;
>
> - vcpu_get_reg(vcpu, reg, &val);
> + val = vcpu_get_reg(vcpu, reg);
> ftr = (val & mask) >> shift;
>
> ftr = get_safe_value(ftr_bits, ftr);
> @@ -356,7 +356,7 @@ static uint64_t test_reg_set_success(struct kvm_vcpu *vcpu, uint64_t reg,
> val |= ftr;
>
> vcpu_set_reg(vcpu, reg, val);
> - vcpu_get_reg(vcpu, reg, &new_val);
> + new_val = vcpu_get_reg(vcpu, reg);
> TEST_ASSERT_EQ(new_val, val);
>
> return new_val;
> @@ -370,7 +370,7 @@ static void test_reg_set_fail(struct kvm_vcpu *vcpu, uint64_t reg,
> uint64_t val, old_val, ftr;
> int r;
>
> - vcpu_get_reg(vcpu, reg, &val);
> + val = vcpu_get_reg(vcpu, reg);
> ftr = (val & mask) >> shift;
>
> ftr = get_invalid_value(ftr_bits, ftr);
> @@ -384,7 +384,7 @@ static void test_reg_set_fail(struct kvm_vcpu *vcpu, uint64_t reg,
> TEST_ASSERT(r < 0 && errno == EINVAL,
> "Unexpected KVM_SET_ONE_REG error: r=%d, errno=%d", r, errno);
>
> - vcpu_get_reg(vcpu, reg, &val);
> + val = vcpu_get_reg(vcpu, reg);
> TEST_ASSERT_EQ(val, old_val);
> }
>
> @@ -576,7 +576,7 @@ static void test_clidr(struct kvm_vcpu *vcpu)
> uint64_t clidr;
> int level;
>
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_CLIDR_EL1), &clidr);
> + clidr = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_CLIDR_EL1));
>
> /* find the first empty level in the cache hierarchy */
> for (level = 1; level < 7; level++) {
> @@ -601,7 +601,7 @@ static void test_ctr(struct kvm_vcpu *vcpu)
> {
> u64 ctr;
>
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_CTR_EL0), &ctr);
> + ctr = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_CTR_EL0));
> ctr &= ~CTR_EL0_DIC_MASK;
> if (ctr & CTR_EL0_IminLine_MASK)
> ctr--;
> @@ -617,7 +617,7 @@ static void test_vcpu_ftr_id_regs(struct kvm_vcpu *vcpu)
> test_clidr(vcpu);
> test_ctr(vcpu);
>
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1), &val);
> + val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1));
> val++;
> vcpu_set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1), val);
>
> @@ -630,7 +630,7 @@ static void test_assert_id_reg_unchanged(struct kvm_vcpu *vcpu, uint32_t encodin
> size_t idx = encoding_to_range_idx(encoding);
> uint64_t observed;
>
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(encoding), &observed);
> + observed = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(encoding));
> TEST_ASSERT_EQ(test_reg_vals[idx], observed);
> }
>
> @@ -665,7 +665,7 @@ int main(void)
> vm = vm_create_with_one_vcpu(&vcpu, guest_code);
>
> /* Check for AARCH64 only system */
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64PFR0_EL1), &val);
> + val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64PFR0_EL1));
> el0 = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_EL0), val);
> aarch64_only = (el0 == ID_AA64PFR0_EL1_ELx_64BIT_ONLY);
>
> diff --git a/tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c b/tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c
> index f9c0c86d7e85..f16b3b27e32e 100644
> --- a/tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c
> +++ b/tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c
> @@ -440,8 +440,7 @@ static void create_vpmu_vm(void *guest_code)
> "Failed to create vgic-v3, skipping");
>
> /* Make sure that PMUv3 support is indicated in the ID register */
> - vcpu_get_reg(vpmu_vm.vcpu,
> - KVM_ARM64_SYS_REG(SYS_ID_AA64DFR0_EL1), &dfr0);
> + dfr0 = vcpu_get_reg(vpmu_vm.vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64DFR0_EL1));
> pmuver = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64DFR0_EL1_PMUVer), dfr0);
> TEST_ASSERT(pmuver != ID_AA64DFR0_EL1_PMUVer_IMP_DEF &&
> pmuver >= ID_AA64DFR0_EL1_PMUVer_IMP,
> @@ -484,7 +483,7 @@ static void test_create_vpmu_vm_with_pmcr_n(uint64_t pmcr_n, bool expect_fail)
> create_vpmu_vm(guest_code);
> vcpu = vpmu_vm.vcpu;
>
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0), &pmcr_orig);
> + pmcr_orig = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0));
> pmcr = pmcr_orig;
>
> /*
> @@ -493,7 +492,7 @@ static void test_create_vpmu_vm_with_pmcr_n(uint64_t pmcr_n, bool expect_fail)
> */
> set_pmcr_n(&pmcr, pmcr_n);
> vcpu_set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0), pmcr);
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0), &pmcr);
> + pmcr = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0));
>
> if (expect_fail)
> TEST_ASSERT(pmcr_orig == pmcr,
> @@ -521,7 +520,7 @@ static void run_access_test(uint64_t pmcr_n)
> vcpu = vpmu_vm.vcpu;
>
> /* Save the initial sp to restore them later to run the guest again */
> - vcpu_get_reg(vcpu, ARM64_CORE_REG(sp_el1), &sp);
> + sp = vcpu_get_reg(vcpu, ARM64_CORE_REG(sp_el1));
>
> run_vcpu(vcpu, pmcr_n);
>
> @@ -572,12 +571,12 @@ static void run_pmregs_validity_test(uint64_t pmcr_n)
> * Test if the 'set' and 'clr' variants of the registers
> * are initialized based on the number of valid counters.
> */
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(set_reg_id), ®_val);
> + reg_val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(set_reg_id));
> TEST_ASSERT((reg_val & (~valid_counters_mask)) == 0,
> "Initial read of set_reg: 0x%llx has unimplemented counters enabled: 0x%lx",
> KVM_ARM64_SYS_REG(set_reg_id), reg_val);
>
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(clr_reg_id), ®_val);
> + reg_val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(clr_reg_id));
> TEST_ASSERT((reg_val & (~valid_counters_mask)) == 0,
> "Initial read of clr_reg: 0x%llx has unimplemented counters enabled: 0x%lx",
> KVM_ARM64_SYS_REG(clr_reg_id), reg_val);
> @@ -589,12 +588,12 @@ static void run_pmregs_validity_test(uint64_t pmcr_n)
> */
> vcpu_set_reg(vcpu, KVM_ARM64_SYS_REG(set_reg_id), max_counters_mask);
>
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(set_reg_id), ®_val);
> + reg_val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(set_reg_id));
> TEST_ASSERT((reg_val & (~valid_counters_mask)) == 0,
> "Read of set_reg: 0x%llx has unimplemented counters enabled: 0x%lx",
> KVM_ARM64_SYS_REG(set_reg_id), reg_val);
>
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(clr_reg_id), ®_val);
> + reg_val = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(clr_reg_id));
> TEST_ASSERT((reg_val & (~valid_counters_mask)) == 0,
> "Read of clr_reg: 0x%llx has unimplemented counters enabled: 0x%lx",
> KVM_ARM64_SYS_REG(clr_reg_id), reg_val);
> @@ -625,7 +624,7 @@ static uint64_t get_pmcr_n_limit(void)
> uint64_t pmcr;
>
> create_vpmu_vm(guest_code);
> - vcpu_get_reg(vpmu_vm.vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0), &pmcr);
> + pmcr = vcpu_get_reg(vpmu_vm.vcpu, KVM_ARM64_SYS_REG(SYS_PMCR_EL0));
> destroy_vpmu_vm();
> return get_pmcr_n(pmcr);
> }
> diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing/selftests/kvm/include/kvm_util.h
> index bc7c242480d6..287a3ec06df4 100644
> --- a/tools/testing/selftests/kvm/include/kvm_util.h
> +++ b/tools/testing/selftests/kvm/include/kvm_util.h
> @@ -702,11 +702,13 @@ static inline int __vcpu_set_reg(struct kvm_vcpu *vcpu, uint64_t id, uint64_t va
>
> return __vcpu_ioctl(vcpu, KVM_SET_ONE_REG, ®);
> }
> -static inline void vcpu_get_reg(struct kvm_vcpu *vcpu, uint64_t id, void *addr)
> +static inline uint64_t vcpu_get_reg(struct kvm_vcpu *vcpu, uint64_t id)
> {
> - struct kvm_one_reg reg = { .id = id, .addr = (uint64_t)addr };
> + uint64_t val;
> + struct kvm_one_reg reg = { .id = id, .addr = (uint64_t)&val };
>
> vcpu_ioctl(vcpu, KVM_GET_ONE_REG, ®);
> + return val;
> }
> static inline void vcpu_set_reg(struct kvm_vcpu *vcpu, uint64_t id, uint64_t val)
> {
> diff --git a/tools/testing/selftests/kvm/lib/aarch64/processor.c b/tools/testing/selftests/kvm/lib/aarch64/processor.c
> index 698e34f39241..7ba3aa3755f3 100644
> --- a/tools/testing/selftests/kvm/lib/aarch64/processor.c
> +++ b/tools/testing/selftests/kvm/lib/aarch64/processor.c
> @@ -281,8 +281,8 @@ void aarch64_vcpu_setup(struct kvm_vcpu *vcpu, struct kvm_vcpu_init *init)
> */
> vcpu_set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_CPACR_EL1), 3 << 20);
>
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_SCTLR_EL1), &sctlr_el1);
> - vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_TCR_EL1), &tcr_el1);
> + sctlr_el1 = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_SCTLR_EL1));
> + tcr_el1 = vcpu_get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_TCR_EL1));
>
> /* Configure base granule size */
> switch (vm->mode) {
> @@ -360,8 +360,8 @@ void vcpu_arch_dump(FILE *stream, struct kvm_vcpu *vcpu, uint8_t indent)
> {
> uint64_t pstate, pc;
>
> - vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pstate), &pstate);
> - vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pc), &pc);
> + pstate = vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pstate));
> + pc = vcpu_get_reg(vcpu, ARM64_CORE_REG(regs.pc));
>
> fprintf(stream, "%*spstate: 0x%.16lx pc: 0x%.16lx\n",
> indent, "", pstate, pc);
> diff --git a/tools/testing/selftests/kvm/lib/riscv/processor.c b/tools/testing/selftests/kvm/lib/riscv/processor.c
> index 6ae47b3d6b25..dd663bcf0cc0 100644
> --- a/tools/testing/selftests/kvm/lib/riscv/processor.c
> +++ b/tools/testing/selftests/kvm/lib/riscv/processor.c
> @@ -221,39 +221,39 @@ void vcpu_arch_dump(FILE *stream, struct kvm_vcpu *vcpu, uint8_t indent)
> {
> struct kvm_riscv_core core;
>
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(mode), &core.mode);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.pc), &core.regs.pc);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.ra), &core.regs.ra);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.sp), &core.regs.sp);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.gp), &core.regs.gp);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.tp), &core.regs.tp);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t0), &core.regs.t0);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t1), &core.regs.t1);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t2), &core.regs.t2);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s0), &core.regs.s0);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s1), &core.regs.s1);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a0), &core.regs.a0);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a1), &core.regs.a1);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a2), &core.regs.a2);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a3), &core.regs.a3);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a4), &core.regs.a4);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a5), &core.regs.a5);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a6), &core.regs.a6);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a7), &core.regs.a7);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s2), &core.regs.s2);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s3), &core.regs.s3);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s4), &core.regs.s4);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s5), &core.regs.s5);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s6), &core.regs.s6);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s7), &core.regs.s7);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s8), &core.regs.s8);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s9), &core.regs.s9);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s10), &core.regs.s10);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s11), &core.regs.s11);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t3), &core.regs.t3);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t4), &core.regs.t4);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t5), &core.regs.t5);
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t6), &core.regs.t6);
> + core.mode = vcpu_get_reg(vcpu, RISCV_CORE_REG(mode));
> + core.regs.pc = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.pc));
> + core.regs.ra = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.ra));
> + core.regs.sp = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.sp));
> + core.regs.gp = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.gp));
> + core.regs.tp = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.tp));
> + core.regs.t0 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t0));
> + core.regs.t1 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t1));
> + core.regs.t2 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t2));
> + core.regs.s0 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s0));
> + core.regs.s1 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s1));
> + core.regs.a0 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a0));
> + core.regs.a1 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a1));
> + core.regs.a2 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a2));
> + core.regs.a3 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a3));
> + core.regs.a4 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a4));
> + core.regs.a5 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a5));
> + core.regs.a6 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a6));
> + core.regs.a7 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.a7));
> + core.regs.s2 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s2));
> + core.regs.s3 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s3));
> + core.regs.s4 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s4));
> + core.regs.s5 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s5));
> + core.regs.s6 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s6));
> + core.regs.s7 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s7));
> + core.regs.s8 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s8));
> + core.regs.s9 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s9));
> + core.regs.s10 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s10));
> + core.regs.s11 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.s11));
> + core.regs.t3 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t3));
> + core.regs.t4 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t4));
> + core.regs.t5 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t5));
> + core.regs.t6 = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.t6));
>
> fprintf(stream,
> " MODE: 0x%lx\n", core.mode);
> diff --git a/tools/testing/selftests/kvm/riscv/arch_timer.c b/tools/testing/selftests/kvm/riscv/arch_timer.c
> index 2c792228ac0b..9e370800a6a2 100644
> --- a/tools/testing/selftests/kvm/riscv/arch_timer.c
> +++ b/tools/testing/selftests/kvm/riscv/arch_timer.c
> @@ -93,7 +93,7 @@ struct kvm_vm *test_vm_create(void)
> vcpu_init_vector_tables(vcpus[i]);
>
> /* Initialize guest timer frequency. */
> - vcpu_get_reg(vcpus[0], RISCV_TIMER_REG(frequency), &timer_freq);
> + timer_freq = vcpu_get_reg(vcpus[0], RISCV_TIMER_REG(frequency));
> sync_global_to_guest(vm, timer_freq);
> pr_debug("timer_freq: %lu\n", timer_freq);
>
> diff --git a/tools/testing/selftests/kvm/riscv/ebreak_test.c b/tools/testing/selftests/kvm/riscv/ebreak_test.c
> index 0e0712854953..cfed6c727bfc 100644
> --- a/tools/testing/selftests/kvm/riscv/ebreak_test.c
> +++ b/tools/testing/selftests/kvm/riscv/ebreak_test.c
> @@ -60,7 +60,7 @@ int main(void)
>
> TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_DEBUG);
>
> - vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.pc), &pc);
> + pc = vcpu_get_reg(vcpu, RISCV_CORE_REG(regs.pc));
> TEST_ASSERT_EQ(pc, LABEL_ADDRESS(sw_bp_1));
>
> /* skip sw_bp_1 */
> diff --git a/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c b/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c
> index f299cbfd23ca..f45c0ecc902d 100644
> --- a/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c
> +++ b/tools/testing/selftests/kvm/riscv/sbi_pmu_test.c
> @@ -608,7 +608,7 @@ static void test_vm_events_overflow(void *guest_code)
>
> vcpu_init_vector_tables(vcpu);
> /* Initialize guest timer frequency. */
> - vcpu_get_reg(vcpu, RISCV_TIMER_REG(frequency), &timer_freq);
> + timer_freq = vcpu_get_reg(vcpu, RISCV_TIMER_REG(frequency));
> sync_global_to_guest(vm, timer_freq);
>
> run_vcpu(vcpu);
> diff --git a/tools/testing/selftests/kvm/s390x/resets.c b/tools/testing/selftests/kvm/s390x/resets.c
> index 357943f2bea8..b58f75b381e5 100644
> --- a/tools/testing/selftests/kvm/s390x/resets.c
> +++ b/tools/testing/selftests/kvm/s390x/resets.c
> @@ -61,7 +61,7 @@ static void test_one_reg(struct kvm_vcpu *vcpu, uint64_t id, uint64_t value)
> {
> uint64_t eval_reg;
>
> - vcpu_get_reg(vcpu, id, &eval_reg);
> + eval_reg = vcpu_get_reg(vcpu, id);
> TEST_ASSERT(eval_reg == value, "value == 0x%lx", value);
> }
>
> diff --git a/tools/testing/selftests/kvm/steal_time.c b/tools/testing/selftests/kvm/steal_time.c
> index a8d3afa0b86b..cce2520af720 100644
> --- a/tools/testing/selftests/kvm/steal_time.c
> +++ b/tools/testing/selftests/kvm/steal_time.c
> @@ -269,9 +269,8 @@ static void guest_code(int cpu)
> static bool is_steal_time_supported(struct kvm_vcpu *vcpu)
> {
> uint64_t id = RISCV_SBI_EXT_REG(KVM_RISCV_SBI_EXT_STA);
> - unsigned long enabled;
> + unsigned long enabled = vcpu_get_reg(vcpu, id);
>
> - vcpu_get_reg(vcpu, id, &enabled);
> TEST_ASSERT(enabled == 0 || enabled == 1, "Expected boolean result");
>
> return enabled;
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories
2024-11-28 0:55 ` [PATCH v4 15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories Sean Christopherson
2024-11-28 8:20 ` Muhammad Usama Anjum
@ 2024-11-28 8:25 ` Claudio Imbrenda
2024-12-02 18:47 ` Sean Christopherson
2024-11-28 8:43 ` Andrew Jones
2 siblings, 1 reply; 32+ messages in thread
From: Claudio Imbrenda @ 2024-11-28 8:25 UTC (permalink / raw)
To: Sean Christopherson
Cc: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, linux-arm-kernel, kvmarm, kvm, kvm-riscv,
linux-riscv, linux-kernel, Andrew Jones, James Houghton,
Muhammad Usama Anjum
On Wed, 27 Nov 2024 16:55:46 -0800
Sean Christopherson <seanjc@google.com> wrote:
> Use the kernel's canonical $(ARCH) paths instead of the raw target triple
> for KVM selftests directories. KVM selftests are quite nearly the only
> place in the entire kernel that using the target triple for directories,
> tools/testing/selftests/drivers/s390x being the lone holdout.
>
> Using the kernel's preferred nomenclature eliminates the minor, but
> annoying, friction of having to translate to KVM's selftests directories,
> e.g. for pattern matching, opening files, running selftests, etc.
>
> Opportunsitically delete file comments that reference the full path of the
> file, as they are obviously prone to becoming stale, and serve no known
> purpose.
>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
> ---
just one minor nit
[...]
> diff --git a/tools/testing/selftests/kvm/include/x86_64/svm_util.h b/tools/testing/selftests/kvm/include/x86/svm_util.h
> similarity index 94%
> rename from tools/testing/selftests/kvm/include/x86_64/svm_util.h
> rename to tools/testing/selftests/kvm/include/x86/svm_util.h
> index 044f0f872ba9..b74c6dcddcbd 100644
> --- a/tools/testing/selftests/kvm/include/x86_64/svm_util.h
> +++ b/tools/testing/selftests/kvm/include/x86/svm_util.h
> @@ -1,8 +1,5 @@
> /* SPDX-License-Identifier: GPL-2.0-only */
> /*
> - * tools/testing/selftests/kvm/include/x86_64/svm_utils.h
this line clearly has to go ^
> - * Header for nested SVM testing
but I think this one can stay? ^
regardless, for the s390 part:
Acked-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
> - *
> * Copyright (C) 2020, Red Hat, Inc.
> */
>
[...]
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 14/16] KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs
2024-11-28 0:55 ` [PATCH v4 14/16] KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs Sean Christopherson
2024-11-28 8:19 ` Muhammad Usama Anjum
@ 2024-11-28 8:42 ` Andrew Jones
1 sibling, 0 replies; 32+ messages in thread
From: Andrew Jones @ 2024-11-28 8:42 UTC (permalink / raw)
To: Sean Christopherson
Cc: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, linux-arm-kernel, kvmarm, kvm,
kvm-riscv, linux-riscv, linux-kernel, James Houghton,
Muhammad Usama Anjum
On Wed, Nov 27, 2024 at 04:55:45PM -0800, Sean Christopherson wrote:
> Provide empty targets for KVM selftests if the target architecture is
> unsupported to make it obvious which architectures are supported, and so
> that various side effects don't fail and/or do weird things, e.g. as is,
> "mkdir -p $(sort $(dir $(TEST_GEN_PROGS)))" fails due to a missing operand,
> and conversely, "$(shell mkdir -p $(sort $(OUTPUT)/$(ARCH_DIR) ..." will
> create an empty, useless directory for the unsupported architecture.
>
> Move the guts of the Makefile to Makefile.kvm so that it's easier to see
> that the if-statement effectively guards all of KVM selftests.
>
> Reported-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
> ---
> tools/testing/selftests/kvm/.gitignore | 1 +
> tools/testing/selftests/kvm/Makefile | 336 +----------------------
> tools/testing/selftests/kvm/Makefile.kvm | 334 ++++++++++++++++++++++
> 3 files changed, 340 insertions(+), 331 deletions(-)
> create mode 100644 tools/testing/selftests/kvm/Makefile.kvm
>
Acked-by: Andrew Jones <ajones@ventanamicro.com>
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories
2024-11-28 0:55 ` [PATCH v4 15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories Sean Christopherson
2024-11-28 8:20 ` Muhammad Usama Anjum
2024-11-28 8:25 ` Claudio Imbrenda
@ 2024-11-28 8:43 ` Andrew Jones
2 siblings, 0 replies; 32+ messages in thread
From: Andrew Jones @ 2024-11-28 8:43 UTC (permalink / raw)
To: Sean Christopherson
Cc: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, linux-arm-kernel, kvmarm, kvm,
kvm-riscv, linux-riscv, linux-kernel, James Houghton,
Muhammad Usama Anjum
On Wed, Nov 27, 2024 at 04:55:46PM -0800, Sean Christopherson wrote:
> Use the kernel's canonical $(ARCH) paths instead of the raw target triple
> for KVM selftests directories. KVM selftests are quite nearly the only
> place in the entire kernel that using the target triple for directories,
> tools/testing/selftests/drivers/s390x being the lone holdout.
>
> Using the kernel's preferred nomenclature eliminates the minor, but
> annoying, friction of having to translate to KVM's selftests directories,
> e.g. for pattern matching, opening files, running selftests, etc.
>
> Opportunsitically delete file comments that reference the full path of the
> file, as they are obviously prone to becoming stale, and serve no known
> purpose.
>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
> ---
Acked-by: Andrew Jones <ajones@ventanamicro.com>
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories
2024-11-28 8:25 ` Claudio Imbrenda
@ 2024-12-02 18:47 ` Sean Christopherson
0 siblings, 0 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-12-02 18:47 UTC (permalink / raw)
To: Claudio Imbrenda
Cc: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, linux-arm-kernel, kvmarm, kvm, kvm-riscv,
linux-riscv, linux-kernel, Andrew Jones, James Houghton,
Muhammad Usama Anjum
On Thu, Nov 28, 2024, Claudio Imbrenda wrote:
> On Wed, 27 Nov 2024 16:55:46 -0800
> > diff --git a/tools/testing/selftests/kvm/include/x86_64/svm_util.h b/tools/testing/selftests/kvm/include/x86/svm_util.h
> > similarity index 94%
> > rename from tools/testing/selftests/kvm/include/x86_64/svm_util.h
> > rename to tools/testing/selftests/kvm/include/x86/svm_util.h
> > index 044f0f872ba9..b74c6dcddcbd 100644
> > --- a/tools/testing/selftests/kvm/include/x86_64/svm_util.h
> > +++ b/tools/testing/selftests/kvm/include/x86/svm_util.h
> > @@ -1,8 +1,5 @@
> > /* SPDX-License-Identifier: GPL-2.0-only */
> > /*
> > - * tools/testing/selftests/kvm/include/x86_64/svm_utils.h
>
> this line clearly has to go ^
>
> > - * Header for nested SVM testing
>
> but I think this one can stay? ^
It should go too, the header contains declarations for helpers that having nothing
to do with nested SVM.
On a somewhat related topic, the file should probably be "svm.h", but that's a
future cleanup.
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (15 preceding siblings ...)
2024-11-28 0:55 ` [PATCH v4 16/16] KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR Sean Christopherson
@ 2024-12-16 22:33 ` Sean Christopherson
2024-12-18 21:56 ` Sean Christopherson
17 siblings, 0 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-12-16 22:33 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, linux-arm-kernel, kvmarm, kvm,
kvm-riscv, linux-riscv, linux-kernel, Andrew Jones,
James Houghton, Muhammad Usama Anjum
On Wed, Nov 27, 2024, Sean Christopherson wrote:
> Two separate series (mmu_stress_test[1] and $ARCH[2]), posted as one to
> avoid unpleasant conflicts, and because I hope to land both in kvm/next
> shortly after 6.12-rc1 since they impact all of KVM selftests.
>
> mmu_stress_test
> ---------------
> Convert the max_guest_memory_test into a more generic mmu_stress_test.
> The basic gist of the "conversion" is to have the test do mprotect() on
> guest memory while vCPUs are accessing said memory, e.g. to verify KVM
> and mmu_notifiers are working as intended.
>
> The original plan was that patch 3 would be a single patch, but things
> snowballed in order to rework vcpu_get_reg() to return a value instead
> of using an out-param. Having to define a variable just to bump the
> program counter on arm64 annoyed me.
>
> $ARCH
> -----
> Play nice with treewrite builds of unsupported architectures, e.g. arm
> (32-bit), as KVM selftests' Makefile doesn't do anything to ensure the
> target architecture is actually one KVM selftests supports.
>
> The last two patches are opportunistic changes (since the above Makefile
> change will generate conflicts everywhere) to switch to using $(ARCH)
> instead of the target triple for arch specific directories, e.g. arm64
> instead of aarch64, mainly so as not to be different from the rest of
> the kernel.
Paolo,
Unless you or someone else have concerns, can you apply this to kvm/next sooner
than later? I'd like to start applying selftests changes for 6.14 and don't want
generate conflicts, and I really don't want to have to rebase and push this series
out again.
Thanks!
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
` (16 preceding siblings ...)
2024-12-16 22:33 ` [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
@ 2024-12-18 21:56 ` Sean Christopherson
2024-12-18 22:12 ` Sean Christopherson
17 siblings, 1 reply; 32+ messages in thread
From: Sean Christopherson @ 2024-12-18 21:56 UTC (permalink / raw)
To: Sean Christopherson, Marc Zyngier, Oliver Upton, Anup Patel,
Paul Walmsley, Palmer Dabbelt, Albert Ou, Paolo Bonzini,
Christian Borntraeger, Janosch Frank, Claudio Imbrenda
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
On Wed, 27 Nov 2024 16:55:31 -0800, Sean Christopherson wrote:
> Two separate series (mmu_stress_test[1] and $ARCH[2]), posted as one to
> avoid unpleasant conflicts, and because I hope to land both in kvm/next
> shortly after 6.12-rc1 since they impact all of KVM selftests.
>
> mmu_stress_test
> ---------------
> Convert the max_guest_memory_test into a more generic mmu_stress_test.
> The basic gist of the "conversion" is to have the test do mprotect() on
> guest memory while vCPUs are accessing said memory, e.g. to verify KVM
> and mmu_notifiers are working as intended.
>
> [...]
As I am running out of time before I disappear for two weeks, applied to:
https://github.com/kvm-x86/linux.git selftests_arch
Other KVM maintainers, that branch is officially immutable. I also pushed a tag,
kvm-selftests-arch-6.14, just in case I pull a stupid and manage to clobber the
branch. My apologies if this causes pain. AFAICT, there aren't any queued or
in-flight patches that git's rename magic can't automatically handle, so hopefully
this ends up being pain-free.
Paolo, here's a pull request if you want to pull this into kvm/next long before
the 6.14 merge window. Diff stats at the very bottom (hilariously long).
---
The following changes since commit 3522c419758ee8dca5a0e8753ee0070a22157bc1:
Merge tag 'kvm-riscv-fixes-6.13-1' of https://github.com/kvm-riscv/linux into HEAD (2024-12-13 13:59:20 -0500)
are available in the Git repository at:
https://github.com/kvm-x86/linux.git tags/kvm-selftests-arch-6.14
for you to fetch changes up to d76fe926b6c443f912bbb14bbcd42a8b9e5d68f6:
KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR (2024-12-17 08:49:49 -0800)
----------------------------------------------------------------
KVM selftests "tree"-wide changes for 6.14:
- Rework vcpu_get_reg() to return a value instead of using an out-param, and
update all affected arch code accordingly.
- Convert the max_guest_memory_test into a more generic mmu_stress_test.
The basic gist of the "conversion" is to have the test do mprotect() on
guest memory while vCPUs are accessing said memory, e.g. to verify KVM
and mmu_notifiers are working as intended.
- Play nice with treewrite builds of unsupported architectures, e.g. arm
(32-bit), as KVM selftests' Makefile doesn't do anything to ensure the
target architecture is actually one KVM selftests supports.
- Use the kernel's $(ARCH) definition instead of the target triple for arch
specific directories, e.g. arm64 instead of aarch64, mainly so as not to
be different from the rest of the kernel.
----------------------------------------------------------------
Sean Christopherson (16):
KVM: Move KVM_REG_SIZE() definition to common uAPI header
KVM: selftests: Return a value from vcpu_get_reg() instead of using an out-param
KVM: selftests: Assert that vcpu_{g,s}et_reg() won't truncate
KVM: selftests: Check for a potential unhandled exception iff KVM_RUN succeeded
KVM: selftests: Rename max_guest_memory_test to mmu_stress_test
KVM: selftests: Only muck with SREGS on x86 in mmu_stress_test
KVM: selftests: Compute number of extra pages needed in mmu_stress_test
KVM: sefltests: Explicitly include ucall_common.h in mmu_stress_test.c
KVM: selftests: Enable mmu_stress_test on arm64
KVM: selftests: Use vcpu_arch_put_guest() in mmu_stress_test
KVM: selftests: Precisely limit the number of guest loops in mmu_stress_test
KVM: selftests: Add a read-only mprotect() phase to mmu_stress_test
KVM: selftests: Verify KVM correctly handles mprotect(PROT_READ)
KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs
KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories
KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR
---
[01/16] KVM: Move KVM_REG_SIZE() definition to common uAPI header
https://github.com/kvm-x86/linux/commit/915d2f0718a4
[02/16] KVM: selftests: Return a value from vcpu_get_reg() instead of using an out-param
https://github.com/kvm-x86/linux/commit/411e22037f8c
[03/16] KVM: selftests: Assert that vcpu_{g,s}et_reg() won't truncate
https://github.com/kvm-x86/linux/commit/446d7f483be3
[04/16] KVM: selftests: Check for a potential unhandled exception iff KVM_RUN succeeded
https://github.com/kvm-x86/linux/commit/f3c4e02e4da2
[05/16] KVM: selftests: Rename max_guest_memory_test to mmu_stress_test
https://github.com/kvm-x86/linux/commit/356ebe558f55
[06/16] KVM: selftests: Only muck with SREGS on x86 in mmu_stress_test
https://github.com/kvm-x86/linux/commit/66d612d32fe3
[07/16] KVM: selftests: Compute number of extra pages needed in mmu_stress_test
https://github.com/kvm-x86/linux/commit/f1e0b743b12e
[08/16] KVM: sefltests: Explicitly include ucall_common.h in mmu_stress_test.c
https://github.com/kvm-x86/linux/commit/0ce51ad9d565
[09/16] KVM: selftests: Enable mmu_stress_test on arm64
https://github.com/kvm-x86/linux/commit/d2fa5a3b80c6
[10/16] KVM: selftests: Use vcpu_arch_put_guest() in mmu_stress_test
https://github.com/kvm-x86/linux/commit/c1797c2be44d
[11/16] KVM: selftests: Precisely limit the number of guest loops in mmu_stress_test
https://github.com/kvm-x86/linux/commit/9615ab61eb54
[12/16] KVM: selftests: Add a read-only mprotect() phase to mmu_stress_test
https://github.com/kvm-x86/linux/commit/d9a3b8ab6643
[13/16] KVM: selftests: Verify KVM correctly handles mprotect(PROT_READ)
https://github.com/kvm-x86/linux/commit/a606855e27b3
[14/16] KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs
https://github.com/kvm-x86/linux/commit/1f13ec4de22d
[15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories
https://github.com/kvm-x86/linux/commit/022d78205681
[16/16] KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR
https://github.com/kvm-x86/linux/commit/d76fe926b6c4
--
https://github.com/kvm-x86/linux/tree/next
MAINTAINERS | 12 +--
arch/arm64/include/uapi/asm/kvm.h | 3 -
arch/riscv/include/uapi/asm/kvm.h | 3 -
include/uapi/linux/kvm.h | 4 +
tools/testing/selftests/kvm/.gitignore | 1 +
tools/testing/selftests/kvm/Makefile | 345 ++------------------------------------------------------------------------------
tools/testing/selftests/kvm/Makefile.kvm | 330 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tools/testing/selftests/kvm/{aarch64 => arm64}/aarch32_id_regs.c | 10 +--
tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer_edge_cases.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/debug-exceptions.c | 4 +-
tools/testing/selftests/kvm/{aarch64 => arm64}/get-reg-list.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/hypercalls.c | 6 +-
tools/testing/selftests/kvm/{aarch64 => arm64}/mmio_abort.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/no-vgic-v3.c | 2 +-
tools/testing/selftests/kvm/{aarch64 => arm64}/page_fault_test.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/psci_test.c | 6 +-
tools/testing/selftests/kvm/{aarch64 => arm64}/set_id_regs.c | 18 ++---
tools/testing/selftests/kvm/{aarch64 => arm64}/smccc_filter.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/vcpu_width_config.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_init.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_irq.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_lpi_stress.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/vpmu_counter_access.c | 19 +++--
tools/testing/selftests/kvm/dirty_log_perf_test.c | 2 +-
tools/testing/selftests/kvm/include/{aarch64 => arm64}/arch_timer.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/delay.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3_its.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/kvm_util_arch.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/processor.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/spinlock.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/ucall.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/vgic.h | 0
tools/testing/selftests/kvm/include/kvm_util.h | 10 ++-
tools/testing/selftests/kvm/include/{s390x => s390}/debug_print.h | 0
tools/testing/selftests/kvm/include/{s390x => s390}/diag318_test_handler.h | 0
tools/testing/selftests/kvm/include/{s390x => s390}/facility.h | 0
tools/testing/selftests/kvm/include/{s390x => s390}/kvm_util_arch.h | 0
tools/testing/selftests/kvm/include/{s390x => s390}/processor.h | 0
tools/testing/selftests/kvm/include/{s390x => s390}/sie.h | 0
tools/testing/selftests/kvm/include/{s390x => s390}/ucall.h | 0
tools/testing/selftests/kvm/include/{x86_64 => x86}/apic.h | 2 -
tools/testing/selftests/kvm/include/{x86_64 => x86}/evmcs.h | 3 -
tools/testing/selftests/kvm/include/{x86_64 => x86}/hyperv.h | 3 -
tools/testing/selftests/kvm/include/{x86_64 => x86}/kvm_util_arch.h | 0
tools/testing/selftests/kvm/include/{x86_64 => x86}/mce.h | 2 -
tools/testing/selftests/kvm/include/{x86_64 => x86}/pmu.h | 0
tools/testing/selftests/kvm/include/{x86_64 => x86}/processor.h | 2 -
tools/testing/selftests/kvm/include/{x86_64 => x86}/sev.h | 0
tools/testing/selftests/kvm/include/{x86_64 => x86}/svm.h | 6 --
tools/testing/selftests/kvm/include/{x86_64 => x86}/svm_util.h | 3 -
tools/testing/selftests/kvm/include/{x86_64 => x86}/ucall.h | 0
tools/testing/selftests/kvm/include/{x86_64 => x86}/vmx.h | 2 -
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic.c | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_private.h | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3.c | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3_its.c | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/handlers.S | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/processor.c | 8 +-
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/spinlock.c | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/ucall.c | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/vgic.c | 0
tools/testing/selftests/kvm/lib/kvm_util.c | 3 +-
tools/testing/selftests/kvm/lib/riscv/processor.c | 66 ++++++++--------
tools/testing/selftests/kvm/lib/{s390x => s390}/diag318_test_handler.c | 0
tools/testing/selftests/kvm/lib/{s390x => s390}/facility.c | 0
tools/testing/selftests/kvm/lib/{s390x => s390}/processor.c | 0
tools/testing/selftests/kvm/lib/{s390x => s390}/ucall.c | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/apic.c | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/handlers.S | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/hyperv.c | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/memstress.c | 2 +-
tools/testing/selftests/kvm/lib/{x86_64 => x86}/pmu.c | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/processor.c | 2 -
tools/testing/selftests/kvm/lib/{x86_64 => x86}/sev.c | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/svm.c | 1 -
tools/testing/selftests/kvm/lib/{x86_64 => x86}/ucall.c | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/vmx.c | 2 -
tools/testing/selftests/kvm/{max_guest_memory_test.c => mmu_stress_test.c} | 162 ++++++++++++++++++++++++++++++++++----
tools/testing/selftests/kvm/riscv/arch_timer.c | 2 +-
tools/testing/selftests/kvm/riscv/ebreak_test.c | 2 +-
tools/testing/selftests/kvm/riscv/sbi_pmu_test.c | 2 +-
tools/testing/selftests/kvm/{s390x => s390}/cmma_test.c | 0
tools/testing/selftests/kvm/{s390x => s390}/config | 0
tools/testing/selftests/kvm/{s390x => s390}/cpumodel_subfuncs_test.c | 0
tools/testing/selftests/kvm/{s390x => s390}/debug_test.c | 0
tools/testing/selftests/kvm/{s390x => s390}/memop.c | 0
tools/testing/selftests/kvm/{s390x => s390}/resets.c | 2 +-
tools/testing/selftests/kvm/{s390x => s390}/shared_zeropage_test.c | 0
tools/testing/selftests/kvm/{s390x => s390}/sync_regs_test.c | 0
tools/testing/selftests/kvm/{s390x => s390}/tprot.c | 0
tools/testing/selftests/kvm/{s390x => s390}/ucontrol_test.c | 0
tools/testing/selftests/kvm/set_memory_region_test.c | 6 +-
tools/testing/selftests/kvm/steal_time.c | 3 +-
tools/testing/selftests/kvm/{x86_64 => x86}/amx_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/apic_bus_clock_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/cpuid_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/cr4_cpuid_sync_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/debug_regs.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/dirty_log_page_splitting_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/exit_on_emulation_failure_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/feature_msrs_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/fix_hypercall_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/flds_emulation.h | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hwcr_msr_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_clock.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_cpuid.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_evmcs.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_extended_hypercalls.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_features.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_ipi.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_svm_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_tlb_flush.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/kvm_clock_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/kvm_pv_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/max_vcpuid_cap_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/monitor_mwait_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/nested_exceptions_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.sh | 0
tools/testing/selftests/kvm/{x86_64 => x86}/platform_info_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/pmu_counters_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/pmu_event_filter_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_conversions_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_kvm_exits_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/recalc_apic_map_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/set_boot_cpu_id.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/set_sregs_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/sev_init2_tests.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/sev_migrate_tests.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/sev_smoke_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/smaller_maxphyaddr_emulation_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/smm_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/state_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/svm_int_ctl_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_shutdown_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_soft_inject_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/svm_vmcall_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/sync_regs_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/triple_fault_event_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/tsc_msrs_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/tsc_scaling_sync.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/ucna_injection_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/userspace_io_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/userspace_msr_exit_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_apic_access_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_close_while_nested_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_dirty_log_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_exception_with_invalid_guest_state.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_invalid_nested_guest_state.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_msrs_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_nested_tsc_scaling_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_pmu_caps_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_preemption_timer_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_set_nested_state_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_tsc_adjust_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/xapic_ipi_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/xapic_state_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/xcr0_cpuid_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/xen_shinfo_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/xen_vmcall_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/xss_msr_test.c | 0
164 files changed, 584 insertions(+), 477 deletions(-)
create mode 100644 tools/testing/selftests/kvm/Makefile.kvm
rename tools/testing/selftests/kvm/{aarch64 => arm64}/aarch32_id_regs.c (95%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer_edge_cases.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/debug-exceptions.c (99%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/get-reg-list.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/hypercalls.c (98%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/mmio_abort.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/no-vgic-v3.c (98%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/page_fault_test.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/psci_test.c (97%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/set_id_regs.c (97%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/smccc_filter.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vcpu_width_config.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_init.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_irq.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_lpi_stress.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vpmu_counter_access.c (97%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/arch_timer.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/delay.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3_its.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/kvm_util_arch.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/processor.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/spinlock.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/ucall.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/vgic.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/debug_print.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/diag318_test_handler.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/facility.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/kvm_util_arch.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/processor.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/sie.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/ucall.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/apic.h (98%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/evmcs.h (99%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/hyperv.h (99%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/kvm_util_arch.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/mce.h (94%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/pmu.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/processor.h (99%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/sev.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/svm.h (98%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/svm_util.h (94%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/ucall.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/vmx.h (99%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_private.h (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3_its.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/handlers.S (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/processor.c (98%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/spinlock.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/ucall.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/vgic.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/diag318_test_handler.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/facility.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/processor.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/ucall.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/apic.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/handlers.S (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/hyperv.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/memstress.c (98%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/pmu.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/processor.c (99%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/sev.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/svm.c (99%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/ucall.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/vmx.c (99%)
rename tools/testing/selftests/kvm/{max_guest_memory_test.c => mmu_stress_test.c} (60%)
rename tools/testing/selftests/kvm/{s390x => s390}/cmma_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/config (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/cpumodel_subfuncs_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/debug_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/memop.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/resets.c (99%)
rename tools/testing/selftests/kvm/{s390x => s390}/shared_zeropage_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/sync_regs_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/tprot.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/ucontrol_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/amx_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/apic_bus_clock_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/cpuid_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/cr4_cpuid_sync_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/debug_regs.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/dirty_log_page_splitting_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/exit_on_emulation_failure_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/feature_msrs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/fix_hypercall_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/flds_emulation.h (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hwcr_msr_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_clock.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_cpuid.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_evmcs.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_extended_hypercalls.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_features.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_ipi.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_svm_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_tlb_flush.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/kvm_clock_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/kvm_pv_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/max_vcpuid_cap_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/monitor_mwait_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/nested_exceptions_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.sh (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/platform_info_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/pmu_counters_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/pmu_event_filter_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_conversions_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_kvm_exits_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/recalc_apic_map_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/set_boot_cpu_id.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/set_sregs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_init2_tests.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_migrate_tests.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_smoke_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/smaller_maxphyaddr_emulation_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/smm_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/state_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_int_ctl_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_shutdown_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_soft_inject_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_vmcall_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sync_regs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/triple_fault_event_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/tsc_msrs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/tsc_scaling_sync.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/ucna_injection_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/userspace_io_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/userspace_msr_exit_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_apic_access_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_close_while_nested_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_dirty_log_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_exception_with_invalid_guest_state.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_invalid_nested_guest_state.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_msrs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_nested_tsc_scaling_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_pmu_caps_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_preemption_timer_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_set_nested_state_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_tsc_adjust_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xapic_ipi_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xapic_state_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xcr0_cpuid_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xen_shinfo_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xen_vmcall_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xss_msr_test.c (100%)
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls
2024-12-18 21:56 ` Sean Christopherson
@ 2024-12-18 22:12 ` Sean Christopherson
2024-12-19 2:00 ` Sean Christopherson
0 siblings, 1 reply; 32+ messages in thread
From: Sean Christopherson @ 2024-12-18 22:12 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
On Wed, Dec 18, 2024, Sean Christopherson wrote:
> On Wed, 27 Nov 2024 16:55:31 -0800, Sean Christopherson wrote:
> > Two separate series (mmu_stress_test[1] and $ARCH[2]), posted as one to
> > avoid unpleasant conflicts, and because I hope to land both in kvm/next
> > shortly after 6.12-rc1 since they impact all of KVM selftests.
> >
> > mmu_stress_test
> > ---------------
> > Convert the max_guest_memory_test into a more generic mmu_stress_test.
> > The basic gist of the "conversion" is to have the test do mprotect() on
> > guest memory while vCPUs are accessing said memory, e.g. to verify KVM
> > and mmu_notifiers are working as intended.
> >
> > [...]
>
> As I am running out of time before I disappear for two weeks, applied to:
>
> https://github.com/kvm-x86/linux.git selftests_arch
>
> Other KVM maintainers, that branch is officially immutable. I also pushed a tag,
> kvm-selftests-arch-6.14, just in case I pull a stupid and manage to clobber the
> branch. My apologies if this causes pain. AFAICT, there aren't any queued or
> in-flight patches that git's rename magic can't automatically handle, so hopefully
> this ends up being pain-free.
>
> Paolo, here's a pull request if you want to pull this into kvm/next long before
> the 6.14 merge window. Diff stats at the very bottom (hilariously long).
Argh! I completely forget to build test this on non-x86, and missed that arm64
snuck in 75cd027cbcb1 ("KVM: arm64: selftests: Test ID_AA64PFR0.MPAM isn't completely
ignored"). *sigh*
Given that I just sent out mail, I'm going to cross my fingers and hope that no
one has merged the above branch/tag. I've deleted the branch and tags from the
remote, but kept the tag locally just in case.
Please holler if you managed to grab the broken branch/tag. If no one screams,
I'll assume I got luckly and will push a fixed version (with different names) later
today.
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls
2024-12-18 22:12 ` Sean Christopherson
@ 2024-12-19 2:00 ` Sean Christopherson
2024-12-19 12:51 ` Paolo Bonzini
2024-12-19 15:14 ` John Stoffel
0 siblings, 2 replies; 32+ messages in thread
From: Sean Christopherson @ 2024-12-19 2:00 UTC (permalink / raw)
To: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
On Wed, Dec 18, 2024, Sean Christopherson wrote:
> On Wed, Dec 18, 2024, Sean Christopherson wrote:
> > On Wed, 27 Nov 2024 16:55:31 -0800, Sean Christopherson wrote:
> > > Two separate series (mmu_stress_test[1] and $ARCH[2]), posted as one to
> > > avoid unpleasant conflicts, and because I hope to land both in kvm/next
> > > shortly after 6.12-rc1 since they impact all of KVM selftests.
> > >
> > > mmu_stress_test
> > > ---------------
> > > Convert the max_guest_memory_test into a more generic mmu_stress_test.
> > > The basic gist of the "conversion" is to have the test do mprotect() on
> > > guest memory while vCPUs are accessing said memory, e.g. to verify KVM
> > > and mmu_notifiers are working as intended.
> > >
> > > [...]
> >
> > As I am running out of time before I disappear for two weeks, applied to:
> >
> > https://github.com/kvm-x86/linux.git selftests_arch
> >
> > Other KVM maintainers, that branch is officially immutable. I also pushed a tag,
> > kvm-selftests-arch-6.14, just in case I pull a stupid and manage to clobber the
> > branch. My apologies if this causes pain. AFAICT, there aren't any queued or
> > in-flight patches that git's rename magic can't automatically handle, so hopefully
> > this ends up being pain-free.
> >
> > Paolo, here's a pull request if you want to pull this into kvm/next long before
> > the 6.14 merge window. Diff stats at the very bottom (hilariously long).
>
> Argh! I completely forget to build test this on non-x86, and missed that arm64
> snuck in 75cd027cbcb1 ("KVM: arm64: selftests: Test ID_AA64PFR0.MPAM isn't completely
> ignored"). *sigh*
>
> Given that I just sent out mail, I'm going to cross my fingers and hope that no
> one has merged the above branch/tag. I've deleted the branch and tags from the
> remote, but kept the tag locally just in case.
>
> Please holler if you managed to grab the broken branch/tag. If no one screams,
> I'll assume I got luckly and will push a fixed version (with different names) later
> today.
Third time is the charm. Compile tested on all architectures, and runtime tested
on x86 and arm64.
https://github.com/kvm-x86/linux.git selftests_treewide_6.14
---
The following changes since commit 3522c419758ee8dca5a0e8753ee0070a22157bc1:
Merge tag 'kvm-riscv-fixes-6.13-1' of https://github.com/kvm-riscv/linux into HEAD (2024-12-13 13:59:20 -0500)
are available in the Git repository at:
https://github.com/kvm-x86/linux.git tags/kvm-selftests-treewide-6.14
for you to fetch changes up to 9af04539d474dda4984ff4909d4568e6123c8cba:
KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR (2024-12-18 14:15:05 -0800)
----------------------------------------------------------------
KVM selftests "tree"-wide changes for 6.14:
- Rework vcpu_get_reg() to return a value instead of using an out-param, and
update all affected arch code accordingly.
- Convert the max_guest_memory_test into a more generic mmu_stress_test.
The basic gist of the "conversion" is to have the test do mprotect() on
guest memory while vCPUs are accessing said memory, e.g. to verify KVM
and mmu_notifiers are working as intended.
- Play nice with treewrite builds of unsupported architectures, e.g. arm
(32-bit), as KVM selftests' Makefile doesn't do anything to ensure the
target architecture is actually one KVM selftests supports.
- Use the kernel's $(ARCH) definition instead of the target triple for arch
specific directories, e.g. arm64 instead of aarch64, mainly so as not to
be different from the rest of the kernel.
----------------------------------------------------------------
Sean Christopherson (16):
KVM: Move KVM_REG_SIZE() definition to common uAPI header
KVM: selftests: Return a value from vcpu_get_reg() instead of using an out-param
KVM: selftests: Assert that vcpu_{g,s}et_reg() won't truncate
KVM: selftests: Check for a potential unhandled exception iff KVM_RUN succeeded
KVM: selftests: Rename max_guest_memory_test to mmu_stress_test
KVM: selftests: Only muck with SREGS on x86 in mmu_stress_test
KVM: selftests: Compute number of extra pages needed in mmu_stress_test
KVM: sefltests: Explicitly include ucall_common.h in mmu_stress_test.c
KVM: selftests: Enable mmu_stress_test on arm64
KVM: selftests: Use vcpu_arch_put_guest() in mmu_stress_test
KVM: selftests: Precisely limit the number of guest loops in mmu_stress_test
KVM: selftests: Add a read-only mprotect() phase to mmu_stress_test
KVM: selftests: Verify KVM correctly handles mprotect(PROT_READ)
KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs
KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories
KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR
--
[01/16] KVM: Move KVM_REG_SIZE() definition to common uAPI header
https://github.com/kvm-x86/linux/commit/915d2f0718a4
[02/16] KVM: selftests: Return a value from vcpu_get_reg() instead of using an out-param
https://github.com/kvm-x86/linux/commit/09bb926d2907
[03/16] KVM: selftests: Assert that vcpu_{g,s}et_reg() won't truncate
https://github.com/kvm-x86/linux/commit/fe85ce31b289
[04/16] KVM: selftests: Check for a potential unhandled exception iff KVM_RUN succeeded
https://github.com/kvm-x86/linux/commit/d6533c151338
[05/16] KVM: selftests: Rename max_guest_memory_test to mmu_stress_test
https://github.com/kvm-x86/linux/commit/b12391498d1e
[06/16] KVM: selftests: Only muck with SREGS on x86 in mmu_stress_test
https://github.com/kvm-x86/linux/commit/55e164df482a
[07/16] KVM: selftests: Compute number of extra pages needed in mmu_stress_test
https://github.com/kvm-x86/linux/commit/1ddd3ea75ac3
[08/16] KVM: sefltests: Explicitly include ucall_common.h in mmu_stress_test.c
https://github.com/kvm-x86/linux/commit/c35d8f579e50
[09/16] KVM: selftests: Enable mmu_stress_test on arm64
https://github.com/kvm-x86/linux/commit/8abe7632a1ee
[10/16] KVM: selftests: Use vcpu_arch_put_guest() in mmu_stress_test
https://github.com/kvm-x86/linux/commit/3a0422526404
[11/16] KVM: selftests: Precisely limit the number of guest loops in mmu_stress_test
https://github.com/kvm-x86/linux/commit/82b542e11848
[12/16] KVM: selftests: Add a read-only mprotect() phase to mmu_stress_test
https://github.com/kvm-x86/linux/commit/80b7859a3a43
[13/16] KVM: selftests: Verify KVM correctly handles mprotect(PROT_READ)
https://github.com/kvm-x86/linux/commit/b6c304aec648
[14/16] KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs
https://github.com/kvm-x86/linux/commit/43fbd8cd389f
[15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories
https://github.com/kvm-x86/linux/commit/67730e6c53d7
[16/16] KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR
https://github.com/kvm-x86/linux/commit/9af04539d474
MAINTAINERS | 12 +--
arch/arm64/include/uapi/asm/kvm.h | 3 -
arch/riscv/include/uapi/asm/kvm.h | 3 -
include/uapi/linux/kvm.h | 4 +
tools/testing/selftests/kvm/.gitignore | 1 +
tools/testing/selftests/kvm/Makefile | 345 ++------------------------------------------------------------------------------
tools/testing/selftests/kvm/Makefile.kvm | 330 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tools/testing/selftests/kvm/{aarch64 => arm64}/aarch32_id_regs.c | 10 +--
tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer_edge_cases.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/debug-exceptions.c | 4 +-
tools/testing/selftests/kvm/{aarch64 => arm64}/get-reg-list.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/hypercalls.c | 6 +-
tools/testing/selftests/kvm/{aarch64 => arm64}/mmio_abort.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/no-vgic-v3.c | 2 +-
tools/testing/selftests/kvm/{aarch64 => arm64}/page_fault_test.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/psci_test.c | 8 +-
tools/testing/selftests/kvm/{aarch64 => arm64}/set_id_regs.c | 22 +++---
tools/testing/selftests/kvm/{aarch64 => arm64}/smccc_filter.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/vcpu_width_config.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_init.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_irq.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_lpi_stress.c | 0
tools/testing/selftests/kvm/{aarch64 => arm64}/vpmu_counter_access.c | 19 +++--
tools/testing/selftests/kvm/dirty_log_perf_test.c | 2 +-
tools/testing/selftests/kvm/include/{aarch64 => arm64}/arch_timer.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/delay.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3_its.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/kvm_util_arch.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/processor.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/spinlock.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/ucall.h | 0
tools/testing/selftests/kvm/include/{aarch64 => arm64}/vgic.h | 0
tools/testing/selftests/kvm/include/kvm_util.h | 10 ++-
tools/testing/selftests/kvm/include/{s390x => s390}/debug_print.h | 0
tools/testing/selftests/kvm/include/{s390x => s390}/diag318_test_handler.h | 0
tools/testing/selftests/kvm/include/{s390x => s390}/facility.h | 0
tools/testing/selftests/kvm/include/{s390x => s390}/kvm_util_arch.h | 0
tools/testing/selftests/kvm/include/{s390x => s390}/processor.h | 0
tools/testing/selftests/kvm/include/{s390x => s390}/sie.h | 0
tools/testing/selftests/kvm/include/{s390x => s390}/ucall.h | 0
tools/testing/selftests/kvm/include/{x86_64 => x86}/apic.h | 2 -
tools/testing/selftests/kvm/include/{x86_64 => x86}/evmcs.h | 3 -
tools/testing/selftests/kvm/include/{x86_64 => x86}/hyperv.h | 3 -
tools/testing/selftests/kvm/include/{x86_64 => x86}/kvm_util_arch.h | 0
tools/testing/selftests/kvm/include/{x86_64 => x86}/mce.h | 2 -
tools/testing/selftests/kvm/include/{x86_64 => x86}/pmu.h | 0
tools/testing/selftests/kvm/include/{x86_64 => x86}/processor.h | 2 -
tools/testing/selftests/kvm/include/{x86_64 => x86}/sev.h | 0
tools/testing/selftests/kvm/include/{x86_64 => x86}/svm.h | 6 --
tools/testing/selftests/kvm/include/{x86_64 => x86}/svm_util.h | 3 -
tools/testing/selftests/kvm/include/{x86_64 => x86}/ucall.h | 0
tools/testing/selftests/kvm/include/{x86_64 => x86}/vmx.h | 2 -
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic.c | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_private.h | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3.c | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3_its.c | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/handlers.S | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/processor.c | 8 +-
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/spinlock.c | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/ucall.c | 0
tools/testing/selftests/kvm/lib/{aarch64 => arm64}/vgic.c | 0
tools/testing/selftests/kvm/lib/kvm_util.c | 3 +-
tools/testing/selftests/kvm/lib/riscv/processor.c | 66 ++++++++--------
tools/testing/selftests/kvm/lib/{s390x => s390}/diag318_test_handler.c | 0
tools/testing/selftests/kvm/lib/{s390x => s390}/facility.c | 0
tools/testing/selftests/kvm/lib/{s390x => s390}/processor.c | 0
tools/testing/selftests/kvm/lib/{s390x => s390}/ucall.c | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/apic.c | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/handlers.S | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/hyperv.c | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/memstress.c | 2 +-
tools/testing/selftests/kvm/lib/{x86_64 => x86}/pmu.c | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/processor.c | 2 -
tools/testing/selftests/kvm/lib/{x86_64 => x86}/sev.c | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/svm.c | 1 -
tools/testing/selftests/kvm/lib/{x86_64 => x86}/ucall.c | 0
tools/testing/selftests/kvm/lib/{x86_64 => x86}/vmx.c | 2 -
tools/testing/selftests/kvm/{max_guest_memory_test.c => mmu_stress_test.c} | 162 ++++++++++++++++++++++++++++++++++----
tools/testing/selftests/kvm/riscv/arch_timer.c | 2 +-
tools/testing/selftests/kvm/riscv/ebreak_test.c | 2 +-
tools/testing/selftests/kvm/riscv/sbi_pmu_test.c | 2 +-
tools/testing/selftests/kvm/{s390x => s390}/cmma_test.c | 0
tools/testing/selftests/kvm/{s390x => s390}/config | 0
tools/testing/selftests/kvm/{s390x => s390}/cpumodel_subfuncs_test.c | 0
tools/testing/selftests/kvm/{s390x => s390}/debug_test.c | 0
tools/testing/selftests/kvm/{s390x => s390}/memop.c | 0
tools/testing/selftests/kvm/{s390x => s390}/resets.c | 2 +-
tools/testing/selftests/kvm/{s390x => s390}/shared_zeropage_test.c | 0
tools/testing/selftests/kvm/{s390x => s390}/sync_regs_test.c | 0
tools/testing/selftests/kvm/{s390x => s390}/tprot.c | 0
tools/testing/selftests/kvm/{s390x => s390}/ucontrol_test.c | 0
tools/testing/selftests/kvm/set_memory_region_test.c | 6 +-
tools/testing/selftests/kvm/steal_time.c | 3 +-
tools/testing/selftests/kvm/{x86_64 => x86}/amx_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/apic_bus_clock_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/cpuid_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/cr4_cpuid_sync_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/debug_regs.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/dirty_log_page_splitting_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/exit_on_emulation_failure_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/feature_msrs_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/fix_hypercall_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/flds_emulation.h | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hwcr_msr_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_clock.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_cpuid.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_evmcs.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_extended_hypercalls.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_features.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_ipi.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_svm_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_tlb_flush.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/kvm_clock_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/kvm_pv_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/max_vcpuid_cap_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/monitor_mwait_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/nested_exceptions_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.sh | 0
tools/testing/selftests/kvm/{x86_64 => x86}/platform_info_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/pmu_counters_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/pmu_event_filter_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_conversions_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_kvm_exits_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/recalc_apic_map_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/set_boot_cpu_id.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/set_sregs_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/sev_init2_tests.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/sev_migrate_tests.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/sev_smoke_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/smaller_maxphyaddr_emulation_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/smm_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/state_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/svm_int_ctl_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_shutdown_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_soft_inject_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/svm_vmcall_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/sync_regs_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/triple_fault_event_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/tsc_msrs_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/tsc_scaling_sync.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/ucna_injection_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/userspace_io_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/userspace_msr_exit_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_apic_access_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_close_while_nested_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_dirty_log_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_exception_with_invalid_guest_state.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_invalid_nested_guest_state.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_msrs_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_nested_tsc_scaling_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_pmu_caps_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_preemption_timer_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_set_nested_state_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/vmx_tsc_adjust_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/xapic_ipi_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/xapic_state_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/xcr0_cpuid_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/xen_shinfo_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/xen_vmcall_test.c | 0
tools/testing/selftests/kvm/{x86_64 => x86}/xss_msr_test.c | 0
164 files changed, 587 insertions(+), 480 deletions(-)
create mode 100644 tools/testing/selftests/kvm/Makefile.kvm
rename tools/testing/selftests/kvm/{aarch64 => arm64}/aarch32_id_regs.c (95%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer_edge_cases.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/debug-exceptions.c (99%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/get-reg-list.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/hypercalls.c (98%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/mmio_abort.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/no-vgic-v3.c (98%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/page_fault_test.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/psci_test.c (96%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/set_id_regs.c (97%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/smccc_filter.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vcpu_width_config.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_init.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_irq.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_lpi_stress.c (100%)
rename tools/testing/selftests/kvm/{aarch64 => arm64}/vpmu_counter_access.c (97%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/arch_timer.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/delay.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3_its.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/kvm_util_arch.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/processor.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/spinlock.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/ucall.h (100%)
rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/vgic.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/debug_print.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/diag318_test_handler.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/facility.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/kvm_util_arch.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/processor.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/sie.h (100%)
rename tools/testing/selftests/kvm/include/{s390x => s390}/ucall.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/apic.h (98%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/evmcs.h (99%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/hyperv.h (99%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/kvm_util_arch.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/mce.h (94%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/pmu.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/processor.h (99%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/sev.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/svm.h (98%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/svm_util.h (94%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/ucall.h (100%)
rename tools/testing/selftests/kvm/include/{x86_64 => x86}/vmx.h (99%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_private.h (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3_its.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/handlers.S (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/processor.c (98%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/spinlock.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/ucall.c (100%)
rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/vgic.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/diag318_test_handler.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/facility.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/processor.c (100%)
rename tools/testing/selftests/kvm/lib/{s390x => s390}/ucall.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/apic.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/handlers.S (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/hyperv.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/memstress.c (98%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/pmu.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/processor.c (99%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/sev.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/svm.c (99%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/ucall.c (100%)
rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/vmx.c (99%)
rename tools/testing/selftests/kvm/{max_guest_memory_test.c => mmu_stress_test.c} (60%)
rename tools/testing/selftests/kvm/{s390x => s390}/cmma_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/config (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/cpumodel_subfuncs_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/debug_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/memop.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/resets.c (99%)
rename tools/testing/selftests/kvm/{s390x => s390}/shared_zeropage_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/sync_regs_test.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/tprot.c (100%)
rename tools/testing/selftests/kvm/{s390x => s390}/ucontrol_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/amx_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/apic_bus_clock_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/cpuid_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/cr4_cpuid_sync_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/debug_regs.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/dirty_log_page_splitting_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/exit_on_emulation_failure_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/feature_msrs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/fix_hypercall_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/flds_emulation.h (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hwcr_msr_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_clock.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_cpuid.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_evmcs.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_extended_hypercalls.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_features.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_ipi.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_svm_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_tlb_flush.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/kvm_clock_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/kvm_pv_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/max_vcpuid_cap_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/monitor_mwait_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/nested_exceptions_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.sh (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/platform_info_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/pmu_counters_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/pmu_event_filter_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_conversions_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_kvm_exits_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/recalc_apic_map_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/set_boot_cpu_id.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/set_sregs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_init2_tests.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_migrate_tests.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_smoke_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/smaller_maxphyaddr_emulation_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/smm_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/state_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_int_ctl_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_shutdown_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_soft_inject_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_vmcall_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/sync_regs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/triple_fault_event_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/tsc_msrs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/tsc_scaling_sync.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/ucna_injection_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/userspace_io_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/userspace_msr_exit_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_apic_access_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_close_while_nested_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_dirty_log_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_exception_with_invalid_guest_state.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_invalid_nested_guest_state.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_msrs_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_nested_tsc_scaling_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_pmu_caps_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_preemption_timer_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_set_nested_state_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_tsc_adjust_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xapic_ipi_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xapic_state_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xcr0_cpuid_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xen_shinfo_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xen_vmcall_test.c (100%)
rename tools/testing/selftests/kvm/{x86_64 => x86}/xss_msr_test.c (100%)
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls
2024-12-19 2:00 ` Sean Christopherson
@ 2024-12-19 12:51 ` Paolo Bonzini
2024-12-19 15:14 ` John Stoffel
1 sibling, 0 replies; 32+ messages in thread
From: Paolo Bonzini @ 2024-12-19 12:51 UTC (permalink / raw)
To: Sean Christopherson, Marc Zyngier, Oliver Upton, Anup Patel,
Paul Walmsley, Palmer Dabbelt, Albert Ou, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda
Cc: linux-arm-kernel, kvmarm, kvm, kvm-riscv, linux-riscv,
linux-kernel, Andrew Jones, James Houghton, Muhammad Usama Anjum
On 12/19/24 03:00, Sean Christopherson wrote:
> On Wed, Dec 18, 2024, Sean Christopherson wrote:
>> On Wed, Dec 18, 2024, Sean Christopherson wrote:
>>> On Wed, 27 Nov 2024 16:55:31 -0800, Sean Christopherson wrote:
>>>> Two separate series (mmu_stress_test[1] and $ARCH[2]), posted as one to
>>>> avoid unpleasant conflicts, and because I hope to land both in kvm/next
>>>> shortly after 6.12-rc1 since they impact all of KVM selftests.
>>>>
>>>> mmu_stress_test
>>>> ---------------
>>>> Convert the max_guest_memory_test into a more generic mmu_stress_test.
>>>> The basic gist of the "conversion" is to have the test do mprotect() on
>>>> guest memory while vCPUs are accessing said memory, e.g. to verify KVM
>>>> and mmu_notifiers are working as intended.
>>>>
>>>> [...]
>>>
>>> As I am running out of time before I disappear for two weeks, applied to:
>>>
>>> https://github.com/kvm-x86/linux.git selftests_arch
>>>
>>> Other KVM maintainers, that branch is officially immutable. I also pushed a tag,
>>> kvm-selftests-arch-6.14, just in case I pull a stupid and manage to clobber the
>>> branch. My apologies if this causes pain. AFAICT, there aren't any queued or
>>> in-flight patches that git's rename magic can't automatically handle, so hopefully
>>> this ends up being pain-free.
>>>
>>> Paolo, here's a pull request if you want to pull this into kvm/next long before
>>> the 6.14 merge window. Diff stats at the very bottom (hilariously long).
Pulled, thanks.
Paolo
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls
2024-12-19 2:00 ` Sean Christopherson
2024-12-19 12:51 ` Paolo Bonzini
@ 2024-12-19 15:14 ` John Stoffel
1 sibling, 0 replies; 32+ messages in thread
From: John Stoffel @ 2024-12-19 15:14 UTC (permalink / raw)
To: Sean Christopherson
Cc: Marc Zyngier, Oliver Upton, Anup Patel, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Paolo Bonzini, Christian Borntraeger,
Janosch Frank, Claudio Imbrenda, linux-arm-kernel, kvmarm, kvm,
kvm-riscv, linux-riscv, linux-kernel, Andrew Jones,
James Houghton, Muhammad Usama Anjum
On Wed, Dec 18, 2024 at 06:00:50PM -0800, Sean Christopherson wrote:
> On Wed, Dec 18, 2024, Sean Christopherson wrote:
> > On Wed, Dec 18, 2024, Sean Christopherson wrote:
> > > On Wed, 27 Nov 2024 16:55:31 -0800, Sean Christopherson wrote:
> > > > Two separate series (mmu_stress_test[1] and $ARCH[2]), posted as one to
> > > > avoid unpleasant conflicts, and because I hope to land both in kvm/next
> > > > shortly after 6.12-rc1 since they impact all of KVM selftests.
> > > >
> > > > mmu_stress_test
> > > > ---------------
> > > > Convert the max_guest_memory_test into a more generic mmu_stress_test.
> > > > The basic gist of the "conversion" is to have the test do mprotect() on
> > > > guest memory while vCPUs are accessing said memory, e.g. to verify KVM
> > > > and mmu_notifiers are working as intended.
> > > >
> > > > [...]
> > >
> > > As I am running out of time before I disappear for two weeks, applied to:
> > >
> > > https://github.com/kvm-x86/linux.git selftests_arch
> > >
> > > Other KVM maintainers, that branch is officially immutable. I also pushed a tag,
> > > kvm-selftests-arch-6.14, just in case I pull a stupid and manage to clobber the
> > > branch. My apologies if this causes pain. AFAICT, there aren't any queued or
> > > in-flight patches that git's rename magic can't automatically handle, so hopefully
> > > this ends up being pain-free.
> > >
> > > Paolo, here's a pull request if you want to pull this into kvm/next long before
> > > the 6.14 merge window. Diff stats at the very bottom (hilariously long).
> >
> > Argh! I completely forget to build test this on non-x86, and missed that arm64
> > snuck in 75cd027cbcb1 ("KVM: arm64: selftests: Test ID_AA64PFR0.MPAM isn't completely
> > ignored"). *sigh*
> >
> > Given that I just sent out mail, I'm going to cross my fingers and hope that no
> > one has merged the above branch/tag. I've deleted the branch and tags from the
> > remote, but kept the tag locally just in case.
> >
> > Please holler if you managed to grab the broken branch/tag. If no one screams,
> > I'll assume I got luckly and will push a fixed version (with different names) later
> > today.
>
> Third time is the charm. Compile tested on all architectures, and runtime tested
> on x86 and arm64.
>
> https://github.com/kvm-x86/linux.git selftests_treewide_6.14
>
> ---
> The following changes since commit 3522c419758ee8dca5a0e8753ee0070a22157bc1:
>
> Merge tag 'kvm-riscv-fixes-6.13-1' of https://github.com/kvm-riscv/linux into HEAD (2024-12-13 13:59:20 -0500)
>
> are available in the Git repository at:
>
> https://github.com/kvm-x86/linux.git tags/kvm-selftests-treewide-6.14
>
> for you to fetch changes up to 9af04539d474dda4984ff4909d4568e6123c8cba:
>
> KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR (2024-12-18 14:15:05 -0800)
>
> ----------------------------------------------------------------
> KVM selftests "tree"-wide changes for 6.14:
>
> - Rework vcpu_get_reg() to return a value instead of using an out-param, and
> update all affected arch code accordingly.
>
> - Convert the max_guest_memory_test into a more generic mmu_stress_test.
> The basic gist of the "conversion" is to have the test do mprotect() on
> guest memory while vCPUs are accessing said memory, e.g. to verify KVM
> and mmu_notifiers are working as intended.
>
> - Play nice with treewrite builds of unsupported architectures, e.g. arm
nit: treewide, not treewrite
> (32-bit), as KVM selftests' Makefile doesn't do anything to ensure the
> target architecture is actually one KVM selftests supports.
>
> - Use the kernel's $(ARCH) definition instead of the target triple for arch
> specific directories, e.g. arm64 instead of aarch64, mainly so as not to
> be different from the rest of the kernel.
>
> ----------------------------------------------------------------
> Sean Christopherson (16):
> KVM: Move KVM_REG_SIZE() definition to common uAPI header
> KVM: selftests: Return a value from vcpu_get_reg() instead of using an out-param
> KVM: selftests: Assert that vcpu_{g,s}et_reg() won't truncate
> KVM: selftests: Check for a potential unhandled exception iff KVM_RUN succeeded
> KVM: selftests: Rename max_guest_memory_test to mmu_stress_test
> KVM: selftests: Only muck with SREGS on x86 in mmu_stress_test
> KVM: selftests: Compute number of extra pages needed in mmu_stress_test
> KVM: sefltests: Explicitly include ucall_common.h in mmu_stress_test.c
> KVM: selftests: Enable mmu_stress_test on arm64
> KVM: selftests: Use vcpu_arch_put_guest() in mmu_stress_test
> KVM: selftests: Precisely limit the number of guest loops in mmu_stress_test
> KVM: selftests: Add a read-only mprotect() phase to mmu_stress_test
> KVM: selftests: Verify KVM correctly handles mprotect(PROT_READ)
> KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs
> KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories
> KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR
> --
>
> [01/16] KVM: Move KVM_REG_SIZE() definition to common uAPI header
> https://github.com/kvm-x86/linux/commit/915d2f0718a4
> [02/16] KVM: selftests: Return a value from vcpu_get_reg() instead of using an out-param
> https://github.com/kvm-x86/linux/commit/09bb926d2907
> [03/16] KVM: selftests: Assert that vcpu_{g,s}et_reg() won't truncate
> https://github.com/kvm-x86/linux/commit/fe85ce31b289
> [04/16] KVM: selftests: Check for a potential unhandled exception iff KVM_RUN succeeded
> https://github.com/kvm-x86/linux/commit/d6533c151338
> [05/16] KVM: selftests: Rename max_guest_memory_test to mmu_stress_test
> https://github.com/kvm-x86/linux/commit/b12391498d1e
> [06/16] KVM: selftests: Only muck with SREGS on x86 in mmu_stress_test
> https://github.com/kvm-x86/linux/commit/55e164df482a
> [07/16] KVM: selftests: Compute number of extra pages needed in mmu_stress_test
> https://github.com/kvm-x86/linux/commit/1ddd3ea75ac3
> [08/16] KVM: sefltests: Explicitly include ucall_common.h in mmu_stress_test.c
> https://github.com/kvm-x86/linux/commit/c35d8f579e50
> [09/16] KVM: selftests: Enable mmu_stress_test on arm64
> https://github.com/kvm-x86/linux/commit/8abe7632a1ee
> [10/16] KVM: selftests: Use vcpu_arch_put_guest() in mmu_stress_test
> https://github.com/kvm-x86/linux/commit/3a0422526404
> [11/16] KVM: selftests: Precisely limit the number of guest loops in mmu_stress_test
> https://github.com/kvm-x86/linux/commit/82b542e11848
> [12/16] KVM: selftests: Add a read-only mprotect() phase to mmu_stress_test
> https://github.com/kvm-x86/linux/commit/80b7859a3a43
> [13/16] KVM: selftests: Verify KVM correctly handles mprotect(PROT_READ)
> https://github.com/kvm-x86/linux/commit/b6c304aec648
> [14/16] KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs
> https://github.com/kvm-x86/linux/commit/43fbd8cd389f
> [15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories
> https://github.com/kvm-x86/linux/commit/67730e6c53d7
> [16/16] KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR
> https://github.com/kvm-x86/linux/commit/9af04539d474
>
>
> MAINTAINERS | 12 +--
> arch/arm64/include/uapi/asm/kvm.h | 3 -
> arch/riscv/include/uapi/asm/kvm.h | 3 -
> include/uapi/linux/kvm.h | 4 +
> tools/testing/selftests/kvm/.gitignore | 1 +
> tools/testing/selftests/kvm/Makefile | 345 ++------------------------------------------------------------------------------
> tools/testing/selftests/kvm/Makefile.kvm | 330 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> tools/testing/selftests/kvm/{aarch64 => arm64}/aarch32_id_regs.c | 10 +--
> tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer.c | 0
> tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer_edge_cases.c | 0
> tools/testing/selftests/kvm/{aarch64 => arm64}/debug-exceptions.c | 4 +-
> tools/testing/selftests/kvm/{aarch64 => arm64}/get-reg-list.c | 0
> tools/testing/selftests/kvm/{aarch64 => arm64}/hypercalls.c | 6 +-
> tools/testing/selftests/kvm/{aarch64 => arm64}/mmio_abort.c | 0
> tools/testing/selftests/kvm/{aarch64 => arm64}/no-vgic-v3.c | 2 +-
> tools/testing/selftests/kvm/{aarch64 => arm64}/page_fault_test.c | 0
> tools/testing/selftests/kvm/{aarch64 => arm64}/psci_test.c | 8 +-
> tools/testing/selftests/kvm/{aarch64 => arm64}/set_id_regs.c | 22 +++---
> tools/testing/selftests/kvm/{aarch64 => arm64}/smccc_filter.c | 0
> tools/testing/selftests/kvm/{aarch64 => arm64}/vcpu_width_config.c | 0
> tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_init.c | 0
> tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_irq.c | 0
> tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_lpi_stress.c | 0
> tools/testing/selftests/kvm/{aarch64 => arm64}/vpmu_counter_access.c | 19 +++--
> tools/testing/selftests/kvm/dirty_log_perf_test.c | 2 +-
> tools/testing/selftests/kvm/include/{aarch64 => arm64}/arch_timer.h | 0
> tools/testing/selftests/kvm/include/{aarch64 => arm64}/delay.h | 0
> tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic.h | 0
> tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3.h | 0
> tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3_its.h | 0
> tools/testing/selftests/kvm/include/{aarch64 => arm64}/kvm_util_arch.h | 0
> tools/testing/selftests/kvm/include/{aarch64 => arm64}/processor.h | 0
> tools/testing/selftests/kvm/include/{aarch64 => arm64}/spinlock.h | 0
> tools/testing/selftests/kvm/include/{aarch64 => arm64}/ucall.h | 0
> tools/testing/selftests/kvm/include/{aarch64 => arm64}/vgic.h | 0
> tools/testing/selftests/kvm/include/kvm_util.h | 10 ++-
> tools/testing/selftests/kvm/include/{s390x => s390}/debug_print.h | 0
> tools/testing/selftests/kvm/include/{s390x => s390}/diag318_test_handler.h | 0
> tools/testing/selftests/kvm/include/{s390x => s390}/facility.h | 0
> tools/testing/selftests/kvm/include/{s390x => s390}/kvm_util_arch.h | 0
> tools/testing/selftests/kvm/include/{s390x => s390}/processor.h | 0
> tools/testing/selftests/kvm/include/{s390x => s390}/sie.h | 0
> tools/testing/selftests/kvm/include/{s390x => s390}/ucall.h | 0
> tools/testing/selftests/kvm/include/{x86_64 => x86}/apic.h | 2 -
> tools/testing/selftests/kvm/include/{x86_64 => x86}/evmcs.h | 3 -
> tools/testing/selftests/kvm/include/{x86_64 => x86}/hyperv.h | 3 -
> tools/testing/selftests/kvm/include/{x86_64 => x86}/kvm_util_arch.h | 0
> tools/testing/selftests/kvm/include/{x86_64 => x86}/mce.h | 2 -
> tools/testing/selftests/kvm/include/{x86_64 => x86}/pmu.h | 0
> tools/testing/selftests/kvm/include/{x86_64 => x86}/processor.h | 2 -
> tools/testing/selftests/kvm/include/{x86_64 => x86}/sev.h | 0
> tools/testing/selftests/kvm/include/{x86_64 => x86}/svm.h | 6 --
> tools/testing/selftests/kvm/include/{x86_64 => x86}/svm_util.h | 3 -
> tools/testing/selftests/kvm/include/{x86_64 => x86}/ucall.h | 0
> tools/testing/selftests/kvm/include/{x86_64 => x86}/vmx.h | 2 -
> tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic.c | 0
> tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_private.h | 0
> tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3.c | 0
> tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3_its.c | 0
> tools/testing/selftests/kvm/lib/{aarch64 => arm64}/handlers.S | 0
> tools/testing/selftests/kvm/lib/{aarch64 => arm64}/processor.c | 8 +-
> tools/testing/selftests/kvm/lib/{aarch64 => arm64}/spinlock.c | 0
> tools/testing/selftests/kvm/lib/{aarch64 => arm64}/ucall.c | 0
> tools/testing/selftests/kvm/lib/{aarch64 => arm64}/vgic.c | 0
> tools/testing/selftests/kvm/lib/kvm_util.c | 3 +-
> tools/testing/selftests/kvm/lib/riscv/processor.c | 66 ++++++++--------
> tools/testing/selftests/kvm/lib/{s390x => s390}/diag318_test_handler.c | 0
> tools/testing/selftests/kvm/lib/{s390x => s390}/facility.c | 0
> tools/testing/selftests/kvm/lib/{s390x => s390}/processor.c | 0
> tools/testing/selftests/kvm/lib/{s390x => s390}/ucall.c | 0
> tools/testing/selftests/kvm/lib/{x86_64 => x86}/apic.c | 0
> tools/testing/selftests/kvm/lib/{x86_64 => x86}/handlers.S | 0
> tools/testing/selftests/kvm/lib/{x86_64 => x86}/hyperv.c | 0
> tools/testing/selftests/kvm/lib/{x86_64 => x86}/memstress.c | 2 +-
> tools/testing/selftests/kvm/lib/{x86_64 => x86}/pmu.c | 0
> tools/testing/selftests/kvm/lib/{x86_64 => x86}/processor.c | 2 -
> tools/testing/selftests/kvm/lib/{x86_64 => x86}/sev.c | 0
> tools/testing/selftests/kvm/lib/{x86_64 => x86}/svm.c | 1 -
> tools/testing/selftests/kvm/lib/{x86_64 => x86}/ucall.c | 0
> tools/testing/selftests/kvm/lib/{x86_64 => x86}/vmx.c | 2 -
> tools/testing/selftests/kvm/{max_guest_memory_test.c => mmu_stress_test.c} | 162 ++++++++++++++++++++++++++++++++++----
> tools/testing/selftests/kvm/riscv/arch_timer.c | 2 +-
> tools/testing/selftests/kvm/riscv/ebreak_test.c | 2 +-
> tools/testing/selftests/kvm/riscv/sbi_pmu_test.c | 2 +-
> tools/testing/selftests/kvm/{s390x => s390}/cmma_test.c | 0
> tools/testing/selftests/kvm/{s390x => s390}/config | 0
> tools/testing/selftests/kvm/{s390x => s390}/cpumodel_subfuncs_test.c | 0
> tools/testing/selftests/kvm/{s390x => s390}/debug_test.c | 0
> tools/testing/selftests/kvm/{s390x => s390}/memop.c | 0
> tools/testing/selftests/kvm/{s390x => s390}/resets.c | 2 +-
> tools/testing/selftests/kvm/{s390x => s390}/shared_zeropage_test.c | 0
> tools/testing/selftests/kvm/{s390x => s390}/sync_regs_test.c | 0
> tools/testing/selftests/kvm/{s390x => s390}/tprot.c | 0
> tools/testing/selftests/kvm/{s390x => s390}/ucontrol_test.c | 0
> tools/testing/selftests/kvm/set_memory_region_test.c | 6 +-
> tools/testing/selftests/kvm/steal_time.c | 3 +-
> tools/testing/selftests/kvm/{x86_64 => x86}/amx_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/apic_bus_clock_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/cpuid_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/cr4_cpuid_sync_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/debug_regs.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/dirty_log_page_splitting_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/exit_on_emulation_failure_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/feature_msrs_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/fix_hypercall_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/flds_emulation.h | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/hwcr_msr_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_clock.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_cpuid.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_evmcs.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_extended_hypercalls.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_features.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_ipi.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_svm_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_tlb_flush.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/kvm_clock_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/kvm_pv_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/max_vcpuid_cap_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/monitor_mwait_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/nested_exceptions_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.sh | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/platform_info_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/pmu_counters_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/pmu_event_filter_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_conversions_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_kvm_exits_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/recalc_apic_map_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/set_boot_cpu_id.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/set_sregs_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/sev_init2_tests.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/sev_migrate_tests.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/sev_smoke_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/smaller_maxphyaddr_emulation_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/smm_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/state_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/svm_int_ctl_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_shutdown_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_soft_inject_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/svm_vmcall_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/sync_regs_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/triple_fault_event_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/tsc_msrs_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/tsc_scaling_sync.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/ucna_injection_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/userspace_io_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/userspace_msr_exit_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/vmx_apic_access_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/vmx_close_while_nested_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/vmx_dirty_log_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/vmx_exception_with_invalid_guest_state.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/vmx_invalid_nested_guest_state.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/vmx_msrs_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/vmx_nested_tsc_scaling_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/vmx_pmu_caps_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/vmx_preemption_timer_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/vmx_set_nested_state_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/vmx_tsc_adjust_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/xapic_ipi_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/xapic_state_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/xcr0_cpuid_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/xen_shinfo_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/xen_vmcall_test.c | 0
> tools/testing/selftests/kvm/{x86_64 => x86}/xss_msr_test.c | 0
> 164 files changed, 587 insertions(+), 480 deletions(-)
> create mode 100644 tools/testing/selftests/kvm/Makefile.kvm
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/aarch32_id_regs.c (95%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/arch_timer_edge_cases.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/debug-exceptions.c (99%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/get-reg-list.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/hypercalls.c (98%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/mmio_abort.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/no-vgic-v3.c (98%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/page_fault_test.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/psci_test.c (96%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/set_id_regs.c (97%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/smccc_filter.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/vcpu_width_config.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_init.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_irq.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/vgic_lpi_stress.c (100%)
> rename tools/testing/selftests/kvm/{aarch64 => arm64}/vpmu_counter_access.c (97%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/arch_timer.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/delay.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/gic_v3_its.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/kvm_util_arch.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/processor.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/spinlock.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/ucall.h (100%)
> rename tools/testing/selftests/kvm/include/{aarch64 => arm64}/vgic.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/debug_print.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/diag318_test_handler.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/facility.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/kvm_util_arch.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/processor.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/sie.h (100%)
> rename tools/testing/selftests/kvm/include/{s390x => s390}/ucall.h (100%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/apic.h (98%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/evmcs.h (99%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/hyperv.h (99%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/kvm_util_arch.h (100%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/mce.h (94%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/pmu.h (100%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/processor.h (99%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/sev.h (100%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/svm.h (98%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/svm_util.h (94%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/ucall.h (100%)
> rename tools/testing/selftests/kvm/include/{x86_64 => x86}/vmx.h (99%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic.c (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_private.h (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3.c (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/gic_v3_its.c (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/handlers.S (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/processor.c (98%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/spinlock.c (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/ucall.c (100%)
> rename tools/testing/selftests/kvm/lib/{aarch64 => arm64}/vgic.c (100%)
> rename tools/testing/selftests/kvm/lib/{s390x => s390}/diag318_test_handler.c (100%)
> rename tools/testing/selftests/kvm/lib/{s390x => s390}/facility.c (100%)
> rename tools/testing/selftests/kvm/lib/{s390x => s390}/processor.c (100%)
> rename tools/testing/selftests/kvm/lib/{s390x => s390}/ucall.c (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/apic.c (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/handlers.S (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/hyperv.c (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/memstress.c (98%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/pmu.c (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/processor.c (99%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/sev.c (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/svm.c (99%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/ucall.c (100%)
> rename tools/testing/selftests/kvm/lib/{x86_64 => x86}/vmx.c (99%)
> rename tools/testing/selftests/kvm/{max_guest_memory_test.c => mmu_stress_test.c} (60%)
> rename tools/testing/selftests/kvm/{s390x => s390}/cmma_test.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/config (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/cpumodel_subfuncs_test.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/debug_test.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/memop.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/resets.c (99%)
> rename tools/testing/selftests/kvm/{s390x => s390}/shared_zeropage_test.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/sync_regs_test.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/tprot.c (100%)
> rename tools/testing/selftests/kvm/{s390x => s390}/ucontrol_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/amx_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/apic_bus_clock_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/cpuid_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/cr4_cpuid_sync_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/debug_regs.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/dirty_log_page_splitting_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/exit_on_emulation_failure_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/feature_msrs_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/fix_hypercall_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/flds_emulation.h (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hwcr_msr_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_clock.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_cpuid.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_evmcs.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_extended_hypercalls.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_features.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_ipi.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_svm_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/hyperv_tlb_flush.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/kvm_clock_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/kvm_pv_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/max_vcpuid_cap_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/monitor_mwait_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/nested_exceptions_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/nx_huge_pages_test.sh (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/platform_info_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/pmu_counters_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/pmu_event_filter_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_conversions_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/private_mem_kvm_exits_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/recalc_apic_map_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/set_boot_cpu_id.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/set_sregs_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_init2_tests.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_migrate_tests.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/sev_smoke_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/smaller_maxphyaddr_emulation_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/smm_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/state_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_int_ctl_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_shutdown_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_nested_soft_inject_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/svm_vmcall_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/sync_regs_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/triple_fault_event_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/tsc_msrs_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/tsc_scaling_sync.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/ucna_injection_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/userspace_io_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/userspace_msr_exit_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_apic_access_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_close_while_nested_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_dirty_log_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_exception_with_invalid_guest_state.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_invalid_nested_guest_state.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_msrs_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_nested_tsc_scaling_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_pmu_caps_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_preemption_timer_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_set_nested_state_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/vmx_tsc_adjust_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/xapic_ipi_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/xapic_state_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/xcr0_cpuid_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/xen_shinfo_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/xen_vmcall_test.c (100%)
> rename tools/testing/selftests/kvm/{x86_64 => x86}/xss_msr_test.c (100%)
>
--
^ permalink raw reply [flat|nested] 32+ messages in thread
end of thread, other threads:[~2024-12-19 15:15 UTC | newest]
Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-28 0:55 [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 01/16] KVM: Move KVM_REG_SIZE() definition to common uAPI header Sean Christopherson
2024-11-28 8:14 ` Muhammad Usama Anjum
2024-11-28 0:55 ` [PATCH v4 02/16] KVM: selftests: Return a value from vcpu_get_reg() instead of using an out-param Sean Christopherson
2024-11-28 8:25 ` Claudio Imbrenda
2024-11-28 0:55 ` [PATCH v4 03/16] KVM: selftests: Assert that vcpu_{g,s}et_reg() won't truncate Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 04/16] KVM: selftests: Check for a potential unhandled exception iff KVM_RUN succeeded Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 05/16] KVM: selftests: Rename max_guest_memory_test to mmu_stress_test Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 06/16] KVM: selftests: Only muck with SREGS on x86 in mmu_stress_test Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 07/16] KVM: selftests: Compute number of extra pages needed " Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 08/16] KVM: sefltests: Explicitly include ucall_common.h in mmu_stress_test.c Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 09/16] KVM: selftests: Enable mmu_stress_test on arm64 Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 10/16] KVM: selftests: Use vcpu_arch_put_guest() in mmu_stress_test Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 11/16] KVM: selftests: Precisely limit the number of guest loops " Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 12/16] KVM: selftests: Add a read-only mprotect() phase to mmu_stress_test Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 13/16] KVM: selftests: Verify KVM correctly handles mprotect(PROT_READ) Sean Christopherson
2024-11-28 0:55 ` [PATCH v4 14/16] KVM: selftests: Provide empty 'all' and 'clean' targets for unsupported ARCHs Sean Christopherson
2024-11-28 8:19 ` Muhammad Usama Anjum
2024-11-28 8:42 ` Andrew Jones
2024-11-28 0:55 ` [PATCH v4 15/16] KVM: selftests: Use canonical $(ARCH) paths for KVM selftests directories Sean Christopherson
2024-11-28 8:20 ` Muhammad Usama Anjum
2024-11-28 8:25 ` Claudio Imbrenda
2024-12-02 18:47 ` Sean Christopherson
2024-11-28 8:43 ` Andrew Jones
2024-11-28 0:55 ` [PATCH v4 16/16] KVM: selftests: Override ARCH for x86_64 instead of using ARCH_DIR Sean Christopherson
2024-11-28 8:20 ` Muhammad Usama Anjum
2024-12-16 22:33 ` [PATCH v4 00/16] KVM: selftests: "tree" wide overhauls Sean Christopherson
2024-12-18 21:56 ` Sean Christopherson
2024-12-18 22:12 ` Sean Christopherson
2024-12-19 2:00 ` Sean Christopherson
2024-12-19 12:51 ` Paolo Bonzini
2024-12-19 15:14 ` John Stoffel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).