KVM: x86: Use static_call() for .vcpu_deliver_sipi_vector()
Define and use a static_call() for kvm_x86_ops.vcpu_deliver_sipi_vector(), mostly so that the op is defined in kvm-x86-ops.h. This will allow using KVM_X86_OP in vendor code to wire up the implementation. Any performance gains eeked out by using static_call() is a happy bonus and not the primary motiviation. Signed-off-by: Sean Christopherson <seanjc@google.com> Message-Id: <20220128005208.4008533-6-seanjc@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
ef2d488c65
commit
a0941a64a9
@ -122,6 +122,7 @@ KVM_X86_OP_NULL(enable_direct_tlbflush)
|
|||||||
KVM_X86_OP_NULL(migrate_timers)
|
KVM_X86_OP_NULL(migrate_timers)
|
||||||
KVM_X86_OP(msr_filter_changed)
|
KVM_X86_OP(msr_filter_changed)
|
||||||
KVM_X86_OP_NULL(complete_emulated_msr)
|
KVM_X86_OP_NULL(complete_emulated_msr)
|
||||||
|
KVM_X86_OP(vcpu_deliver_sipi_vector)
|
||||||
|
|
||||||
#undef KVM_X86_OP
|
#undef KVM_X86_OP
|
||||||
#undef KVM_X86_OP_NULL
|
#undef KVM_X86_OP_NULL
|
||||||
|
@ -2933,7 +2933,7 @@ int kvm_apic_accept_events(struct kvm_vcpu *vcpu)
|
|||||||
/* evaluate pending_events before reading the vector */
|
/* evaluate pending_events before reading the vector */
|
||||||
smp_rmb();
|
smp_rmb();
|
||||||
sipi_vector = apic->sipi_vector;
|
sipi_vector = apic->sipi_vector;
|
||||||
kvm_x86_ops.vcpu_deliver_sipi_vector(vcpu, sipi_vector);
|
static_call(kvm_x86_vcpu_deliver_sipi_vector)(vcpu, sipi_vector);
|
||||||
vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE;
|
vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user