Messages in this thread Patch in this message | | | Date | Mon, 11 May 2020 22:45:34 +0300 | From | Mike Rapoport <> | Subject | Re: [PATCHv3 42/50] xtensa: Add loglvl to show_trace() |
| |
Hi,
On Sat, Apr 18, 2020 at 09:19:36PM +0100, Dmitry Safonov wrote: > Currently, the log-level of show_stack() depends on a platform > realization. It creates situations where the headers are printed with > lower log level or higher than the stacktrace (depending on > a platform or user). > > Furthermore, it forces the logic decision from user to an architecture > side. In result, some users as sysrq/kdb/etc are doing tricks with > temporary rising console_loglevel while printing their messages. > And in result it not only may print unwanted messages from other CPUs, > but also omit printing at all in the unlucky case where the printk() > was deferred. > > Introducing log-level parameter and KERN_UNSUPPRESSED [1] seems > an easier approach than introducing more printk buffers. > Also, it will consolidate printings with headers. > > Add log level argument to show_trace() as a preparation for introducing > show_stack_loglvl(). > > Cc: Chris Zankel <chris@zankel.net> > Cc: Max Filippov <jcmvbkbc@gmail.com> > Cc: linux-xtensa@linux-xtensa.org > [1]: https://lore.kernel.org/lkml/20190528002412.1625-1-dima@arista.com/T/#u > Signed-off-by: Dmitry Safonov <dima@arista.com> > --- > arch/xtensa/kernel/traps.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/arch/xtensa/kernel/traps.c b/arch/xtensa/kernel/traps.c > index 0976e27b8d5d..c397a02457bc 100644 > --- a/arch/xtensa/kernel/traps.c > +++ b/arch/xtensa/kernel/traps.c > -void show_trace(struct task_struct *task, unsigned long *sp) > +static void show_trace(struct task_struct *task, unsigned long *sp, > + const char *loglvl) > { > if (!sp) > sp = stack_pointer(task); > > - pr_info("Call Trace:\n"); > - walk_stackframe(sp, show_trace_cb, NULL); > + printk("%sCall Trace:\n", loglvl); > + walk_stackframe(sp, show_trace_cb, (void *)loglvl); > } > > #define STACK_DUMP_ENTRY_SIZE 4 > @@ -511,7 +515,7 @@ void show_stack(struct task_struct *task, unsigned long *sp) > print_hex_dump(KERN_INFO, " ", DUMP_PREFIX_NONE, > STACK_DUMP_LINE_SIZE, STACK_DUMP_ENTRY_SIZE, > sp, len, false); > - show_trace(task, sp); > + show_trace(task, stack, KERN_INFO);
it should have been
show_trace(task, sp, KERN_INFO);
Andrew, can you fold the following patch as a fixup please:
diff --git a/arch/xtensa/kernel/traps.c b/arch/xtensa/kernel/traps.c index f9217b6b45c8..efc3a29cde80 100644 --- a/arch/xtensa/kernel/traps.c +++ b/arch/xtensa/kernel/traps.c @@ -515,7 +515,7 @@ void show_stack(struct task_struct *task, unsigned long *sp, const char *loglvl) print_hex_dump(loglvl, " ", DUMP_PREFIX_NONE, STACK_DUMP_LINE_SIZE, STACK_DUMP_ENTRY_SIZE, sp, len, false); - show_trace(task, stack, loglvl); + show_trace(task, sp, loglvl); } DEFINE_SPINLOCK(die_lock); -- 2.26.1
-- 2.26.1
> } > > DEFINE_SPINLOCK(die_lock); > -- > 2.26.0 >
-- Sincerely yours, Mike.
| |