• Michael Ellerman's avatar
    powerpc/64e: Fix oops due to deferral of paca allocation · 1d0afc0d
    Michael Ellerman authored
    On 64-bit Book3E systems, in setup_tlb_core_data() we reference other
    CPUs pacas. But in commit 59f57774 ("powerpc/64: Defer paca
    allocation until memory topology is discovered") the allocation of
    non-boot-CPU pacas was deferred until later in boot.
    
    This leads to an oops:
    
      CPU maps initialized for 1 thread per core
      Unable to handle kernel paging request for data at address 0x8888888888888918
      Faulting instruction address: 0xc000000000e2f0d0
      Oops: Kernel access of bad area, sig: 11 [#1]
      NIP .setup_tlb_core_data+0xdc/0x160
      Call Trace:
        .setup_tlb_core_data+0x5c/0x160 (unreliable)
        .setup_arch+0x80/0x348
        .start_kernel+0x7c/0x598
        start_here_common+0x1c/0x40
    
    Luckily setup_tlb_core_data() is called immediately prior to
    smp_setup_pacas(). So simply switching their order is sufficient to
    fix the oops and seems unlikely to have any other unwanted side
    effects.
    
    Fixes: 59f57774 ("powerpc/64: Defer paca allocation until memory topology is discovered")
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    1d0afc0d
setup-common.c 23.5 KB