KVM: VMX: Use x2apic_mode to avoid RDMSR when querying PI state

Use x2apic_mode instead of x2apic_enabled() when adjusting the
destination ID during Posted Interrupt updates.  This avoids the costly
RDMSR that is hidden behind x2apic_enabled().

Reported-by: luferry <luferry@163.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20210115220354.434807-3-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Sean Christopherson 2021-01-15 14:03:54 -08:00 committed by Paolo Bonzini
parent db7d8e4768
commit 563c54c4d5
1 changed files with 3 additions and 3 deletions

View File

@ -54,7 +54,7 @@ void vmx_vcpu_pi_load(struct kvm_vcpu *vcpu, int cpu)
dest = cpu_physical_id(cpu); dest = cpu_physical_id(cpu);
if (x2apic_enabled()) if (x2apic_mode)
new.ndst = dest; new.ndst = dest;
else else
new.ndst = (dest << 8) & 0xFF00; new.ndst = (dest << 8) & 0xFF00;
@ -104,7 +104,7 @@ static void __pi_post_block(struct kvm_vcpu *vcpu)
dest = cpu_physical_id(vcpu->cpu); dest = cpu_physical_id(vcpu->cpu);
if (x2apic_enabled()) if (x2apic_mode)
new.ndst = dest; new.ndst = dest;
else else
new.ndst = (dest << 8) & 0xFF00; new.ndst = (dest << 8) & 0xFF00;
@ -174,7 +174,7 @@ int pi_pre_block(struct kvm_vcpu *vcpu)
*/ */
dest = cpu_physical_id(vcpu->pre_pcpu); dest = cpu_physical_id(vcpu->pre_pcpu);
if (x2apic_enabled()) if (x2apic_mode)
new.ndst = dest; new.ndst = dest;
else else
new.ndst = (dest << 8) & 0xFF00; new.ndst = (dest << 8) & 0xFF00;