Skip to content

Commit 6dac119

Browse files
vittyvksean-jc
authored andcommitted
KVM: selftests: Make Hyper-V tests explicitly require KVM Hyper-V support
In preparation for conditional Hyper-V emulation enablement in KVM, make Hyper-V specific tests skip gracefully instead of failing when KVM support for emulating Hyper-V is not there. Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> Tested-by: Jeremi Piotrowski <jpiotrowski@linux.microsoft.com> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> Link: https://lore.kernel.org/r/20231205103630.1391318-10-vkuznets@redhat.com Signed-off-by: Sean Christopherson <seanjc@google.com>
1 parent b2e02f8 commit 6dac119

File tree

7 files changed

+14
-2
lines changed

7 files changed

+14
-2
lines changed

tools/testing/selftests/kvm/x86_64/hyperv_clock.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,8 @@ int main(void)
211211
vm_vaddr_t tsc_page_gva;
212212
int stage;
213213

214+
TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_TIME));
215+
214216
vm = vm_create_with_one_vcpu(&vcpu, guest_main);
215217

216218
vcpu_set_hv_cpuid(vcpu);

tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,11 +240,12 @@ int main(int argc, char *argv[])
240240
struct ucall uc;
241241
int stage;
242242

243-
vm = vm_create_with_one_vcpu(&vcpu, guest_code);
244-
245243
TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_VMX));
246244
TEST_REQUIRE(kvm_has_cap(KVM_CAP_NESTED_STATE));
247245
TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS));
246+
TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_DIRECT_TLBFLUSH));
247+
248+
vm = vm_create_with_one_vcpu(&vcpu, guest_code);
248249

249250
hcall_page = vm_vaddr_alloc_pages(vm, 1);
250251
memset(addr_gva2hva(vm, hcall_page), 0x0, getpagesize());

tools/testing/selftests/kvm/x86_64/hyperv_extended_hypercalls.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ int main(void)
4343
uint64_t *outval;
4444
struct ucall uc;
4545

46+
TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_CPUID));
47+
4648
/* Verify if extended hypercalls are supported */
4749
if (!kvm_cpuid_has(kvm_get_supported_hv_cpuid(),
4850
HV_ENABLE_EXTENDED_HYPERCALLS)) {

tools/testing/selftests/kvm/x86_64/hyperv_features.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,8 @@ static void guest_test_hcalls_access(void)
690690

691691
int main(void)
692692
{
693+
TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_ENFORCE_CPUID));
694+
693695
pr_info("Testing access to Hyper-V specific MSRs\n");
694696
guest_test_msrs_access();
695697

tools/testing/selftests/kvm/x86_64/hyperv_ipi.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,8 @@ int main(int argc, char *argv[])
248248
int stage = 1, r;
249249
struct ucall uc;
250250

251+
TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_SEND_IPI));
252+
251253
vm = vm_create_with_one_vcpu(&vcpu[0], sender_guest_code);
252254

253255
/* Hypercall input/output */

tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ int main(int argc, char *argv[])
158158
int stage;
159159

160160
TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_SVM));
161+
TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_DIRECT_TLBFLUSH));
161162

162163
/* Create VM */
163164
vm = vm_create_with_one_vcpu(&vcpu, guest_code);

tools/testing/selftests/kvm/x86_64/hyperv_tlb_flush.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -590,6 +590,8 @@ int main(int argc, char *argv[])
590590
struct ucall uc;
591591
int stage = 1, r, i;
592592

593+
TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_TLBFLUSH));
594+
593595
vm = vm_create_with_one_vcpu(&vcpu[0], sender_guest_code);
594596

595597
/* Test data page */

0 commit comments

Comments
 (0)