All of lore.kernel.org
 help / color / mirror / Atom feed
From: Palmer Dabbelt <palmerdabbelt@google.com>
To: wangkefeng.wang@huawei.com
Cc: linux-riscv@lists.infradead.org, aou@eecs.berkeley.edu,
	Paul Walmsley <paul.walmsley@sifive.com>
Subject: Re: [PATCH 1/2] riscv: Add dump stack in show_regs
Date: Sat, 09 Jan 2021 14:24:39 -0800 (PST)	[thread overview]
Message-ID: <mhng-965396e3-01db-4be9-bc1d-1da8cb0127f0@palmerdabbelt-glaptop> (raw)
In-Reply-To: <30626a12-5cb5-c113-ab6c-9fdc3c598c70@huawei.com>

On Mon, 14 Dec 2020 03:52:19 PST (-0800), wangkefeng.wang@huawei.com wrote:
> hi Palmer, kindly ping...

Sorry, it looks like I missed this because it's all threaded together.  I'm not
really sure what you're trying to do here: you've got three patch sets in one
thread, one of which seems to be a v2 of only a single patch.

Do you mind sending out a standalone version of this?

>
> On 2020/11/24 19:20, Kefeng Wang wrote:
>> Like commit 1149aad10b1e ("arm64: Add dump_backtrace() in show_regs"),
>> dump the stack in riscv show_regs as common code expects.
>>
>> Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
>> ---
>> NOTE: The patches based on
>> https://patchwork.kernel.org/project/linux-riscv/list/?series=383349
>>
>>   arch/riscv/include/asm/bug.h        |  1 +
>>   arch/riscv/include/asm/stacktrace.h |  2 ++
>>   arch/riscv/kernel/process.c         |  9 ++++++++-
>>   arch/riscv/kernel/stacktrace.c      | 10 ++++++++--
>>   arch/riscv/kernel/traps.c           |  3 ++-
>>   5 files changed, 21 insertions(+), 4 deletions(-)
>>
>> diff --git a/arch/riscv/include/asm/bug.h b/arch/riscv/include/asm/bug.h
>> index d6f1ec08d97b..d3804a2f9aad 100644
>> --- a/arch/riscv/include/asm/bug.h
>> +++ b/arch/riscv/include/asm/bug.h
>> @@ -85,6 +85,7 @@ do {								\
>>   struct pt_regs;
>>   struct task_struct;
>>
>> +void __show_regs(struct pt_regs *regs);
>>   void die(struct pt_regs *regs, const char *str);
>>   void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr);
>>
>> diff --git a/arch/riscv/include/asm/stacktrace.h b/arch/riscv/include/asm/stacktrace.h
>> index 470a65c4ccdc..3450c1912afd 100644
>> --- a/arch/riscv/include/asm/stacktrace.h
>> +++ b/arch/riscv/include/asm/stacktrace.h
>> @@ -13,5 +13,7 @@ struct stackframe {
>>
>>   extern void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs,
>>   				    bool (*fn)(void *, unsigned long), void *arg);
>> +extern void dump_backtrace(struct pt_regs *regs, struct task_struct *task,
>> +			   const char *loglvl);
>>
>>   #endif /* _ASM_RISCV_STACKTRACE_H */
>> diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c
>> index 19225ec65db6..e41b733abeaa 100644
>> --- a/arch/riscv/kernel/process.c
>> +++ b/arch/riscv/kernel/process.c
>> @@ -18,6 +18,7 @@
>>   #include <asm/unistd.h>
>>   #include <asm/processor.h>
>>   #include <asm/csr.h>
>> +#include <asm/stacktrace.h>
>>   #include <asm/string.h>
>>   #include <asm/switch_to.h>
>>   #include <asm/thread_info.h>
>> @@ -39,7 +40,7 @@ void arch_cpu_idle(void)
>>   	local_irq_enable();
>>   }
>>
>> -void show_regs(struct pt_regs *regs)
>> +void __show_regs(struct pt_regs *regs)
>>   {
>>   	show_regs_print_info(KERN_DEFAULT);
>>
>> @@ -69,6 +70,12 @@ void show_regs(struct pt_regs *regs)
>>   	pr_cont("status: " REG_FMT " badaddr: " REG_FMT " cause: " REG_FMT "\n",
>>   		regs->status, regs->badaddr, regs->cause);
>>   }
>> +void show_regs(struct pt_regs *regs)
>> +{
>> +	__show_regs(regs);
>> +	if (!user_mode(regs))
>> +		dump_backtrace(regs, NULL, KERN_DEFAULT);
>> +}
>>
>>   void start_thread(struct pt_regs *regs, unsigned long pc,
>>   	unsigned long sp)
>> diff --git a/arch/riscv/kernel/stacktrace.c b/arch/riscv/kernel/stacktrace.c
>> index 48b870a685b3..76dadf6d396b 100644
>> --- a/arch/riscv/kernel/stacktrace.c
>> +++ b/arch/riscv/kernel/stacktrace.c
>> @@ -101,10 +101,16 @@ static bool print_trace_address(void *arg, unsigned long pc)
>>   	return true;
>>   }
>>
>> +void dump_backtrace(struct pt_regs *regs, struct task_struct *task,
>> +		    const char *loglvl)
>> +{
>> +	pr_cont("%sCall Trace:\n", loglvl);
>> +	walk_stackframe(task, regs, print_trace_address, (void *)loglvl);
>> +}
>> +
>>   void show_stack(struct task_struct *task, unsigned long *sp, const char *loglvl)
>>   {
>> -	pr_cont("Call Trace:\n");
>> -	walk_stackframe(task, NULL, print_trace_address, (void *)loglvl);
>> +	dump_backtrace(NULL, task, loglvl);
>>   }
>>
>>   static bool save_wchan(void *arg, unsigned long pc)
>> diff --git a/arch/riscv/kernel/traps.c b/arch/riscv/kernel/traps.c
>> index ad14f4466d92..570eb078b1e1 100644
>> --- a/arch/riscv/kernel/traps.c
>> +++ b/arch/riscv/kernel/traps.c
>> @@ -16,6 +16,7 @@
>>   #include <linux/module.h>
>>   #include <linux/irq.h>
>>
>> +#include <asm/bug.h>
>>   #include <asm/processor.h>
>>   #include <asm/ptrace.h>
>>   #include <asm/csr.h>
>> @@ -66,7 +67,7 @@ void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr)
>>   			tsk->comm, task_pid_nr(tsk), signo, code, addr);
>>   		print_vma_addr(KERN_CONT " in ", instruction_pointer(regs));
>>   		pr_cont("\n");
>> -		show_regs(regs);
>> +		__show_regs(regs);
>>   	}
>>
>>   	force_sig_fault(signo, code, (void __user *)addr);

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

  reply	other threads:[~2021-01-09 23:14 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-13  6:42 [PATCH 0/3] riscv: cover to ARCH_STACKWALK Kefeng Wang
2020-11-13  6:42 ` [PATCH 1/3] riscv: Cleanup stacktrace Kefeng Wang
2020-11-13  6:42 ` [PATCH 2/3] riscv: Make stack walk callback consistent with generic code Kefeng Wang
2020-11-13  6:42 ` [PATCH 3/3] riscv: Enable ARCH_STACKWALK Kefeng Wang
2020-11-21  3:01 ` [PATCH 0/3] riscv: cover to ARCH_STACKWALK Palmer Dabbelt
2020-11-24 11:20   ` [PATCH 1/2] riscv: Add dump stack in show_regs Kefeng Wang
2020-11-24 11:20     ` [PATCH 2/2] riscv: Fix __show_regs printing formats Kefeng Wang
2020-11-25 22:58       ` Atish Patra
2020-11-26  1:10         ` Kefeng Wang
2020-11-26 10:02           ` John Ogness
2020-11-26 11:55             ` John Ogness
2020-11-26 12:49               ` Kefeng Wang
2020-11-26 13:33       ` [PATCH v2] riscv: Using printk directly in __show_regs Kefeng Wang
2020-12-11  1:43         ` Palmer Dabbelt
2020-12-11  8:48           ` John Ogness
2020-12-14 11:49             ` Kefeng Wang
2020-11-25 23:04     ` [PATCH 1/2] riscv: Add dump stack in show_regs Atish Patra
2020-12-14 11:52     ` Kefeng Wang
2021-01-09 22:24       ` Palmer Dabbelt [this message]
2021-01-11  3:23         ` Kefeng Wang
2020-12-17  2:34   ` [PATCH 0/3] riscv: cover to ARCH_STACKWALK Kefeng Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=mhng-965396e3-01db-4be9-bc1d-1da8cb0127f0@palmerdabbelt-glaptop \
    --to=palmerdabbelt@google.com \
    --cc=aou@eecs.berkeley.edu \
    --cc=linux-riscv@lists.infradead.org \
    --cc=paul.walmsley@sifive.com \
    --cc=wangkefeng.wang@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.