Hi Dave,
On Mon, 2010-04-26 at 11:56 -0400, Dave Anderson wrote:
Sorry -- I take it back. Running a test shows that it breaks
"bt -a"
on Xen dumpfiles where the cpus are marked offline prior to dumping
the kernel memory.
I think this should be moved to the processor-specific backtrace functions,
which can just display "OFFLINE" or something to that effect.
Ok, fine. What about the following...
---
s390.c | 5 +++++
s390x.c | 5 +++++
2 files changed, 10 insertions(+)
--- a/s390.c
+++ b/s390.c
@@ -603,11 +603,16 @@ s390_back_trace_cmd(struct bt_info *bt)
unsigned long async_start = 0, async_end = 0;
unsigned long panic_start = 0, panic_end = 0;
unsigned long stack_end, stack_start, stack_base;
+ int cpu = bt->tc->processor;
if (bt->hp && bt->hp->eip) {
error(WARNING,
"instruction pointer argument ignored on this architecture!\n");
}
+ if (is_task_active(bt->task) && (!(kt->cpu_flags[cpu] & ONLINE))) {
+ fprintf(fp, " CPU offline\n");
+ return;
+ }
ksp = bt->stkptr;
/* print lowcore and get async stack when task has cpu */
--- a/s390x.c
+++ b/s390x.c
@@ -836,11 +836,16 @@ s390x_back_trace_cmd(struct bt_info *bt)
unsigned long panic_start = 0, panic_end = 0;
unsigned long stack_end, stack_start, stack_base;
unsigned long r14;
+ int cpu = bt->tc->processor;
if (bt->hp && bt->hp->eip) {
error(WARNING,
"instruction pointer argument ignored on this architecture!\n");
}
+ if (is_task_active(bt->task) && (!(kt->cpu_flags[cpu] & ONLINE))) {
+ fprintf(fp, " CPU offline\n");
+ return;
+ }
ksp = bt->stkptr;
/* print lowcore and get async stack when task has cpu */