• Michael Neuling's avatar
    powerpc: Don't use kernel stack with translation off · 54a83404
    Michael Neuling authored
    In f761622e we changed
    early_setup_secondary so it's called using the proper kernel stack
    rather than the emergency one.
    
    Unfortunately, this stack pointer can't be used when translation is off
    on PHYP as this stack pointer might be outside the RMO.  This results in
    the following on all non zero cpus:
      cpu 0x1: Vector: 300 (Data Access) at [c00000001639fd10]
          pc: 000000000001c50c
          lr: 000000000000821c
          sp: c00000001639ff90
         msr: 8000000000001000
         dar: c00000001639ffa0
       dsisr: 42000000
        current = 0xc000000016393540
        paca    = 0xc000000006e00200
          pid   = 0, comm = swapper
    
    The original patch was only tested on bare metal system, so it never
    caught this problem.
    
    This changes __secondary_start so that we calculate the new stack
    pointer but only start using it after we've called early_setup_secondary.
    
    With this patch, the above problem goes away.
    Signed-off-by: default avatarMichael Neuling <mikey@neuling.org>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    54a83404
head_64.S 19.5 KB