summaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/dis.c
diff options
context:
space:
mode:
authorMichael Holzheu <holzheu@linux.vnet.ibm.com>2011-05-10 17:13:39 +0200
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>2011-05-10 17:13:42 +0200
commit8eb4bd666ffdca7171cd8118138a91842012b028 (patch)
treec362b8e8ea64731854a2e894777252f315eca1dc /arch/s390/kernel/dis.c
parent[S390] dasd: prevent IO error during reserve/release loop (diff)
downloadlinux-8eb4bd666ffdca7171cd8118138a91842012b028.tar.xz
linux-8eb4bd666ffdca7171cd8118138a91842012b028.zip
[S390] kernel: Initialize register 14 when starting new CPU
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: Michael Holzheu <holzheu@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/dis.c')
0 files changed, 0 insertions, 0 deletions