From: John Crispin <blogic@openwrt.org>
To: eunb.song@samsung.com, ralf@linux-mips.org
Cc: linux-mips@linux-mips.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] mips: add arch_trigger_all_cpu_backtrace() function
Date: Wed, 22 Oct 2014 08:47:04 +0200 [thread overview]
Message-ID: <544752E8.6070302@openwrt.org> (raw)
In-Reply-To: <1669712409.167661413959996217.JavaMail.weblogic@epmlwas02b>
Hi Eubong,
one small question inline ...
On 22/10/2014 08:39, Eunbong Song wrote:
>
> Currently, arch_trigger_all_cpu_backtrace() is defined in only x86
> and sparc which has nmi interrupt. But in case of softlockup not a
> hardlockup, it could be possible to dump backtrace of all cpus. and
> this could be helpful for debugging.
>
> for example, if system has 2 cpus.
>
> CPU 0 CPU 1 acquire read_lock()
>
> try to do write_lock()
>
> ,,, missing read_unlock()
>
> In this case, softlockup will occur becasuse CPU 0 does not call
> read_unlock(). And dump_stack() print only backtrace for "CPU 0".
> If CPU1's backtrace is printed it's very helpful.
>
> This patch adds arch_trigger_all_cpu_backtrace() for mips
> architecture.
>
> Maybe someone make better patch than this. I just suggest the
> idea. --- arch/mips/include/asm/irq.h | 3 +++
> arch/mips/kernel/process.c | 18 ++++++++++++++++++ 2 files
> changed, 21 insertions(+), 0 deletions(-)
>
> diff --git a/arch/mips/include/asm/irq.h
> b/arch/mips/include/asm/irq.h index 39f07ae..5a4e1bb 100644 ---
> a/arch/mips/include/asm/irq.h +++ b/arch/mips/include/asm/irq.h @@
> -48,4 +48,7 @@ extern int cp0_compare_irq; extern int
> cp0_compare_irq_shift; extern int cp0_perfcount_irq;
>
> +void arch_trigger_all_cpu_backtrace(bool); +#define
> arch_trigger_all_cpu_backtrace arch_trigger_all_cpu_backtrace
What is the purpose of this define ? is this maybe a leftover from
some regex/cleanups ?
John
> + #endif /* _ASM_IRQ_H */ diff --git a/arch/mips/kernel/process.c
> b/arch/mips/kernel/process.c index 636b074..9f51d3d 100644 ---
> a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c @@
> -42,6 +42,7 @@ #include <asm/isadep.h> #include <asm/inst.h>
> #include <asm/stacktrace.h> +#include <asm/irq_regs.h>
>
> #ifdef CONFIG_HOTPLUG_CPU void arch_cpu_idle_dead(void) @@ -532,3
> +533,20 @@ unsigned long arch_align_stack(unsigned long sp)
>
> return sp & ALMASK; } + +static void arch_dump_stack(void *info)
> +{ + struct pt_regs *regs; + + regs = get_irq_regs(); + + if(regs)
> + show_regs(regs); + + dump_stack(); +} + +void
> arch_trigger_all_cpu_backtrace(bool include_self) +{ +
> smp_call_function(arch_dump_stack, NULL, 1); +}
>
next prev parent reply other threads:[~2014-10-22 6:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-22 6:39 [PATCH] mips: add arch_trigger_all_cpu_backtrace() function Eunbong Song
2014-10-22 6:39 ` Eunbong Song
2014-10-22 6:47 ` John Crispin [this message]
2014-10-22 16:16 ` Ralf Baechle
2014-10-22 22:22 ` James Hogan
2014-10-22 22:22 ` James Hogan
-- strict thread matches above, loose matches on Subject: below --
2014-10-22 6:54 Eunbong Song
2014-10-22 7:11 ` John Crispin
2014-10-22 22:29 ` James Hogan
2014-10-22 22:29 ` James Hogan
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=544752E8.6070302@openwrt.org \
--to=blogic@openwrt.org \
--cc=eunb.song@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=ralf@linux-mips.org \
/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.