• Michael Ellerman's avatar
    powerpc/pseries: Initialise CPU hotplug callbacks earlier · 3b3a4d0f
    Michael Ellerman authored
    As part of the generic HOTPLUG_SMT code, there is support for disabling
    secondary SMT threads at boot time, by passing "nosmt" on the kernel
    command line.
    
    The way that is implemented is the secondary threads are brought partly
    online, and then taken back offline again. That is done to support x86
    CPUs needing certain initialisation done on all threads. However powerpc
    has similar needs, see commit d70a54e2 ("powerpc/powernv: Ignore
    smt-enabled on Power8 and later").
    
    For that to work the powerpc CPU hotplug callbacks need to be registered
    before secondary CPUs are brought online, otherwise __cpu_disable()
    fails due to smp_ops->cpu_disable being NULL.
    
    So split the basic initialisation into pseries_cpu_hotplug_init() which
    can be called early from setup_arch(). The DLPAR related initialisation
    can still be done later, because it needs to do allocations.
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20230705145143.40545-9-ldufour@linux.ibm.com
    3b3a4d0f
setup.c 30.4 KB