KVM: x86: Fold kvm_get_apic_interrupt() into kvm_cpu_get_interrupt()
authorSean Christopherson <seanjc@google.com>
Fri, 6 Sep 2024 04:34:11 +0000 (21:34 -0700)
committerSean Christopherson <seanjc@google.com>
Tue, 10 Sep 2024 03:15:01 +0000 (20:15 -0700)
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>
arch/x86/kvm/irq.c
arch/x86/kvm/lapic.c
arch/x86/kvm/lapic.h

index 810da99..63f66c5 100644 (file)
@@ -142,9 +142,12 @@ int kvm_cpu_get_interrupt(struct kvm_vcpu *v)
        if (vector != -1)
                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)
 {
index c1b2a61..63e67b6 100644 (file)
@@ -2959,16 +2959,6 @@ void kvm_apic_ack_interrupt(struct kvm_vcpu *vcpu, int vector)
 }
 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,
                struct kvm_lapic_state *s, bool set)
 {
index db80a29..8310ff7 100644 (file)
@@ -90,7 +90,6 @@ void kvm_free_lapic(struct kvm_vcpu *vcpu);
 int kvm_apic_has_interrupt(struct kvm_vcpu *vcpu);
 void kvm_apic_ack_interrupt(struct kvm_vcpu *vcpu, int vector);
 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);
 void kvm_lapic_reset(struct kvm_vcpu *vcpu, bool init_event);
 u64 kvm_lapic_get_cr8(struct kvm_vcpu *vcpu);