mirror of https://gitee.com/openkylin/linux.git
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:
parent
db7d8e4768
commit
563c54c4d5
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue