]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
KVM: x86: hyper-v: Honor HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED bit
authorVitaly Kuznetsov <vkuznets@redhat.com>
Fri, 21 May 2021 09:52:01 +0000 (11:52 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 17 Jun 2021 17:09:44 +0000 (13:09 -0400)
Hypercalls which use extended processor masks are only available when
HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED privilege bit is exposed (and
'RECOMMENDED' is rather a misnomer).

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20210521095204.2161214-28-vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/hyperv.c

index eded585620a7afe09a081617e2fea94c513512f6..4f911dca7dd67cbf922354d6e45d30d2a90bfabe 100644 (file)
@@ -2114,11 +2114,19 @@ static bool hv_check_hypercall_access(struct kvm_vcpu_hv *hv_vcpu, u16 code)
                        hv_vcpu->cpuid_cache.features_ebx & HV_DEBUGGING;
        case HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST_EX:
        case HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE_EX:
+               if (!(hv_vcpu->cpuid_cache.enlightenments_eax &
+                     HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED))
+                       return false;
+               fallthrough;
        case HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST:
        case HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE:
                return hv_vcpu->cpuid_cache.enlightenments_eax &
                        HV_X64_REMOTE_TLB_FLUSH_RECOMMENDED;
        case HVCALL_SEND_IPI_EX:
+               if (!(hv_vcpu->cpuid_cache.enlightenments_eax &
+                     HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED))
+                       return false;
+               fallthrough;
        case HVCALL_SEND_IPI:
                return hv_vcpu->cpuid_cache.enlightenments_eax &
                        HV_X64_CLUSTER_IPI_RECOMMENDED;