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. Acked-by: Helge Deller <deller@xxxxxx> 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 --- 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