On Tue, Sep 20, 2011 at 8:42 PM, Dave Anderson <anderson@xxxxxxxxxx> wrote: > > > ----- Original Message ----- >> On Tue, Sep 20, 2011 at 10:41:51AM -0400, Dave Anderson wrote: >> > > >> > > static void >> > > get_netdump_regs_arm(struct bt_info *bt, ulong *eip, ulong *esp) >> > > { >> > > machdep->get_stack_frame(bt, eip, esp); >> > > } >> > > >> > > If we're not going to use the ELF notes, why fail if they're not >> > > there? >> > >> > I'm not sure what you mean about reading "directly from within the >> > PT_LOAD segments", but I agree with you that the preliminary "if" >> > section of get_netdump_regs_arm() which sets bt->machdep is a >> > no-op -- given that arm_get_dumpfile_stack_frame() just ignores >> > it, and resets bt->machdep from that ARM-specific ms->crash_task_regs >> > area. >> > >> > Mika, you agree? >> >> Absolutely - we already have similar for diskdump: >> >> static void >> get_diskdump_regs_arm(struct bt_info *bt, ulong *eip, ulong *esp) >> { >> machdep->get_stack_frame(bt, eip, esp); >> } >> >> I tested Per's suggestion on my few kdump/netdump vmcores and it >> works well. >> >> If you prefer to have a patch for this change, it is included below >> (all credits goes to Per). >> >> diff --git a/netdump.c b/netdump.c >> index 1e9960c..a194364 100644 >> --- a/netdump.c >> +++ b/netdump.c >> @@ -2580,34 +2580,6 @@ get_netdump_regs_ppc64(struct bt_info *bt, >> ulong *eip, ulong *esp) >> static void >> get_netdump_regs_arm(struct bt_info *bt, ulong *eip, ulong *esp) >> { >> - Elf64_Nhdr *note; >> - size_t len; >> - >> - if ((bt->task == tt->panic_task) || >> - (is_task_active(bt->task) && nd->num_prstatus_notes > 1)) { >> - /* >> - * Registers are saved during the dump process for the >> - * panic task. Whereas in kdump, regs are captured for all >> - * CPUs if they responded to an IPI. >> - */ >> - if (nd->num_prstatus_notes > 1) { >> - if (!nd->nt_prstatus_percpu[bt->tc->processor]) >> - error(FATAL, >> - "cannot determine NT_PRSTATUS ELF note " >> - "for %s task: %lx\n", >> - (bt->task == tt->panic_task) ? >> - "panic" : "active", bt->task); >> - note = (Elf64_Nhdr *) >> - >> nd->nt_prstatus_percpu[bt->tc->processor]; >> - } else >> - note = (Elf64_Nhdr *)nd->nt_prstatus; >> - >> - len = sizeof(Elf64_Nhdr); >> - len = roundup(len + note->n_namesz, 4); >> - bt->machdep = (void *)((char *)note + len + >> - MEMBER_OFFSET("elf_prstatus", "pr_reg")); >> - } >> - >> machdep->get_stack_frame(bt, eip, esp); >> } > > Queued for crash-5.1.9 -- thanks guys, > Dave > > > > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility > Much obliged. Regards, Per -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility