On 20.11.19 12:09, Qais Yousef wrote: > On 10/30/19 15:38, Qais Yousef wrote: >> 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.yousef@xxxxxxx> >> CC: "James E.J. Bottomley" <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> >> CC: Helge Deller <deller@xxxxxx> >> CC: Richard Fontana <rfontana@xxxxxxxxxx> >> CC: Armijn Hemel <armijn@xxxxxxxxxx> >> CC: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> >> CC: Thomas Gleixner <tglx@xxxxxxxxxxxxx> >> CC: linux-parisc@xxxxxxxxxxxxxxx >> CC: linux-kernel@xxxxxxxxxxxxxxx >> --- >> >> Couldn't compile test this one. >> >> I'm not confident that this is a correct patch to be honest. This __init >> indicates we're booting the secondary cpus and that might be too early in the >> process to use the core API..? > > Helge, James > > Do you have any comment on this? I have no means to test it and I'd > appreciate if you can spin it through one of your systems. I pulled your cpu-hp-cleanup branch from git://linux-arm.org/linux-qy and compiled a 32- and a 64-bit parisc kernel. I faced one compile warning: linux-2.6/kernel/cpu.c: In function ‘hibernation_bringup_sleep_cpu’: linux-2.6/kernel/cpu.c:1237:1: warning: control reaches end of non-void function [-Wreturn-type] Other than that the 32- and 64-bit SMP kernel booted nicely. You may add to the series: Acked-by: Helge Deller <deller@xxxxxx> # parisc Thanks, Helge >> >> arch/parisc/kernel/processor.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/arch/parisc/kernel/processor.c b/arch/parisc/kernel/processor.c >> index 13f771f74ee3..4dde5fe78f0c 100644 >> --- a/arch/parisc/kernel/processor.c >> +++ b/arch/parisc/kernel/processor.c >> @@ -212,7 +212,9 @@ static int __init processor_probe(struct parisc_device *dev) >> #ifdef CONFIG_SMP >> if (cpuid) { >> set_cpu_present(cpuid, true); >> - cpu_up(cpuid); >> + lock_device_hotplug(); >> + device_online(get_cpu_device(cpuid)); >> + unlock_device_hotplug(); >> } >> #endif >> >> -- >> 2.17.1 >>