* [PATCH] sched/hotplug: Remove unused idle_task_exit
@ 2026-10-16 9:56 Srikar Dronamraju
0 siblings, 0 replies; only message in thread
From: Srikar Dronamraju @ 2026-10-16 9:56 UTC (permalink / raw)
To: Ingo Molnar, Peter Zijlstra, Russell King, Catalin Marinas,
Will Deacon, Guo Ren, Huacai Chen, WANG Xuerui,
Thomas Bogendoerfer, Florian Fainelli,
Broadcom internal kernel review list, Jiaxun Yang,
James E.J. Bottomley, Helge Deller, Scott Wood,
Madhavan Srinivasan, Michael Ellerman, Nicholas Piggin,
Christophe Leroy (CS GROUP),
Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti,
Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
Christian Borntraeger, Sven Schnelle, Yoshinori Sato,
Rich Felker, John Paul Adrian Glaubitz, David S. Miller,
Andreas Larsson, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
Dave Hansen, x86, H. Peter Anvin, Chris Zankel, Max Filippov
Cc: LKML, Srikar Dronamraju, Dietmar Eggemann, Srikar Dronamraju,
Kees Cook, Jinjie Ruan, mrigendrachaubey, Marc Zyngier,
Pengjie Zhang, Thierry Reding, Xi Ruoyao,
Rafael J. Wysocki (Intel),
Tiezhu Yang, Rong Bao, Hui Wang, Frederic Weisbecker,
Thorsten Blum, Josh Poimboeuf, linux-arm-kernel, linux-csky,
loongarch, linux-mips, linux-parisc, linuxppc-dev, linux-riscv,
linux-s390, linux-sh, sparclinux
Commit 21641bd9a7a7 ("lazy tlb: fix hotplug exit race with
MMU_LAZY_TLB_SHOOTDOWN") moved the handling previously performed by
idle_task_exit() into the scheduler CPU hotplug path using
sched_force_init_mm().
As a result, idle_task_exit() is now an empty stub and the remaining
architecture call sites have no effect.
Remove the calls to idle_task_exit() and the now unused stub.
Signed-off-by: Srikar Dronamraju <srikar@linux.ibm.com>
---
arch/arm/kernel/smp.c | 2 --
arch/arm64/kernel/smp.c | 2 --
arch/csky/kernel/smp.c | 2 --
arch/loongarch/kernel/smp.c | 2 --
arch/mips/cavium-octeon/smp.c | 1 -
arch/mips/kernel/smp-bmips.c | 1 -
arch/mips/kernel/smp-cps.c | 1 -
arch/mips/loongson64/smp.c | 1 -
arch/parisc/kernel/process.c | 2 --
arch/powerpc/platforms/85xx/smp.c | 2 --
arch/powerpc/platforms/powermac/smp.c | 2 --
arch/powerpc/platforms/powernv/smp.c | 1 -
arch/powerpc/platforms/pseries/hotplug-cpu.c | 2 --
arch/powerpc/platforms/pseries/pmem.c | 1 -
arch/riscv/kernel/cpu-hotplug.c | 2 --
arch/s390/kernel/smp.c | 1 -
arch/sh/kernel/smp.c | 1 -
arch/sparc/kernel/smp_64.c | 2 --
arch/x86/kernel/smpboot.c | 2 --
arch/xtensa/kernel/smp.c | 1 -
include/linux/sched/hotplug.h | 2 --
21 files changed, 33 deletions(-)
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index b5fb4697bc3f..bbfbbe728b7a 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -319,8 +319,6 @@ void __noreturn arch_cpu_idle_dead(void)
{
unsigned int cpu = smp_processor_id();
- idle_task_exit();
-
local_irq_disable();
/*
diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
index a61dc3016a11..afb5aa65d737 100644
--- a/arch/arm64/kernel/smp.c
+++ b/arch/arm64/kernel/smp.c
@@ -370,8 +370,6 @@ void __noreturn cpu_die(void)
unsigned int cpu = smp_processor_id();
const struct cpu_operations *ops = get_cpu_ops(cpu);
- idle_task_exit();
-
local_daif_mask();
/* Tell cpuhp_bp_sync_dead() that this CPU is now safe to dispose of */
diff --git a/arch/csky/kernel/smp.c b/arch/csky/kernel/smp.c
index 92dbbf3e0205..e6333ccc335a 100644
--- a/arch/csky/kernel/smp.c
+++ b/arch/csky/kernel/smp.c
@@ -294,8 +294,6 @@ void arch_cpuhp_cleanup_dead_cpu(unsigned int cpu)
void __noreturn arch_cpu_idle_dead(void)
{
- idle_task_exit();
-
cpuhp_ap_report_dead();
while (!secondary_stack)
diff --git a/arch/loongarch/kernel/smp.c b/arch/loongarch/kernel/smp.c
index 11f54837f56c..6b21af1c25e0 100644
--- a/arch/loongarch/kernel/smp.c
+++ b/arch/loongarch/kernel/smp.c
@@ -478,7 +478,6 @@ static void __noreturn idle_play_dead(void)
register uint64_t addr;
register void (*init_fn)(void);
- idle_task_exit();
local_irq_enable();
set_csr_ecfg(ECFGF_IPI);
__this_cpu_write(cpu_state, CPU_DEAD);
@@ -503,7 +502,6 @@ static void __noreturn poll_play_dead(void)
register uint64_t addr;
register void (*init_fn)(void);
- idle_task_exit();
__this_cpu_write(cpu_state, CPU_DEAD);
__smp_mb();
diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c
index 054e331b3202..0e557e76d616 100644
--- a/arch/mips/cavium-octeon/smp.c
+++ b/arch/mips/cavium-octeon/smp.c
@@ -344,7 +344,6 @@ void play_dead(void)
{
int cpu = cpu_number_map(cvmx_get_core_num());
- idle_task_exit();
cpuhp_ap_report_dead();
octeon_processor_boot = 0xff;
per_cpu(cpu_state, cpu) = CPU_DEAD;
diff --git a/arch/mips/kernel/smp-bmips.c b/arch/mips/kernel/smp-bmips.c
index 35b8d810833c..e4a523b7c988 100644
--- a/arch/mips/kernel/smp-bmips.c
+++ b/arch/mips/kernel/smp-bmips.c
@@ -391,7 +391,6 @@ static void bmips_cpu_die(unsigned int cpu)
void __ref play_dead(void)
{
- idle_task_exit();
cpuhp_ap_report_dead();
/* flush data cache */
diff --git a/arch/mips/kernel/smp-cps.c b/arch/mips/kernel/smp-cps.c
index b01ebaace48e..51e68a42bcc8 100644
--- a/arch/mips/kernel/smp-cps.c
+++ b/arch/mips/kernel/smp-cps.c
@@ -804,7 +804,6 @@ void play_dead(void)
unsigned int cpu;
local_irq_disable();
- idle_task_exit();
cpu = smp_processor_id();
cpu_death = CPU_DEATH_POWER;
diff --git a/arch/mips/loongson64/smp.c b/arch/mips/loongson64/smp.c
index e584299d0fde..73eca9c44b04 100644
--- a/arch/mips/loongson64/smp.c
+++ b/arch/mips/loongson64/smp.c
@@ -766,7 +766,6 @@ void play_dead(void)
unsigned int cpu = smp_processor_id();
void (*play_dead_at_ckseg1)(int *);
- idle_task_exit();
cpuhp_ap_report_dead();
prid_imp = read_c0_prid() & PRID_IMP_MASK;
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c
index 703644e5bfc4..8606ecde4c30 100644
--- a/arch/parisc/kernel/process.c
+++ b/arch/parisc/kernel/process.c
@@ -164,8 +164,6 @@ EXPORT_SYMBOL(running_on_qemu);
void __noreturn arch_cpu_idle_dead(void)
{
#ifdef CONFIG_HOTPLUG_CPU
- idle_task_exit();
-
local_irq_disable();
/* Tell the core that this CPU is now safe to dispose of. */
diff --git a/arch/powerpc/platforms/85xx/smp.c b/arch/powerpc/platforms/85xx/smp.c
index 32fa5fb557c0..9dc81e4226f0 100644
--- a/arch/powerpc/platforms/85xx/smp.c
+++ b/arch/powerpc/platforms/85xx/smp.c
@@ -121,8 +121,6 @@ static void smp_85xx_cpu_offline_self(void)
/* mask all irqs to prevent cpu wakeup */
qoriq_pm_ops->irq_mask(cpu);
- idle_task_exit();
-
mtspr(SPRN_TCR, 0);
mtspr(SPRN_TSR, mfspr(SPRN_TSR));
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
index 88e92af8acf9..f8e674cfcdd7 100644
--- a/arch/powerpc/platforms/powermac/smp.c
+++ b/arch/powerpc/platforms/powermac/smp.c
@@ -925,7 +925,6 @@ static void pmac_cpu_offline_self(void)
int cpu = smp_processor_id();
local_irq_disable();
- idle_task_exit();
pr_debug("CPU%d offline\n", cpu);
generic_set_cpu_dead(cpu);
smp_wmb();
@@ -940,7 +939,6 @@ static void pmac_cpu_offline_self(void)
int cpu = smp_processor_id();
local_irq_disable();
- idle_task_exit();
/*
* turn off as much as possible, we'll be
diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c
index b1201dbafcaf..9a480c924020 100644
--- a/arch/powerpc/platforms/powernv/smp.c
+++ b/arch/powerpc/platforms/powernv/smp.c
@@ -172,7 +172,6 @@ static void pnv_cpu_offline_self(void)
/* Standard hot unplug procedure */
- idle_task_exit();
cpu = smp_processor_id();
DBG("CPU%d offline\n", cpu);
generic_set_cpu_dead(cpu);
diff --git a/arch/powerpc/platforms/pseries/hotplug-cpu.c b/arch/powerpc/platforms/pseries/hotplug-cpu.c
index bc6926dbf148..1ade9a811157 100644
--- a/arch/powerpc/platforms/pseries/hotplug-cpu.c
+++ b/arch/powerpc/platforms/pseries/hotplug-cpu.c
@@ -19,7 +19,6 @@
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
-#include <linux/sched.h> /* for idle_task_exit */
#include <linux/sched/hotplug.h>
#include <linux/cpu.h>
#include <linux/of.h>
@@ -64,7 +63,6 @@ static void pseries_cpu_offline_self(void)
unsigned int hwcpu = hard_smp_processor_id();
local_irq_disable();
- idle_task_exit();
if (xive_enabled())
xive_teardown_cpu();
else
diff --git a/arch/powerpc/platforms/pseries/pmem.c b/arch/powerpc/platforms/pseries/pmem.c
index 0f1d45f32e4a..af48dfebb640 100644
--- a/arch/powerpc/platforms/pseries/pmem.c
+++ b/arch/powerpc/platforms/pseries/pmem.c
@@ -9,7 +9,6 @@
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
-#include <linux/sched.h> /* for idle_task_exit */
#include <linux/sched/hotplug.h>
#include <linux/cpu.h>
#include <linux/of.h>
diff --git a/arch/riscv/kernel/cpu-hotplug.c b/arch/riscv/kernel/cpu-hotplug.c
index 0bc56d8381b6..348043122593 100644
--- a/arch/riscv/kernel/cpu-hotplug.c
+++ b/arch/riscv/kernel/cpu-hotplug.c
@@ -66,8 +66,6 @@ void arch_cpuhp_cleanup_dead_cpu(unsigned int cpu)
*/
void __noreturn arch_cpu_idle_dead(void)
{
- idle_task_exit();
-
cpuhp_ap_report_dead();
cpu_ops->cpu_stop();
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 32499cad86f0..dd1d40ec5440 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -918,7 +918,6 @@ void __cpu_die(unsigned int cpu)
void __noreturn cpu_die(void)
{
- idle_task_exit();
pcpu_sigp_retry(this_cpu_ptr(&pcpu_devices), SIGP_STOP, 0);
for (;;) ;
}
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c
index 108d808767fa..afd57bdce04e 100644
--- a/arch/sh/kernel/smp.c
+++ b/arch/sh/kernel/smp.c
@@ -108,7 +108,6 @@ int native_cpu_disable(unsigned int cpu)
void play_dead_common(void)
{
- idle_task_exit();
irq_ctx_exit(raw_smp_processor_id());
mb();
diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c
index 371460e34484..e98b5ddebc9e 100644
--- a/arch/sparc/kernel/smp_64.c
+++ b/arch/sparc/kernel/smp_64.c
@@ -1290,8 +1290,6 @@ void cpu_play_dead(void)
int cpu = smp_processor_id();
unsigned long pstate;
- idle_task_exit();
-
if (tlb_type == hypervisor) {
struct trap_per_cpu *tb = &trap_block[cpu];
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index ba01a9e919b7..dcbaf3f27862 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -1407,8 +1407,6 @@ int native_cpu_disable(void)
void play_dead_common(void)
{
- idle_task_exit();
-
cpuhp_ap_report_dead();
local_irq_disable();
diff --git a/arch/xtensa/kernel/smp.c b/arch/xtensa/kernel/smp.c
index e4c25d0c2158..094e1da933a6 100644
--- a/arch/xtensa/kernel/smp.c
+++ b/arch/xtensa/kernel/smp.c
@@ -336,7 +336,6 @@ void __noreturn arch_cpu_idle_dead(void)
*/
void __ref cpu_die(void)
{
- idle_task_exit();
local_irq_disable();
__asm__ __volatile__(
" movi a2, cpu_restart\n"
diff --git a/include/linux/sched/hotplug.h b/include/linux/sched/hotplug.h
index 17e04859b9a4..18fa3e63123e 100644
--- a/include/linux/sched/hotplug.h
+++ b/include/linux/sched/hotplug.h
@@ -18,6 +18,4 @@ extern int sched_cpu_dying(unsigned int cpu);
# define sched_cpu_dying NULL
#endif
-static inline void idle_task_exit(void) {}
-
#endif /* _LINUX_SCHED_HOTPLUG_H */
--
2.52.0
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-16 9:59 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-16 9:56 [PATCH] sched/hotplug: Remove unused idle_task_exit Srikar Dronamraju
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®