On Wed, 2016-08-24 at 11:50 -0500, Josh Poimboeuf wrote: > Change printk_stack_address() to be useful when called by an unwinder > outside the context of dump_trace(). > > Specifically: > > - printk_stack_address()'s 'data' argument is always used as the log > level string. Make that explicit.
If this is true, and I'm not sure it is as I believe there are static strings emitted like EOE and IRQ, shouldn't this bubble up through the calling tree? > - Call touch_nmi_watchdog(). [] > diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c [] > @@ -26,10 +26,11 @@ int kstack_depth_to_print = 3 * STACKSLOTS_PER_LINE; > static int die_counter; > > static void printk_stack_address(unsigned long address, int reliable, > - void *data) > + char *log_lvl) > { > + touch_nmi_watchdog(); > printk("%s [<%p>] %s%pB\n", > - (char *)data, (void *)address, reliable ? "" : "? ", > + log_lvl, (void *)address, reliable ? "" : "? ", > (void *)address); > } > > @@ -148,7 +149,6 @@ static int print_trace_stack(void *data, char *name) > */ > static int print_trace_address(void *data, unsigned long addr, int reliable) > { > - touch_nmi_watchdog(); > printk_stack_address(addr, reliable, data); > return 0; > } like for data here?