Re: [PATCHv3 11/50] c6x: Add show_stack_loglvl()

From: Tetsuo Handa
Date: Sat Apr 25 2020 - 21:06:24 EST


On 2020/04/26 3:18, Joe Perches wrote:
> On Sat, 2020-04-18 at 21:19 +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).
> []
>> diff --git a/arch/c6x/kernel/traps.c b/arch/c6x/kernel/traps.c
> []
>> @@ -344,12 +344,13 @@ asmlinkage int process_exception(struct pt_regs *regs)
>>
>> static int kstack_depth_to_print = 48;
>>
>> -static void show_trace(unsigned long *stack, unsigned long *endstack)
>> +static void show_trace(unsigned long *stack, unsigned long *endstack,
>> + const char *loglvl)
>> {
>> unsigned long addr;
>> int i;
>>
>> - pr_debug("Call trace:");
>> + printk("%sCall trace:", loglvl);
>
> These are not equivalent transforms as pr_debug
> is compiled to nothing unless DEBUG is defined
> or CONFIG_DYNAMIC_DEBUG is enabled.

I guess this user is expecting pr_debug() as unconditional printk(KERN_DEBUG), for
show_trace() and show_stack() will become waste of code if pr_debug() prints nothing.
If this user wants pr_debug() to be conditional, #ifdef'ing these functions is the better.

>
> Perhaps all the conversions should be checked
> for these "not the same" object code changes.
>