On 29/05/2024 10:01 am, Roger Pau Monne wrote: > diff --git a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c > index 6567af685a1b..4d77fba3ed19 100644 > --- a/xen/arch/x86/apic.c > +++ b/xen/arch/x86/apic.c > @@ -1543,3 +1543,8 @@ void check_for_unexpected_msi(unsigned int vector) > { > BUG_ON(apic_isr_read(vector)); > } > + > +bool lapic_check_pending(unsigned int vector) > +{ > + return apic_read(APIC_IRR + (vector / 32 * 0x10)) & (1U << (vector % > 32)); > +} > diff --git a/xen/arch/x86/include/asm/apic.h b/xen/arch/x86/include/asm/apic.h > index d1cb001fb4ab..7b5a0832c05e 100644 > --- a/xen/arch/x86/include/asm/apic.h > +++ b/xen/arch/x86/include/asm/apic.h > @@ -179,6 +179,9 @@ extern void record_boot_APIC_mode(void); > extern enum apic_mode current_local_apic_mode(void); > extern void check_for_unexpected_msi(unsigned int vector); > > +/* Return whether vector is pending in IRR. */ > +bool lapic_check_pending(unsigned int vector); > +
As a minor point, we've already got apic_isr_read() as a static inline. This wants to be a matching apic_irr_read() IMO. ~Andrew