[PATCH v3 3/3] KVM: x86: Consolidate invocations of kvm_x86_ops.load_eoi_exitmap()
From: Sean Christopherson
Date: Tue Oct 27 2026 - 18:33:08 EST
Rework KVM's handling of EOI exit bitmap updates to consolidate the calls
to vendor code so that it's easier to see that the Hyper-V path is doing
the exact same thing, just with extra input to account for the SynIC
vectors.
No functional change intended.
Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx>
---
arch/x86/kvm/x86.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 0028d57e964a..483dac323c8e 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -8047,6 +8047,9 @@ EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_inc_or_dec_irq_window_inhibit);
static void vcpu_scan_ioapic(struct kvm_vcpu *vcpu)
{
+ unsigned long *eoi_exit_bitmap = vcpu->arch.ioapic_handled_vectors;
+ DECLARE_BITMAP(__eoi_exit_bitmap, 256) __maybe_unused;
+
if (!kvm_apic_present(vcpu))
return;
@@ -8064,17 +8067,14 @@ static void vcpu_scan_ioapic(struct kvm_vcpu *vcpu)
#ifdef CONFIG_KVM_HYPERV
if (to_hv_vcpu(vcpu)) {
- u64 eoi_exit_bitmap[4];
-
- bitmap_or((ulong *)eoi_exit_bitmap,
+ bitmap_or(__eoi_exit_bitmap,
vcpu->arch.ioapic_handled_vectors,
to_hv_synic(vcpu)->vec_bitmap, 256);
- kvm_x86_call(load_eoi_exitmap)(vcpu, eoi_exit_bitmap);
- return;
+
+ eoi_exit_bitmap = __eoi_exit_bitmap;
}
#endif
- kvm_x86_call(load_eoi_exitmap)(
- vcpu, (u64 *)vcpu->arch.ioapic_handled_vectors);
+ kvm_x86_call(load_eoi_exitmap)(vcpu, (u64 *)eoi_exit_bitmap);
}
void kvm_arch_guest_memory_reclaimed(struct kvm *kvm)
--
2.56.0.307.g5fe7bd680c-goog