lkml.org 
[lkml]   [2022]   [Jul]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 1/1] arm64: Prevent offline CPU handling IRQs.
Date
From: Alvin Zhan <alvinzhan1234@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@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
\
 
 \ /
  Last update: 2022-07-13 15:29    [W:0.199 / U:0.212 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site