• Srikar Dronamraju's avatar
    powerpc/numa: Fix a regression on memoryless node 0 · 10f78fd0
    Srikar Dronamraju authored
    Commit e75130f2 ("powerpc/numa: Offline memoryless cpuless node 0")
    offlines node 0 and expects nodes to be subsequently onlined when CPUs
    or nodes are detected.
    
    Commit 6398eaa2 ("powerpc/numa: Prefer node id queried from vphn")
    skips onlining node 0 when CPUs are associated with node 0.
    
    On systems with node 0 having CPUs but no memory, this causes node 0 be
    marked offline. This causes issues at boot time when trying to set
    memory node for online CPUs while building the zonelist.
    
    0:mon> t
    [link register   ] c000000000400354 __build_all_zonelists+0x164/0x280
    [c00000000161bda0] c0000000016533c8 node_states+0x20/0xa0 (unreliable)
    [c00000000161bdc0] c000000000400384 __build_all_zonelists+0x194/0x280
    [c00000000161be30] c000000001041800 build_all_zonelists_init+0x4c/0x118
    [c00000000161be80] c0000000004020d0 build_all_zonelists+0x190/0x1b0
    [c00000000161bef0] c000000001003cf8 start_kernel+0x18c/0x6a8
    [c00000000161bf90] c00000000000adb4 start_here_common+0x1c/0x3e8
    0:mon> r
    R00 = c000000000400354   R16 = 000000000b57a0e8
    R01 = c00000000161bda0   R17 = 000000000b57a6b0
    R02 = c00000000161ce00   R18 = 000000000b5afee8
    R03 = 0000000000000000   R19 = 000000000b6448a0
    R04 = 0000000000000000   R20 = fffffffffffffffd
    R05 = 0000000000000000   R21 = 0000000001400000
    R06 = 0000000000000000   R22 = 000000001ec00000
    R07 = 0000000000000001   R23 = c000000001175580
    R08 = 0000000000000000   R24 = c000000001651ed8
    R09 = c0000000017e84d8   R25 = c000000001652480
    R10 = 0000000000000000   R26 = c000000001175584
    R11 = c000000c7fac0d10   R27 = c0000000019568d0
    R12 = c000000000400180   R28 = 0000000000000000
    R13 = c000000002200000   R29 = c00000000164dd78
    R14 = 000000000b579f78   R30 = 0000000000000000
    R15 = 000000000b57a2b8   R31 = c000000001175584
    pc  = c000000000400194 local_memory_node+0x24/0x80
    cfar= c000000000074334 mcount+0xc/0x10
    lr  = c000000000400354 __build_all_zonelists+0x164/0x280
    msr = 8000000002001033   cr  = 44002284
    ctr = c000000000400180   xer = 0000000000000001   trap =  380
    dar = 0000000000001388   dsisr = c00000000161bc90
    0:mon>
    
    Fix this by setting node to be online while onlining CPUs that belong to
    node 0.
    
    Fixes: e75130f2 ("powerpc/numa: Offline memoryless cpuless node 0")
    Fixes: 6398eaa2 ("powerpc/numa: Prefer node id queried from vphn")
    Reported-by: default avatarMilan Mohanty <milmohan@in.ibm.com>
    Signed-off-by: default avatarSrikar Dronamraju <srikar@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20201127053738.10085-1-srikar@linux.vnet.ibm.com
    10f78fd0
numa.c 30.3 KB