KVM: x86: Fold kvm_get_apic_interrupt() into kvm_cpu_get_interrupt()
Fold kvm_get_apic_interrupt() into kvm_cpu_get_interrupt() now that nVMX essentially open codes kvm_get_apic_interrupt() in order to correctly emulate nested posted interrupts. Opportunistically stop exporting kvm_cpu_get_interrupt(), as the aforementioned nVMX flow was the only user in vendor code. Link: https://lore.kernel.org/r/20240906043413.1049633-6-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
6e0b456547
commit
aa9477966a
@ -142,9 +142,12 @@ int kvm_cpu_get_interrupt(struct kvm_vcpu *v)
|
|||||||
if (vector != -1)
|
if (vector != -1)
|
||||||
return vector; /* PIC */
|
return vector; /* PIC */
|
||||||
|
|
||||||
return kvm_get_apic_interrupt(v); /* APIC */
|
vector = kvm_apic_has_interrupt(v); /* APIC */
|
||||||
|
if (vector != -1)
|
||||||
|
kvm_apic_ack_interrupt(v, vector);
|
||||||
|
|
||||||
|
return vector;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(kvm_cpu_get_interrupt);
|
|
||||||
|
|
||||||
void kvm_inject_pending_timer_irqs(struct kvm_vcpu *vcpu)
|
void kvm_inject_pending_timer_irqs(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
|
@ -2959,16 +2959,6 @@ void kvm_apic_ack_interrupt(struct kvm_vcpu *vcpu, int vector)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(kvm_apic_ack_interrupt);
|
EXPORT_SYMBOL_GPL(kvm_apic_ack_interrupt);
|
||||||
|
|
||||||
int kvm_get_apic_interrupt(struct kvm_vcpu *vcpu)
|
|
||||||
{
|
|
||||||
int vector = kvm_apic_has_interrupt(vcpu);
|
|
||||||
|
|
||||||
if (vector != -1)
|
|
||||||
kvm_apic_ack_interrupt(vcpu, vector);
|
|
||||||
|
|
||||||
return vector;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int kvm_apic_state_fixup(struct kvm_vcpu *vcpu,
|
static int kvm_apic_state_fixup(struct kvm_vcpu *vcpu,
|
||||||
struct kvm_lapic_state *s, bool set)
|
struct kvm_lapic_state *s, bool set)
|
||||||
{
|
{
|
||||||
|
@ -90,7 +90,6 @@ void kvm_free_lapic(struct kvm_vcpu *vcpu);
|
|||||||
int kvm_apic_has_interrupt(struct kvm_vcpu *vcpu);
|
int kvm_apic_has_interrupt(struct kvm_vcpu *vcpu);
|
||||||
void kvm_apic_ack_interrupt(struct kvm_vcpu *vcpu, int vector);
|
void kvm_apic_ack_interrupt(struct kvm_vcpu *vcpu, int vector);
|
||||||
int kvm_apic_accept_pic_intr(struct kvm_vcpu *vcpu);
|
int kvm_apic_accept_pic_intr(struct kvm_vcpu *vcpu);
|
||||||
int kvm_get_apic_interrupt(struct kvm_vcpu *vcpu);
|
|
||||||
int kvm_apic_accept_events(struct kvm_vcpu *vcpu);
|
int kvm_apic_accept_events(struct kvm_vcpu *vcpu);
|
||||||
void kvm_lapic_reset(struct kvm_vcpu *vcpu, bool init_event);
|
void kvm_lapic_reset(struct kvm_vcpu *vcpu, bool init_event);
|
||||||
u64 kvm_lapic_get_cr8(struct kvm_vcpu *vcpu);
|
u64 kvm_lapic_get_cr8(struct kvm_vcpu *vcpu);
|
||||||
|
Loading…
Reference in New Issue
Block a user