----- Original Message -----
Hi Dave,
With Linux 3.0.1 on s390 we have a new kernel stack for the PSW restart
interrupt. See kernel git commit 7dd6b3343fdc190712d1620ee8848d25c4c77c33
for details. With this patch the crash "bt" command will find this
stack.
Signed-off-by: Michael Holzheu <holzheu(a)linux.vnet.ibm.com>
---
Queued for the next release (crash-5.1.8).
Thanks,
Dave
s390x.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
--- a/s390x.c
+++ b/s390x.c
@@ -825,9 +825,16 @@ static void get_int_stack(char *stack_na
unsigned long stack_addr;
*start = *end = 0;
- if (!MEMBER_EXISTS("_lowcore", stack_name))
- return;
- stack_addr = ULONG(lc + MEMBER_OFFSET("_lowcore", stack_name));
+ if (strcmp(stack_name, "restart_stack") == 0) {
+ stack_addr = symbol_value("restart_stack");
+ if (!stack_addr)
+ return;
+ stack_addr = readmem_ul(stack_addr);
+ } else {
+ if (!MEMBER_EXISTS("_lowcore", stack_name))
+ return;
+ stack_addr = ULONG(lc + MEMBER_OFFSET("_lowcore", stack_name));
+ }
if (stack_addr == 0)
return;
*start = stack_addr - INT_STACK_SIZE;
@@ -993,6 +1000,8 @@ static void s390x_back_trace_cmd(struct
}
s390x_print_lowcore(lowcore,bt,1);
fprintf(fp,"\n");
+ get_int_stack("restart_stack", lowcore, &low, &high);
+ sp = show_trace(bt, cnt, sp, low, high);
get_int_stack("panic_stack", lowcore, &low, &high);
sp = show_trace(bt, cnt, sp, low, high);
get_int_stack("async_stack", lowcore, &low, &high);