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@xxxxxxxxxxxxxxxxxx> --- 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);
Subject: [PATCH] s390: Add restart stack support From: Michael Holzheu <holzheu@xxxxxxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxx> --- 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);
-- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility