All of lore.kernel.org
 help / color / mirror / Atom feed
From: tianxianting <xianting.tian@linux.alibaba.com>
To: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>,
	aou@eecs.berkeley.edu, wangkefeng.wang@huawei.com,
	philipp.tomsich@vrull.eu, ebiederm@xmission.com, heiko@sntech.de,
	vitaly.wool@konsulko.com, tongtiangen@huawei.com,
	guoren@kernel.org, linux-riscv@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [RESEND PATCH v2] RISC-V: Add fast call path of crash_kexec()
Date: Fri, 22 Jul 2022 11:41:07 +0800	[thread overview]
Message-ID: <6412d106-24c0-a2ad-79b9-de6664c8723d@linux.alibaba.com> (raw)
In-Reply-To: <mhng-c42cbd7f-4935-4d16-9150-5504fd06aedd@palmer-mbp2014>


在 2022/7/22 上午8:11, Palmer Dabbelt 写道:
> On Mon, 06 Jun 2022 01:23:08 PDT (-0700), 
> xianting.tian@linux.alibaba.com wrote:
>> Currently, almost all archs (x86, arm64, mips...) support fast call
>> of crash_kexec() when "regs && kexec_should_crash()" is true. But
>> RISC-V not, it can only enter crash system via panic(). However panic()
>> doesn't pass the regs of the real accident scene to crash_kexec(),
>> it caused we can't get accurate backtrace via gdb,
>>     $ riscv64-linux-gnu-gdb vmlinux vmcore
>>     Reading symbols from vmlinux...
>>     [New LWP 95]
>>     #0  console_unlock () at kernel/printk/printk.c:2557
>>     2557                    if (do_cond_resched)
>>     (gdb) bt
>>     #0  console_unlock () at kernel/printk/printk.c:2557
>>     #1  0x0000000000000000 in ?? ()
>>
>> With the patch we can get the accurate backtrace,
>>     $ riscv64-linux-gnu-gdb vmlinux vmcore
>>     Reading symbols from vmlinux...
>>     [New LWP 95]
>>     #0  0xffffffe00063a4e0 in test_thread (data=<optimized out>) at 
>> drivers/test_crash.c:81
>>     81             *(int *)p = 0xdead;
>>     (gdb)
>>     (gdb) bt
>>     #0  0xffffffe00064d5c0 in test_thread (data=<optimized out>) at 
>> drivers/test_crash.c:81
>>     #1  0x0000000000000000 in ?? ()
>>
>> Test code to produce NULL address dereference in test_crash.c,
>>     void *p = NULL;
>>     *(int *)p = 0xdead;
>>
>> Reviewed-by: Guo Ren <guoren@kernel.org>
>> Tested-by: Xianting Tian <xianting.tian@linux.alibaba.com>
>> Signed-off-by: Xianting Tian <xianting.tian@linux.alibaba.com>
>> ---
>> Changes from v1:
>> - simplify the commit message
>> ---
>>  arch/riscv/kernel/traps.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/arch/riscv/kernel/traps.c b/arch/riscv/kernel/traps.c
>> index fe92e119e6a3..e666ebfa2a64 100644
>> --- a/arch/riscv/kernel/traps.c
>> +++ b/arch/riscv/kernel/traps.c
>> @@ -16,6 +16,7 @@
>>  #include <linux/mm.h>
>>  #include <linux/module.h>
>>  #include <linux/irq.h>
>> +#include <linux/kexec.h>
>>
>>  #include <asm/asm-prototypes.h>
>>  #include <asm/bug.h>
>> @@ -44,6 +45,9 @@ void die(struct pt_regs *regs, const char *str)
>>
>>      ret = notify_die(DIE_OOPS, str, regs, 0, regs->cause, SIGSEGV);
>>
>> +    if (regs && kexec_should_crash(current))
>> +        crash_kexec(regs);
>> +
>>      bust_spinlocks(0);
>>      add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE);
>>      spin_unlock_irq(&die_lock);
>
> Thanks, this is on for-next.

Palmer, thanks for the reply,

