From 2e14980575f2857cbfd661a7c7533f97d5e215e3 Mon Sep 17 00:00:00 2001 From: Yipeng Zou Date: Tue, 28 Feb 2023 21:23:51 +0800 Subject: [PATCH] genirq: Remove irqd_irq_disabled in __irq_move_irq hulk inclusion category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/I6BO2R CVE: NA -------------------------------- CONFIG_GENERIC_PENDING_IRQ has been enable in ARM64 for LPI, which can delay set irq affinity ops in chip->irq_eoi process. While drivers call disable_irq_nosync in irq handler, __irq_move_irq would judge irq is disabled and return directly, which cause set affinity failed. To fix this issue, remove the irq status judgement in __irq_move_irq for ARM64, cause there is no relationship between irq affinity and irq disabled, and irq_set_affinity does not judge it either. Fixes: 6ea5519695b2 ("irqchip/gic-v3-its: introduce CONFIG_GENERIC_PENDING_IRQ") Signed-off-by: Zhang Jianhua Signed-off-by: Yipeng Zou Reviewed-by: Liao Chang Reviewed-by: Zhang Jianhua Signed-off-by: Yongqiang Liu --- kernel/irq/migration.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/irq/migration.c b/kernel/irq/migration.c index 01b2669ed29f..f752d9ff8ee1 100644 --- a/kernel/irq/migration.c +++ b/kernel/irq/migration.c @@ -105,8 +105,10 @@ void __irq_move_irq(struct irq_data *idata) */ idata = irq_desc_get_irq_data(irq_data_to_desc(idata)); +#ifndef CONFIG_ARM64 if (unlikely(irqd_irq_disabled(idata))) return; +#endif /* * Be careful vs. already masked interrupts. If this is a -- GitLab