Commit 6dac1195 authored by Vitaly Kuznetsov's avatar Vitaly Kuznetsov Committed by Sean Christopherson
Browse files

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: default avatarMaxim Levitsky <mlevitsk@redhat.com>
Tested-by: default avatarJeremi Piotrowski <jpiotrowski@linux.microsoft.com>
Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
Link: https://lore.kernel.org/r/20231205103630.1391318-10-vkuznets@redhat.com


Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent b2e02f82
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -211,6 +211,8 @@ int main(void)
	vm_vaddr_t tsc_page_gva;
	int stage;

	TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_TIME));

	vm = vm_create_with_one_vcpu(&vcpu, guest_main);

	vcpu_set_hv_cpuid(vcpu);
+3 −2
Original line number Diff line number Diff line
@@ -240,11 +240,12 @@ int main(int argc, char *argv[])
	struct ucall uc;
	int stage;

	vm = vm_create_with_one_vcpu(&vcpu, guest_code);

	TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_VMX));
	TEST_REQUIRE(kvm_has_cap(KVM_CAP_NESTED_STATE));
	TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS));
	TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_DIRECT_TLBFLUSH));

	vm = vm_create_with_one_vcpu(&vcpu, guest_code);

	hcall_page = vm_vaddr_alloc_pages(vm, 1);
	memset(addr_gva2hva(vm, hcall_page), 0x0,  getpagesize());
+2 −0
Original line number Diff line number Diff line
@@ -43,6 +43,8 @@ int main(void)
	uint64_t *outval;
	struct ucall uc;

	TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_CPUID));

	/* Verify if extended hypercalls are supported */
	if (!kvm_cpuid_has(kvm_get_supported_hv_cpuid(),
			   HV_ENABLE_EXTENDED_HYPERCALLS)) {
+2 −0
Original line number Diff line number Diff line
@@ -690,6 +690,8 @@ static void guest_test_hcalls_access(void)

int main(void)
{
	TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_ENFORCE_CPUID));

	pr_info("Testing access to Hyper-V specific MSRs\n");
	guest_test_msrs_access();

+2 −0
Original line number Diff line number Diff line
@@ -248,6 +248,8 @@ int main(int argc, char *argv[])
	int stage = 1, r;
	struct ucall uc;

	TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_SEND_IPI));

	vm = vm_create_with_one_vcpu(&vcpu[0], sender_guest_code);

	/* Hypercall input/output */
Loading