• Anton Blanchard's avatar
    powerpc: Secondary CPUs must set cpu_callin_map after setting active and online · 7c5c92ed
    Anton Blanchard authored
    I have a busy ppc64le KVM box where guests sometimes hit the infamous
    "kernel BUG at kernel/smpboot.c:134!" issue during boot:
    
      BUG_ON(td->cpu != smp_processor_id());
    
    Basically a per CPU hotplug thread scheduled on the wrong CPU. The oops
    output confirms it:
    
      CPU: 0
      Comm: watchdog/130
    
    The problem is that we aren't ensuring the CPU active and online bits are set
    before allowing the master to continue on. The master unparks the secondary
    CPUs kthreads and the scheduler looks for a CPU to run on. It calls
    select_task_rq and realises the suggested CPU is not in the cpus_allowed
    mask. It then ends up in select_fallback_rq, and since the active and
    online bits aren't set we choose some other CPU to run on.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    7c5c92ed
smp.c 18.6 KB