Use common outgoing-CPU-notification code
PATCH 1/1 Use common outgoing-CPU-notification code
This commit removes the open-coded CPU-offline notification with new common code. In particular, this change avoids calling scheduler code using RCU from an offline CPU that RCU is ignoring. This is a minimal change. A more intrusive change might invoke the cpu_check_up_prepare() and cpu_set_state_online() functions at CPU-online time, which would allow onlining throw an error if the CPU did not go offline properly.
arch/arm/kernel/smp.c +2 -4
@@ -267,15 +267,13 @@ int __cpu_disable(void)return 0 ; } -static DECLARE_COMPLETION (cpu_died); -/* * called on the thread which is asking for a CPU to be shutdown - * waits until shutdown has completed, or it is timed out. */ void __cpu_die (unsigned int cpu) { -if (!wait_for_completion_timeout (&cpu_died,msecs_to_jiffies (5000 ))) { +if (!cpu_wait_death (cpu,5 )) {pr_err ("CPU%u: cpu didn't die\n" , cpu);return ; }
@@ -322,7 +320,7 @@ void arch_cpu_idle_dead(void)* this returns, power and/or clocks can be removed at any point * from this CPU and its cache by platform_cpu_kill(). */ -complete (&cpu_died); + (void )cpu_report_death ();/* * Ensure that the cache lines associated with that completion are
Quoted 7 lines · Paul E. McKenney
This commit removes the open-coded CPU-offline notification with new common code. In particular, this change avoids calling scheduler code using RCU from an offline CPU that RCU is ignoring. This is a minimal change. A more intrusive change might invoke the
cpu_check_up_prepare()andcpu_set_state_online()functions at CPU-online time, which would allow onlining throw an error if the CPU did not go offline properly.
Quoted 5 lines
Signed-off-by Paul E. McKenney <[email protected]>Cc Russell King <[email protected]>Cc Mark Rutland <[email protected]>Tested-by Dietmar Eggemann <[email protected]>
FWIW:
On the assumption that Russell is ok with this, I think this should be dropped into the ARM patch system [1].
Paul, are you familiar with that, or would you prefer that someone else submits the patch there? I can do so if you'd like.
Thanks,
Mark.
[1] https://www.armlinux.org.uk/developer/patches/info.php
Quoted 32 lines
arch/arm/kernel/smp.c +2
-4@@ -267,15 +267,13 @@ int __cpu_disable(void)return 0 ; } -static DECLARE_COMPLETION (cpu_died); -/* * called on the thread which is asking for a CPU to be shutdown - * waits until shutdown has completed, or it is timed out. */ void __cpu_die (unsigned int cpu) { -if (!wait_for_completion_timeout (&cpu_died,msecs_to_jiffies (5000 ))) { +if (!cpu_wait_death (cpu,5 )) {pr_err ("CPU%u: cpu didn't die\n" , cpu);return ; }@@ -322,7 +320,7 @@ void arch_cpu_idle_dead(void)* this returns, power and/or clocks can be removed at any point * from this CPU and its cache by platform_cpu_kill(). */ -complete (&cpu_died); + (void )cpu_report_death ();/* * Ensure that the cache lines associated with that completion are
Quoted 16 lines · Mark Rutland
Quoted 7 lines · Paul E. McKenney
This commit removes the open-coded CPU-offline notification with new common code. In particular, this change avoids calling scheduler code using RCU from an offline CPU that RCU is ignoring. This is a minimal change. A more intrusive change might invoke the
cpu_check_up_prepare()andcpu_set_state_online()functions at CPU-online time, which would allow onlining throw an error if the CPU did not go offline properly.Quoted 5 lines
Signed-off-by Paul E. McKenney <[email protected]>Cc Russell King <[email protected]>Cc Mark Rutland <[email protected]>Tested-by Dietmar Eggemann <[email protected]>FWIW:
Quoted 7 lines
Acked-by Mark Rutland <[email protected]>On the assumption that Russell is ok with this, I think this should be dropped into the ARM patch system [1].
Paul, are you familiar with that, or would you prefer that someone else submits the patch there? I can do so if you'd like.
I never have used this system, so please do drop it in there! Let me know when you have done so, and I will then drop it from -rcu.
Thanx, Paul
Quoted 34 lines
Thanks,
Mark.[1] https://www.armlinux.org.uk/developer/patches/info.php
Quoted 29 lines
arch/arm/kernel/smp.c +2
-4@@ -267,15 +267,13 @@ int __cpu_disable(void)return 0 ; } -static DECLARE_COMPLETION (cpu_died); -/* * called on the thread which is asking for a CPU to be shutdown - * waits until shutdown has completed, or it is timed out. */ void __cpu_die (unsigned int cpu) { -if (!wait_for_completion_timeout (&cpu_died,msecs_to_jiffies (5000 ))) { +if (!cpu_wait_death (cpu,5 )) {pr_err ("CPU%u: cpu didn't die\n" , cpu);return ; }@@ -322,7 +320,7 @@ void arch_cpu_idle_dead(void)* this returns, power and/or clocks can be removed at any point * from this CPU and its cache by platform_cpu_kill(). */ -complete (&cpu_died); + (void )cpu_report_death ();
Quoted 4 lines
arch/arm/kernel/smp.c void arch_cpu_idle_dead(void) · line 326
Quoted 3 lines
arch/arm/kernel/smp.c +0
-0/* * Ensure that the cache lines associated with that completion are
_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Quoted 19 lines · Paul E. McKenney
Quoted 18 lines · Mark Rutland
Quoted 7 lines · Paul E. McKenney
This commit removes the open-coded CPU-offline notification with new common code. In particular, this change avoids calling scheduler code using RCU from an offline CPU that RCU is ignoring. This is a minimal change. A more intrusive change might invoke the
cpu_check_up_prepare()andcpu_set_state_online()functions at CPU-online time, which would allow onlining throw an error if the CPU did not go offline properly.Quoted 5 lines
Signed-off-by Paul E. McKenney <[email protected]>Cc Russell King <[email protected]>Cc Mark Rutland <[email protected]>Tested-by Dietmar Eggemann <[email protected]>FWIW:
Acked-by Mark Rutland <[email protected]>
Quoted 8 lines
Quoted 5 lines
On the assumption that Russell is ok with this, I think this should be dropped into the ARM patch system [1].
Paul, are you familiar with that, or would you prefer that someone else submits the patch there? I can do so if you'd like.
I never have used this system, so please do drop it in there! Let me know when you have done so, and I will then drop it from -rcu.
After testing that multi_v7_defconfig built, I've just submitted this as 8872/1:
https://www.armlinux.org.uk/developer/patches/viewpatch.php?id=8872/1
Thanks,
Mark.
Quoted 26 lines · Mark Rutland
Quoted 25 lines · Paul E. McKenney
Quoted 23 lines · Mark Rutland
Quoted 7 lines · Paul E. McKenney
This commit removes the open-coded CPU-offline notification with new common code. In particular, this change avoids calling scheduler code using RCU from an offline CPU that RCU is ignoring. This is a minimal change. A more intrusive change might invoke the
cpu_check_up_prepare()andcpu_set_state_online()functions at CPU-online time, which would allow onlining throw an error if the CPU did not go offline properly.Quoted 5 lines
Signed-off-by Paul E. McKenney <[email protected]>Cc Russell King <[email protected]>Cc Mark Rutland <[email protected]>Tested-by Dietmar Eggemann <[email protected]>FWIW:
Acked-by Mark Rutland <[email protected]>On the assumption that Russell is ok with this, I think this should be dropped into the ARM patch system [1].
Paul, are you familiar with that, or would you prefer that someone else submits the patch there? I can do so if you'd like.
Quoted 7 lines
Quoted 2 lines
I never have used this system, so please do drop it in there! Let me know when you have done so, and I will then drop it from -rcu.
After testing that
multi_v7_defconfigbuilt, I've just submitted this as 8872/1:https://www.armlinux.org.uk/developer/patches/viewpatch.php?id=8872/1
Very good, thank you! I will drop this from my -rcu tree.
Thanx, Paul