plic: irq: Set IRQCHIP_EOI_THREADED in PREEMPT_RT case

In ipms can device or other device, interrupt is trigger by level.
in PREEMPT_RT case. irq handle is in thread, If not set
IRQCHIP_EOI_THREADED, device irq in PLIC is cleared first, but
device irq reg is not clear, So the interrupt will be triggered
again, IRQCHIP_EOI_THREADED will clear device PLIC IRQ status
after clear device irq reg.

Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
This commit is contained in:
Minda Chen
2024-07-18 17:22:53 +08:00
parent 40fc1d8c68
commit 6ea9f80e2e

View File

@@ -198,6 +198,9 @@ static struct irq_chip plic_edge_chip = {
#endif
.irq_set_type = plic_irq_set_type,
.flags = IRQCHIP_SKIP_SET_WAKE |
#ifdef CONFIG_PREEMPT_RT
IRQCHIP_EOI_THREADED |
#endif
IRQCHIP_AFFINITY_PRE_STARTUP,
};
@@ -213,6 +216,9 @@ static struct irq_chip plic_chip = {
#endif
.irq_set_type = plic_irq_set_type,
.flags = IRQCHIP_SKIP_SET_WAKE |
#ifdef CONFIG_PREEMPT_RT
IRQCHIP_EOI_THREADED |
#endif
IRQCHIP_AFFINITY_PRE_STARTUP,
};