Qais Yousef <qais.you...@arm.com> writes: > The core device API performs extra housekeeping bits that are missing > from directly calling cpu_up/down. > > See commit a6717c01ddc2 ("powerpc/rtas: use device model APIs and > serialization during LPM") for an example description of what might go > wrong. > > This also prepares to make cpu_up/down a private interface for anything > but the cpu subsystem. > > Signed-off-by: Qais Yousef <qais.you...@arm.com> > CC: Benjamin Herrenschmidt <b...@kernel.crashing.org> > CC: Paul Mackerras <pau...@samba.org> > CC: Michael Ellerman <m...@ellerman.id.au> > CC: Enrico Weigelt <i...@metux.net> > CC: Ram Pai <linux...@us.ibm.com> > CC: Nicholas Piggin <npig...@gmail.com> > CC: Thiago Jung Bauermann <bauer...@linux.ibm.com> > CC: Christophe Leroy <christophe.le...@c-s.fr> > CC: Thomas Gleixner <t...@linutronix.de> > CC: linuxppc-dev@lists.ozlabs.org > CC: linux-ker...@vger.kernel.org > --- > arch/powerpc/kernel/machine_kexec_64.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-)
My initial though is "what about kdump", but that function is not called during kdump, so there should be no issue with the extra locking leading to deadlocks in a crash. Acked-by: Michael Ellerman <m...@ellerman.id.au> I assume you haven't actually tested it? cheers > diff --git a/arch/powerpc/kernel/machine_kexec_64.c > b/arch/powerpc/kernel/machine_kexec_64.c > index 04a7cba58eff..ebf8cc7acc4d 100644 > --- a/arch/powerpc/kernel/machine_kexec_64.c > +++ b/arch/powerpc/kernel/machine_kexec_64.c > @@ -208,13 +208,15 @@ static void wake_offline_cpus(void) > { > int cpu = 0; > > + lock_device_hotplug(); > for_each_present_cpu(cpu) { > if (!cpu_online(cpu)) { > printk(KERN_INFO "kexec: Waking offline cpu %d.\n", > cpu); > - WARN_ON(cpu_up(cpu)); > + WARN_ON(device_online(get_cpu_device(cpu))); > } > } > + unlock_device_hotplug(); > } > > static void kexec_prepare_cpus(void) > -- > 2.17.1