Skip to content
  • Michael Holzheu's avatar
    [S390] kernel: Initialize register 14 when starting new CPU · 8eb4bd66
    Michael Holzheu authored
    
    
    When starting a new CPU we currently jump to start_secondary() without
    setting register 14 (the return address) correctly. Therefore on the stack
    frame for start_secondary an invalid return address is stored. This leads
    to wrong stack back traces in kernel dumps.
    
    Example:
    
     #00 [1f33fe48] cpu_idle at 10614a
     #01 [1f33fe90] start_secondary at 54fa88
     #02 [1f33feb8] (null) at 0                 <--- invalid
    
    To fix this start_secondary() is called now with basr/brasl that sets
    register 14 correctly. The output of the stack backtrace looks then
    like the following:
    
     #00 [1f33fe48] cpu_idle at 10614a
     #01 [1f33fe90] start_secondary at 54fa88
     #02 [1f33feb8] restart_base at 54f41e      <--- correct
    
    Signed-off-by: default avatarMichael Holzheu <holzheu@linux.vnet.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    8eb4bd66