[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220713132843.49693-1-alvinzhan1234@gmail.com>
Date: Wed, 13 Jul 2022 21:28:43 +0800
From: alvinzhan1234@...il.com
To: catalin.marinas@....com, will@...nel.org
Cc: linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
Alvin Zhan <alvinzhan1234@...il.com>
Subject: [PATCH 1/1] arm64: Prevent offline CPU handling IRQs.
From: Alvin Zhan <alvinzhan1234@...il.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@...il.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
Powered by blists - more mailing lists