From: Yipeng Zou zouyipeng@huawei.com
hulk inclusion category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/I6BO2R CVE: NA
--------------------------------
Now we has nothing to show the log when the irq be reentrant in multiple cpus.
The IRQD_IRQ_INPROGRESS means that the irq was in processing.
We can add an checkpoint here to indentifly this scenario.
Signed-off-by: Yipeng Zou zouyipeng@huawei.com Reviewed-by: Zhang Jianhua chris.zjh@huawei.com Signed-off-by: Yongqiang Liu liuyongqiang13@huawei.com --- kernel/irq/chip.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 63a9ad8307e6..39bed3e4da3c 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -513,6 +513,10 @@ static bool irq_may_run(struct irq_desc *desc) if (!irqd_has_set(&desc->irq_data, mask)) return true;
+ if (irqd_get(&desc->irq_data) & IRQD_IRQ_INPROGRESS) + pr_warn_ratelimited("irq %u(%lu) may be reentrant in multiple cpus.\n", + desc->irq_data.irq, desc->irq_data.hwirq); + /* * If the interrupt is an armed wakeup source, mark it pending * and suspended, disable it and notify the pm core about the