[PATCH 1/1] arm64: Prevent offline CPU handling IRQs.

alvinzhan1234 at gmail.com alvinzhan1234 at gmail.com
Wed Jul 13 06:28:43 PDT 2022


From: Alvin Zhan <alvinzhan1234 at gmail.com>

Migrate all of the IRQs on this CPU after setting it offline may still cause the IRQs to be dispatched to this CPU.
To prevent offline CPU handling IRQs, we should migrate the IRQs away from this CPU before it is powered off.

Signed-off-by: Alvin Zhan <alvinzhan1234 at gmail.com>
---
 arch/arm64/kernel/smp.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
index 62ed361a4..c4c3c5ed5 100644
--- a/arch/arm64/kernel/smp.c
+++ b/arch/arm64/kernel/smp.c
@@ -302,6 +302,11 @@ int __cpu_disable(void)
 	remove_cpu_topology(cpu);
 	numa_remove_cpu(cpu);
 
+	/*
+	 * Migrate IRQs away from this CPU first.
+	 */
+	irq_migrate_all_off_this_cpu();
+
 	/*
 	 * Take this CPU offline.  Once we clear this, we can't return,
 	 * and we must not schedule until we're ready to give up the cpu.
@@ -309,11 +314,6 @@ int __cpu_disable(void)
 	set_cpu_online(cpu, false);
 	ipi_teardown(cpu);
 
-	/*
-	 * OK - migrate IRQs away from this CPU
-	 */
-	irq_migrate_all_off_this_cpu();
-
 	return 0;
 }
 
-- 
2.34.1




More information about the linux-arm-kernel mailing list