KVM: nVMX: Add a helper to get highest pending from Posted Interrupt vector
authorSean Christopherson <seanjc@google.com>
Fri, 7 Jun 2024 17:26:04 +0000 (10:26 -0700)
committerSean Christopherson <seanjc@google.com>
Fri, 28 Jun 2024 15:59:03 +0000 (08:59 -0700)
commitd83c36d822be44db4bad0c43bea99c8908f54117
tree4f68948ed1ae17e495623266bbd51da924844fc0
parent92c1e3cbf0d02916ae0c6fc3b78864dcb77624ad
KVM: nVMX: Add a helper to get highest pending from Posted Interrupt vector

Add a helper to retrieve the highest pending vector given a Posted
Interrupt descriptor.  While the actual operation is straightforward, it's
surprisingly easy to mess up, e.g. if one tries to reuse lapic.c's
find_highest_vector(), which doesn't work with PID.PIR due to the APIC's
IRR and ISR component registers being physically discontiguous (they're
4-byte registers aligned at 16-byte intervals).

To make PIR handling more consistent with respect to IRR and ISR handling,
return -1 to indicate "no interrupt pending".

Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20240607172609.3205077-2-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/vmx/nested.c
arch/x86/kvm/vmx/posted_intr.h