Message ID | 20200223192942.18420-6-qais.yousef@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3,01/15] cpu: Add new {add,remove}_cpu() functions | expand |
On Sun, Feb 23, 2020 at 07:29:32PM +0000, Qais Yousef wrote: > disable_nonboot_cpus() is not safe to use when doing machine_down(), > because it relies on freeze_secondary_cpus() which in turn is > a suspend/resume related freeze and could abort if the logic detects any > pending activities that can prevent finishing the offlining process. > > Beside disable_nonboot_cpus() is dependent on CONFIG_PM_SLEEP_SMP which > is an othogonal config to rely on to ensure this function works > correctly. > > Use `reboot_cpu` variable instead of hardcoding 0 as the reboot cpu. > > Signed-off-by: Qais Yousef <qais.yousef@arm.com> > CC: Catalin Marinas <catalin.marinas@arm.com> > CC: Will Deacon <will@kernel.org> > CC: linux-arm-kernel@lists.infradead.org > CC: linux-kernel@vger.kernel.org I'm not sure whether these patches have been queued already (still unread in my inbox), so here it is: Acked-by: Catalin Marinas <catalin.marinas@arm.com>
On 03/17/20 11:21, Catalin Marinas wrote: > On Sun, Feb 23, 2020 at 07:29:32PM +0000, Qais Yousef wrote: > > disable_nonboot_cpus() is not safe to use when doing machine_down(), > > because it relies on freeze_secondary_cpus() which in turn is > > a suspend/resume related freeze and could abort if the logic detects any > > pending activities that can prevent finishing the offlining process. > > > > Beside disable_nonboot_cpus() is dependent on CONFIG_PM_SLEEP_SMP which > > is an othogonal config to rely on to ensure this function works > > correctly. > > > > Use `reboot_cpu` variable instead of hardcoding 0 as the reboot cpu. > > > > Signed-off-by: Qais Yousef <qais.yousef@arm.com> > > CC: Catalin Marinas <catalin.marinas@arm.com> > > CC: Will Deacon <will@kernel.org> > > CC: linux-arm-kernel@lists.infradead.org > > CC: linux-kernel@vger.kernel.org > > I'm not sure whether these patches have been queued already (still > unread in my inbox), so here it is: > > Acked-by: Catalin Marinas <catalin.marinas@arm.com> Thanks Catalin! Russel has requested to split the arm patch into 2 so that the change to use reboot_cpu is in a separate patch. I'll do the same for arm64 to stay consistent. I'll add your Acked-by to both patches if that's okay. Please shout if you have any objection. Thanks -- Qais Yousef
diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index bbb0f0c145f6..b33b415fb32e 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -141,11 +141,11 @@ void arch_cpu_idle_dead(void) * to execute e.g. a RAM-based pin loop is not sufficient. This allows the * kexec'd kernel to use any and all RAM as it sees fit, without having to * avoid any code or data used by any SW CPU pin loop. The CPU hotplug - * functionality embodied in disable_nonboot_cpus() to achieve this. + * functionality embodied in smpt_shutdown_nonboot_cpus() to achieve this. */ void machine_shutdown(void) { - disable_nonboot_cpus(); + smp_shutdown_nonboot_cpus(reboot_cpu); } /*
disable_nonboot_cpus() is not safe to use when doing machine_down(), because it relies on freeze_secondary_cpus() which in turn is a suspend/resume related freeze and could abort if the logic detects any pending activities that can prevent finishing the offlining process. Beside disable_nonboot_cpus() is dependent on CONFIG_PM_SLEEP_SMP which is an othogonal config to rely on to ensure this function works correctly. Use `reboot_cpu` variable instead of hardcoding 0 as the reboot cpu. Signed-off-by: Qais Yousef <qais.yousef@arm.com> CC: Catalin Marinas <catalin.marinas@arm.com> CC: Will Deacon <will@kernel.org> CC: linux-arm-kernel@lists.infradead.org CC: linux-kernel@vger.kernel.org --- arch/arm64/kernel/process.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)