Last week, I commit a series of 
patches(https://lkml.org/lkml/2022/7/17/64 
<https://lkml.org/lkml/2022/7/17/64>), which contains this one.

This series of patches worked with crash-utility for RISCV64, Could you 
please review it?

We expect 5.19 could support crash-utility, it is a good functionality.

crash-utility patches for RISCV64:

https://lore.kernel.org/all/20220718025346.411758-1-xianting.tian@linux.alibaba.com/ 
<https://lore.kernel.org/all/20220718025346.411758-1-xianting.tian@linux.alibaba.com/>


WARNING: multiple messages have this Message-ID (diff)
From: tianxianting <xianting.tian@linux.alibaba.com>
To: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>,
	aou@eecs.berkeley.edu, wangkefeng.wang@huawei.com,
	philipp.tomsich@vrull.eu, ebiederm@xmission.com, heiko@sntech.de,
	vitaly.wool@konsulko.com, tongtiangen@huawei.com,
	guoren@kernel.org, linux-riscv@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [RESEND PATCH v2] RISC-V: Add fast call path of crash_kexec()
Date: Fri, 22 Jul 2022 11:41:07 +0800	[thread overview]
Message-ID: <6412d106-24c0-a2ad-79b9-de6664c8723d@linux.alibaba.com> (raw)
In-Reply-To: <mhng-c42cbd7f-4935-4d16-9150-5504fd06aedd@palmer-mbp2014>


在 2022/7/22 上午8:11, Palmer Dabbelt 写道:
> On Mon, 06 Jun 2022 01:23:08 PDT (-0700), 
> xianting.tian@linux.alibaba.com wrote:
>> Currently, almost all archs (x86, arm64, mips...) support fast call
>> of crash_kexec() when "regs && kexec_should_crash()" is true. But
>> RISC-V not, it can only enter crash system via panic(). However panic()
>> doesn't pass the regs of the real accident scene to crash_kexec(),
>> it caused we can't get accurate backtrace via gdb,
>>     $ riscv64-linux-gnu-gdb vmlinux vmcore
>>     Reading symbols from vmlinux...
>>     [New LWP 95]
>>     #0  console_unlock () at kernel/printk/printk.c:2557
>>     2557                    if (do_cond_resched)
>>     (gdb) bt
>>     #0  console_unlock () at kernel/printk/printk.c:2557
>>     #1  0x0000000000000000 in ?? ()
>>
>> With the patch we can get the accurate backtrace,
>>     $ riscv64-linux-gnu-gdb vmlinux vmcore
>>     Reading symbols from vmlinux...
>>     [New LWP 95]
>>     #0  0xffffffe00063a4e0 in test_thread (data=<optimized out>) at 
>> drivers/test_crash.c:81
>>     81             *(int *)p = 0xdead;
>>     (gdb)
>>     (gdb) bt
>>     #0  0xffffffe00064d5c0 in test_thread (data=<optimized out>) at 
>> drivers/test_crash.c:81
>>     #1  0x0000000000000000 in ?? ()
>>
>> Test code to produce NULL address dereference in test_crash.c,
>>     void *p = NULL;
>>     *(int *)p = 0xdead;
>>
>> Reviewed-by: Guo Ren <guoren@kernel.org>
>> Tested-by: Xianting Tian <xianting.tian@linux.alibaba.com>
>> Signed-off-by: Xianting Tian <xianting.tian@linux.alibaba.com>
>> ---
>> Changes from v1:
>> - simplify the commit message
>> ---
>>  arch/riscv/kernel/traps.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/arch/riscv/kernel/traps.c b/arch/riscv/kernel/traps.c
>> index fe92e119e6a3..e666ebfa2a64 100644
>> --- a/arch/riscv/kernel/traps.c
>> +++ b/arch/riscv/kernel/traps.c
>> @@ -16,6 +16,7 @@
>>  #include <linux/mm.h>
>>  #include <linux/module.h>
>>  #include <linux/irq.h>
>> +#include <linux/kexec.h>
>>
>>  #include <asm/asm-prototypes.h>
>>  #include <asm/bug.h>
>> @@ -44,6 +45,9 @@ void die(struct pt_regs *regs, const char *str)
>>
>>      ret = notify_die(DIE_OOPS, str, regs, 0, regs->cause, SIGSEGV);
>>
>> +    if (regs && kexec_should_crash(current))
>> +        crash_kexec(regs);
>> +
>>      bust_spinlocks(0);
>>      add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE);
>>      spin_unlock_irq(&die_lock);
>
> Thanks, this is on for-next.

Palmer, thanks for the reply,

Last week, I commit a series of 
patches(https://lkml.org/lkml/2022/7/17/64 
<https://lkml.org/lkml/2022/7/17/64>), which contains this one.

This series of patches worked with crash-utility for RISCV64, Could you 
please review it?

We expect 5.19 could support crash-utility, it is a good functionality.

crash-utility patches for RISCV64:

https://lore.kernel.org/all/20220718025346.411758-1-xianting.tian@linux.alibaba.com/ 
<https://lore.kernel.org/all/20220718025346.411758-1-xianting.tian@linux.alibaba.com/>


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

  reply	other threads:[~2022-07-22  3:41 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-06  8:23 [RESEND PATCH v2] RISC-V: Add fast call path of crash_kexec() Xianting Tian
2022-06-06  8:23 ` Xianting Tian
2022-07-22  0:11 ` Palmer Dabbelt
2022-07-22  0:11   ` Palmer Dabbelt
2022-07-22  3:41   ` tianxianting [this message]
2022-07-22  3:41     ` tianxianting

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=6412d106-24c0-a2ad-79b9-de6664c8723d@linux.alibaba.com \
    --to=xianting.tian@linux.alibaba.com \
    --cc=aou@eecs.berkeley.edu \
    --cc=ebiederm@xmission.com \
    --cc=guoren@kernel.org \
    --cc=heiko@sntech.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=philipp.tomsich@vrull.eu \
    --cc=tongtiangen@huawei.com \
    --cc=vitaly.wool@konsulko.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.