Hi,
On 24/07/2025 15:57, Leonid Komarianskyi wrote:
The do_IRQ() function is the main handler for processing IRQs.
Currently, due to restrictive checks, it does not process interrupt
numbers greater than 1024. This patch updates the condition to allow
the handling of interrupts from the eSPI range.
Signed-off-by: Leonid Komarianskyi <leonid_komarians...@epam.com>
---
xen/arch/arm/gic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
index d5f2addf9f..b4a185fcc5 100644
--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -342,7 +342,7 @@ void gic_interrupt(struct cpu_user_regs *regs, int is_fiq)
/* Reading IRQ will ACK it */
irq = gic_hw_ops->read_irq();
- if ( likely(irq >= GIC_SGI_STATIC_MAX && irq < 1020) )
+ if ( likely(irq >= GIC_SGI_STATIC_MAX && irq < 1020) || is_espi(irq) )
Looking at the series, we seem to have a common pattern which is "check
if an SPI or an eSPI". AFAIU, pretty much everywhere we use an SPI, we
want to be able to use an eSPI.
So rather than open-coding everywhere, can we create a new helper to
check whether we have an (e)SPI? This would make easier to read the code.
Cheers,
--
Julien Grall