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:
@@ -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,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user