linux-stable/arch/s390/kernel
Christian Borntraeger 9e74a6b898 [S390] kernel: show last breaking-event-address on oops
Newer s390 models have a breaking-event-address-recording register.
Each time an instruction causes a break in the sequential instruction
execution, the address is saved in that hardware register. On a program
interrupt the address is copied to the lowcore address 272-279, which
makes it software accessible.

This patch changes the program check handler and the stack overflow
checker to copy the value into the pt_regs argument.
The oops output is enhanced to show the last known breaking address.
It might give additional information if the stack trace is corrupted.

The feature is only available on 64 bit.

The new oops output looks like:

[---------snip----------]
Modules linked in: vmcp sunrpc qeth_l2 dm_mod qeth ccwgroup
CPU: 2 Not tainted 2.6.24zlive-host #8
Process modprobe (pid: 4788, task: 00000000bf3d8718, ksp: 00000000b2b0b8e0)
Krnl PSW : 0704200180000000 000003e000020028 (vmcp_init+0x28/0xe4 [vmcp])
           R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:0 CC:2 PM:0 EA:3
Krnl GPRS: 0000000004000002 000003e000020000 0000000000000000 0000000000000001
           000000000015734c ffffffffffffffff 000003e0000b3b00 0000000000000000
           000003e00007ca30 00000000b5bb5d40 00000000b5bb5800 000003e0000b3b00
           000003e0000a2000 00000000003ecf50 00000000b2b0bd50 00000000b2b0bcb0
Krnl Code: 000003e000020018: c0c000040ff4       larl    %r12,3e0000a2000
           000003e00002001e: e3e0f0000024       stg     %r14,0(%r15)
           000003e000020024: a7f40001           brc     15,3e000020026
          >000003e000020028: e310c0100004       lg      %r1,16(%r12)
           000003e00002002e: c020000413dc       larl    %r2,3e0000a27e6
           000003e000020034: c0a00004aee6       larl    %r10,3e0000b5e00
           000003e00002003a: a7490001           lghi    %r4,1
           000003e00002003e: a75900f0           lghi    %r5,240
Call Trace:
([<000000000014b300>] blocking_notifier_call_chain+0x2c/0x40)
 [<000000000015735c>] sys_init_module+0x19d8/0x1b08
 [<0000000000110afc>] sysc_noemu+0x10/0x16
 [<000002000011cda2>] 0x2000011cda2
Last Breaking-Event-Address:
 [<000003e000020024>] vmcp_init+0x24/0xe4 [vmcp]
[---------snip----------]

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
2008-04-17 07:47:07 +02:00
..
asm-offsets.c rename thread_info to stack 2007-05-09 12:30:56 -07:00
audit.c [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
audit.h [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
base.S [S390] Convert memory detection into C code. 2007-02-05 21:18:37 +01:00
binfmt_elf32.c [S390] dynamic page tables. 2008-02-09 18:24:41 +01:00
bitmap.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
compat_audit.c [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
compat_exec_domain.c [S390] Get rid of a lot of sparse warnings. 2007-02-05 21:16:47 +01:00
compat_linux.c remove include/asm-*/ipc.h 2007-10-17 08:42:55 -07:00
compat_linux.h [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
compat_ptrace.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
compat_signal.c [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
compat_wrapper.S [S390] Wire up new timerfd syscalls. 2008-02-09 18:24:37 +01:00
cpcmd.c [S390] cpcmd: fix inline assembly usage. 2007-10-12 16:13:09 +02:00
crash.c [S390] Get rid of a lot of sparse warnings. 2007-02-05 21:16:47 +01:00
debug.c [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
diag.c [S390] vmur: fix diag14 exceptions with addresses > 2GB. 2007-08-22 13:51:47 +02:00
dis.c [S390] disassembler: Remove redundant variable assignment 2007-10-12 16:13:06 +02:00
early.c [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
ebcdic.c [S390] Get rid of a lot of sparse warnings. 2007-02-05 21:16:47 +01:00
entry.h [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
entry.S [S390] Fix couple of section mismatches. 2008-02-05 16:50:56 +01:00
entry64.S [S390] kernel: show last breaking-event-address on oops 2008-04-17 07:47:07 +02:00
head.S [S390] Get rid of new section mismatch warnings. 2007-07-27 12:29:18 +02:00
head31.S [S390] Fixed handling of access register mode faults. 2007-03-05 23:35:54 +01:00
head64.S [S390] Fix tlb flushing with idte. 2008-01-26 14:11:10 +01:00
init_task.c Remove fs.h from mm.h 2007-07-29 17:09:29 -07:00
ipl.c [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
irq.c [SOFTIRQ]: Remove do_softirq() symbol export. 2007-10-10 16:48:36 -07:00
kprobes.c [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
machine_kexec.c [S390] nss: disable kexec. 2007-03-05 23:35:45 +01:00
Makefile [S390] cpu topology support for s390. 2008-04-17 07:47:01 +02:00
module.c [S390] Use generic bug. 2007-04-27 16:01:42 +02:00
process.c [S390] kernel: show last breaking-event-address on oops 2008-04-17 07:47:07 +02:00
ptrace.c [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
reipl.S [S390] reipl: move dump_prefix_page out of text section. 2007-03-05 23:35:43 +01:00
reipl64.S [S390] reipl: move dump_prefix_page out of text section. 2007-03-05 23:35:43 +01:00
relocate_kernel.S [S390] Reset infrastructure for re-IPL. 2006-12-04 15:40:26 +01:00
relocate_kernel64.S [S390] Reset infrastructure for re-IPL. 2006-12-04 15:40:26 +01:00
s390_ext.c [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
s390_ksyms.c [S390] vmur: fix diag14 exceptions with addresses > 2GB. 2007-08-22 13:51:47 +02:00
semaphore.c [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
setup.c [S390] Convert s390 to GENERIC_CLOCKEVENTS. 2008-04-17 07:47:05 +02:00
signal.c [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
smp.c [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
stacktrace.c [S390] latencytop s390 support. 2008-02-05 16:50:59 +01:00
sys_s390.c [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
syscalls.S [S390] Wire up new timerfd syscalls. 2008-02-09 18:24:37 +01:00
time.c [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
topology.c [S390] Vertical cpu management. 2008-04-17 07:47:01 +02:00
traps.c [S390] kernel: show last breaking-event-address on oops 2008-04-17 07:47:07 +02:00
vmlinux.lds.S [S390] Fix linker script. 2008-02-05 16:50:55 +01:00
vtime.c sched: restore deterministic CPU accounting on powerpc 2007-11-09 22:39:38 +01:00