]> git.baikalelectronics.ru Git - kernel.git/commitdiff
KVM: VMX: Clean up vmx_refresh_apicv_exec_ctrl()
authorZeng Guang <guang.zeng@intel.com>
Tue, 19 Apr 2022 15:36:04 +0000 (23:36 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 8 Jun 2022 08:47:26 +0000 (04:47 -0400)
Remove the condition check cpu_has_secondary_exec_ctrls(). Calling
vmx_refresh_apicv_exec_ctrl() premises secondary controls activated
and VMCS fields related to APICv valid as well. If it's invoked in
wrong circumstance at the worst case, VMX operation will report
VMfailValid error without further harmful impact and just functions
as if all the secondary controls were 0.

Suggested-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Zeng Guang <guang.zeng@intel.com>
Message-Id: <20220419153604.11786-1-guang.zeng@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/vmx/vmx.c

index 4238a55c26e648cf98972c5b2f9215774312e896..3cbe3a38b3563d0266eb58be34b02fab16af3227 100644 (file)
@@ -4201,16 +4201,15 @@ static void vmx_refresh_apicv_exec_ctrl(struct kvm_vcpu *vcpu)
        }
 
        pin_controls_set(vmx, vmx_pin_based_exec_ctrl(vmx));
-       if (cpu_has_secondary_exec_ctrls()) {
-               if (kvm_vcpu_apicv_active(vcpu))
-                       secondary_exec_controls_setbit(vmx,
-                                     SECONDARY_EXEC_APIC_REGISTER_VIRT |
-                                     SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY);
-               else
-                       secondary_exec_controls_clearbit(vmx,
-                                       SECONDARY_EXEC_APIC_REGISTER_VIRT |
-                                       SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY);
-       }
+
+       if (kvm_vcpu_apicv_active(vcpu))
+               secondary_exec_controls_setbit(vmx,
+                                              SECONDARY_EXEC_APIC_REGISTER_VIRT |
+                                              SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY);
+       else
+               secondary_exec_controls_clearbit(vmx,
+                                                SECONDARY_EXEC_APIC_REGISTER_VIRT |
+                                                SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY);
 
        vmx_update_msr_bitmap_x2apic(vcpu);
 }