aboutsummaryrefslogtreecommitdiff
path: root/hw/intc
diff options
context:
space:
mode:
authorSteven Lee <steven_lee@aspeedtech.com>2025-03-20 17:25:43 +0800
committerCédric Le Goater <clg@redhat.com>2025-03-23 18:42:16 +0100
commit7b8cbe5162e69ad629c5326bf3c158b81857955d (patch)
tree441cc0ccd869bb487cdf754ab465a76adabe6cf4 /hw/intc
parentd4dfb4ffd4008d0d7d3bc9b1dca3e5c5afcc4336 (diff)
downloadqemu-7b8cbe5162e69ad629c5326bf3c158b81857955d.zip
qemu-7b8cbe5162e69ad629c5326bf3c158b81857955d.tar.gz
qemu-7b8cbe5162e69ad629c5326bf3c158b81857955d.tar.bz2
hw/intc/aspeed: Fix IRQ handler mask check
Updated the IRQ handler mask check to AND with select variable. This ensures that the interrupt service routine is correctly triggered for the interrupts within the same irq group. For example, both `eth0` and the debug UART are handled in `GICINT132`. Without this fix, the debug console may hang if the `eth0` ISR is not handled. Signed-off-by: Steven Lee <steven_lee@aspeedtech.com> Change-Id: Ic3609eb72218dfd68be6057d78b8953b18828709 Reviewed-by: Cédric Le Goater <clg@redhat.com> Fixes: d831c5fd8682 ("aspeed/intc: Add AST2700 support") Link: https://lore.kernel.org/qemu-devel/20250320092543.4040672-2-steven_lee@aspeedtech.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
Diffstat (limited to 'hw/intc')
-rw-r--r--hw/intc/aspeed_intc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/intc/aspeed_intc.c b/hw/intc/aspeed_intc.c
index 3fd4170..f17bf43 100644
--- a/hw/intc/aspeed_intc.c
+++ b/hw/intc/aspeed_intc.c
@@ -111,7 +111,7 @@ static void aspeed_intc_set_irq_handler(AspeedINTCState *s,
outpin_idx = intc_irq->outpin_idx;
inpin_idx = intc_irq->inpin_idx;
- if (s->mask[inpin_idx] || s->regs[status_reg]) {
+ if ((s->mask[inpin_idx] & select) || (s->regs[status_reg] & select)) {
/*
* a. mask is not 0 means in ISR mode
* sources interrupt routine are executing.