From: daniel.thompson@linaro.org (Daniel Thompson)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3.19-rc2 v13 4/5] ARM: Add support for on-demand backtrace of other CPUs
Date: Tue, 13 Jan 2015 10:36:29 +0000 [thread overview]
Message-ID: <54B4F52D.8010403@linaro.org> (raw)
In-Reply-To: <20150111183700.55ea2434@gandalf.local.home>
On 11/01/15 23:37, Steven Rostedt wrote:
> On Fri, 9 Jan 2015 16:48:01 +0000
> Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
>
>> On Mon, Jan 05, 2015 at 10:19:25AM -0500, Steven Rostedt wrote:
>>> On Mon, 5 Jan 2015 14:54:58 +0000
>>> Daniel Thompson <daniel.thompson@linaro.org> wrote:
>>>> +/* For reliability, we're prepared to waste bits here. */
>>>> +static DECLARE_BITMAP(backtrace_mask, NR_CPUS) __read_mostly;
>>>> +static cpumask_t printtrace_mask;
>>>> +
>>>> +#define NMI_BUF_SIZE 4096
>>>> +
>>>> +struct nmi_seq_buf {
>>>> + unsigned char buffer[NMI_BUF_SIZE];
>>>> + struct seq_buf seq;
>>>> +};
>>
>> Am I missing something or does this limit us to 4096 characters of
>> backtrace output per CPU?
>>
>>> This is the same code as in x86. I wonder if we should move the
>>> duplicate code into kernel/printk/ and have it compiled if the arch
>>> requests it (CONFIG_ARCH_WANT_NMI_PRINTK or something). That way we
>>> don't have 20 copies of the same nmi_vprintk() and later find that we
>>> need to change it, and have to change it in 20 different archs.
>>
>> Agreed, though I wonder about the buffer size.
>>
>
> Have we had kernel back traces bigger than that? Since the stack size
> is limited to page size, it would seem dangerous if backtraces filled
> up a page size itself, as most function frames are bigger than the
> typical 60 bytes of data per line.
>
> We could change that hard coded 4096 to PAGE_SIZE, for those archs with
> bigger pages.
I've just updated the patchset with a couple of patches to common up the
printk code between arm and x86.
Just for the record I haven't changed the hard coded 4096 as part of
this. I'd be quite happy to but I didn't want to introduce any "secret"
changes to the code whilst the patch header claims I am just copying stuff.
Daniel.
> Also, if the backtrace were to fill up that much. Most the pertinent
> data from a back trace is at the beginning of the trace. Seldom do we
> care about the top most callers (bottom of the output).
>
> -- Steve
>
WARNING: multiple messages have this Message-ID (diff)
From: Daniel Thompson <daniel.thompson@linaro.org>
To: Steven Rostedt <rostedt@goodmis.org>,
Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Jason Cooper <jason@lakedaemon.net>,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, patches@linaro.org,
linaro-kernel@lists.linaro.org,
John Stultz <john.stultz@linaro.org>,
Sumit Semwal <sumit.semwal@linaro.org>,
Dirk Behme <dirk.behme@de.bosch.com>,
Daniel Drake <drake@endlessm.com>,
Dmitry Pervushin <dpervushin@gmail.com>,
Tim Sander <tim@krieglstein.org>,
Stephen Boyd <sboyd@codeaurora.org>
Subject: Re: [PATCH 3.19-rc2 v13 4/5] ARM: Add support for on-demand backtrace of other CPUs
Date: Tue, 13 Jan 2015 10:36:29 +0000 [thread overview]
Message-ID: <54B4F52D.8010403@linaro.org> (raw)
In-Reply-To: <20150111183700.55ea2434@gandalf.local.home>
On 11/01/15 23:37, Steven Rostedt wrote:
> On Fri, 9 Jan 2015 16:48:01 +0000
> Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
>
>> On Mon, Jan 05, 2015 at 10:19:25AM -0500, Steven Rostedt wrote:
>>> On Mon, 5 Jan 2015 14:54:58 +0000
>>> Daniel Thompson <daniel.thompson@linaro.org> wrote:
>>>> +/* For reliability, we're prepared to waste bits here. */
>>>> +static DECLARE_BITMAP(backtrace_mask, NR_CPUS) __read_mostly;
>>>> +static cpumask_t printtrace_mask;
>>>> +
>>>> +#define NMI_BUF_SIZE 4096
>>>> +
>>>> +struct nmi_seq_buf {
>>>> + unsigned char buffer[NMI_BUF_SIZE];
>>>> + struct seq_buf seq;
>>>> +};
>>
>> Am I missing something or does this limit us to 4096 characters of
>> backtrace output per CPU?
>>
>>> This is the same code as in x86. I wonder if we should move the
>>> duplicate code into kernel/printk/ and have it compiled if the arch
>>> requests it (CONFIG_ARCH_WANT_NMI_PRINTK or something). That way we
>>> don't have 20 copies of the same nmi_vprintk() and later find that we
>>> need to change it, and have to change it in 20 different archs.
>>
>> Agreed, though I wonder about the buffer size.
>>
>
> Have we had kernel back traces bigger than that? Since the stack size
> is limited to page size, it would seem dangerous if backtraces filled
> up a page size itself, as most function frames are bigger than the
> typical 60 bytes of data per line.
>
> We could change that hard coded 4096 to PAGE_SIZE, for those archs with
> bigger pages.
I've just updated the patchset with a couple of patches to common up the
printk code between arm and x86.
Just for the record I haven't changed the hard coded 4096 as part of
this. I'd be quite happy to but I didn't want to introduce any "secret"
changes to the code whilst the patch header claims I am just copying stuff.
Daniel.
> Also, if the backtrace were to fill up that much. Most the pertinent
> data from a back trace is at the beginning of the trace. Seldom do we
> care about the top most callers (bottom of the output).
>
> -- Steve
>
next prev parent reply other threads:[~2015-01-13 10:36 UTC|newest]
Thread overview: 206+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-05 10:27 [PATCH 3.18-rc3 v7 0/4] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2014-11-05 10:27 ` Daniel Thompson
2014-11-05 10:27 ` [PATCH 3.18-rc3 v7 1/4] irqchip: gic: Make gic_raise_softirq() FIQ-safe Daniel Thompson
2014-11-05 10:27 ` Daniel Thompson
2014-11-05 10:27 ` [PATCH 3.18-rc3 v7 2/4] irqchip: gic: Introduce plumbing for IPI FIQ Daniel Thompson
2014-11-05 10:27 ` Daniel Thompson
2014-11-05 10:27 ` [PATCH 3.18-rc3 v7 3/4] ARM: add basic support for on-demand backtrace of other CPUs Daniel Thompson
2014-11-05 10:27 ` Daniel Thompson
2014-11-05 10:27 ` [PATCH 3.18-rc3 v7 4/4] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) Daniel Thompson
2014-11-05 10:27 ` Daniel Thompson
2014-11-14 12:35 ` [PATCH 3.18-rc3 v8 0/4] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2014-11-14 12:35 ` Daniel Thompson
2014-11-14 12:35 ` [PATCH 3.18-rc3 v8 1/4] irqchip: gic: Make gic_raise_softirq() FIQ-safe Daniel Thompson
2014-11-14 12:35 ` Daniel Thompson
2014-11-24 18:20 ` Thomas Gleixner
2014-11-24 18:20 ` Thomas Gleixner
2014-11-24 18:40 ` Daniel Thompson
2014-11-24 18:40 ` Daniel Thompson
2014-11-24 18:48 ` Thomas Gleixner
2014-11-24 18:48 ` Thomas Gleixner
2014-11-24 20:36 ` Daniel Thompson
2014-11-24 20:36 ` Daniel Thompson
2014-11-24 20:41 ` Thomas Gleixner
2014-11-24 20:41 ` Thomas Gleixner
2014-11-24 21:09 ` Daniel Thompson
2014-11-24 21:09 ` Daniel Thompson
2014-11-24 20:38 ` Thomas Gleixner
2014-11-24 20:38 ` Thomas Gleixner
2014-11-24 21:01 ` Daniel Thompson
2014-11-24 21:01 ` Daniel Thompson
2014-11-24 21:29 ` Thomas Gleixner
2014-11-24 21:29 ` Thomas Gleixner
2014-11-14 12:35 ` [PATCH 3.18-rc3 v8 2/4] irqchip: gic: Introduce plumbing for IPI FIQ Daniel Thompson
2014-11-14 12:35 ` Daniel Thompson
2014-11-14 12:35 ` [PATCH 3.18-rc3 v8 3/4] ARM: add basic support for on-demand backtrace of other CPUs Daniel Thompson
2014-11-14 12:35 ` Daniel Thompson
2014-11-14 12:35 ` [PATCH 3.18-rc3 v8 4/4] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) Daniel Thompson
2014-11-14 12:35 ` Daniel Thompson
2014-11-24 17:09 ` [PATCH 3.18-rc3 v8 0/4] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2014-11-24 17:09 ` Daniel Thompson
2014-11-25 17:26 ` [PATCH 3.18-rc3 v9 0/5] " Daniel Thompson
2014-11-25 17:26 ` Daniel Thompson
2014-11-25 17:26 ` [PATCH 3.18-rc3 v9 1/5] irqchip: gic: Finer grain locking for gic_raise_softirq Daniel Thompson
2014-11-25 17:26 ` Daniel Thompson
2014-11-25 17:40 ` Marc Zyngier
2014-11-25 17:40 ` Marc Zyngier
2014-11-25 20:17 ` Nicolas Pitre
2014-11-25 20:17 ` Nicolas Pitre
2014-11-25 21:10 ` Daniel Thompson
2014-11-25 21:10 ` Daniel Thompson
2014-11-26 1:27 ` Stephen Boyd
2014-11-26 1:27 ` Stephen Boyd
2014-11-26 11:05 ` Daniel Thompson
2014-11-26 11:05 ` Daniel Thompson
2014-11-25 17:26 ` [PATCH 3.18-rc3 v9 2/5] irqchip: gic: Make gic_raise_softirq() FIQ-safe Daniel Thompson
2014-11-25 17:26 ` Daniel Thompson
2014-11-25 17:26 ` [PATCH 3.18-rc3 v9 3/5] irqchip: gic: Introduce plumbing for IPI FIQ Daniel Thompson
2014-11-25 17:26 ` Daniel Thompson
2014-11-26 15:09 ` Tim Sander
2014-11-26 15:09 ` Tim Sander
2014-11-26 15:48 ` Daniel Thompson
2014-11-26 15:48 ` Daniel Thompson
2014-11-26 16:58 ` Tim Sander
2014-11-26 16:58 ` Tim Sander
2014-11-25 17:26 ` [PATCH 3.18-rc3 v9 4/5] ARM: add basic support for on-demand backtrace of other CPUs Daniel Thompson
2014-11-25 17:26 ` Daniel Thompson
2014-11-25 17:26 ` [PATCH 3.18-rc3 v9 5/5] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) Daniel Thompson
2014-11-25 17:26 ` Daniel Thompson
2014-11-26 12:46 ` Tim Sander
2014-11-26 12:46 ` Tim Sander
2014-11-26 13:12 ` Russell King - ARM Linux
2014-11-26 13:12 ` Russell King - ARM Linux
2014-11-26 16:17 ` Daniel Thompson
2014-11-26 16:17 ` Daniel Thompson
2014-11-28 9:10 ` Tim Sander
2014-11-28 9:10 ` Tim Sander
2014-11-28 10:08 ` Russell King - ARM Linux
2014-11-28 10:08 ` Russell King - ARM Linux
2014-12-01 10:32 ` Tim Sander
2014-12-01 10:32 ` Tim Sander
2014-12-01 10:38 ` Russell King - ARM Linux
2014-12-01 10:38 ` Russell King - ARM Linux
2014-12-01 13:54 ` Tim Sander
2014-12-01 13:54 ` Tim Sander
2014-12-01 14:13 ` Daniel Thompson
2014-12-01 14:13 ` Daniel Thompson
2014-12-03 13:41 ` Tim Sander
2014-12-03 13:41 ` Tim Sander
2014-12-03 14:53 ` Daniel Thompson
2014-12-03 14:53 ` Daniel Thompson
2014-12-01 15:02 ` Russell King - ARM Linux
2014-12-01 15:02 ` Russell King - ARM Linux
2014-12-05 16:00 ` Tim Sander
2014-12-05 16:00 ` Tim Sander
2014-11-26 16:23 ` [PATCH 3.18-rc4 v10 0/6] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2014-11-26 16:23 ` Daniel Thompson
2014-11-26 16:23 ` [PATCH 3.18-rc4 v10 1/6] irqchip: gic: Finer grain locking for gic_raise_softirq Daniel Thompson
2014-11-26 16:23 ` Daniel Thompson
2014-11-26 16:23 ` [PATCH 3.18-rc4 v10 2/6] irqchip: gic: Optimize locking in gic_raise_softirq Daniel Thompson
2014-11-26 16:23 ` Daniel Thompson
2014-11-26 16:23 ` [PATCH 3.18-rc4 v10 3/6] irqchip: gic: Make gic_raise_softirq FIQ-safe Daniel Thompson
2014-11-26 16:23 ` Daniel Thompson
2014-11-26 16:23 ` [PATCH 3.18-rc4 v10 4/6] irqchip: gic: Introduce plumbing for IPI FIQ Daniel Thompson
2014-11-26 16:23 ` Daniel Thompson
2014-11-26 17:42 ` Jason Cooper
2014-11-26 17:42 ` Jason Cooper
2014-11-27 13:39 ` Daniel Thompson
2014-11-27 13:39 ` Daniel Thompson
2014-11-27 18:06 ` Jason Cooper
2014-11-27 18:06 ` Jason Cooper
2014-11-27 19:42 ` Daniel Thompson
2014-11-27 19:42 ` Daniel Thompson
2014-11-27 20:16 ` Daniel Thompson
2014-11-27 20:16 ` Daniel Thompson
2014-11-26 16:23 ` [PATCH 3.18-rc4 v10 5/6] ARM: add basic support for on-demand backtrace of other CPUs Daniel Thompson
2014-11-26 16:23 ` Daniel Thompson
2014-11-26 16:23 ` [PATCH 3.18-rc4 v10 6/6] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) Daniel Thompson
2014-11-26 16:23 ` Daniel Thompson
2014-11-27 20:10 ` [PATCH 3.18-rc4 v11 0/6] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2014-11-27 20:10 ` Daniel Thompson
2014-11-27 20:10 ` [PATCH 3.18-rc4 v11 1/6] irqchip: gic: Finer grain locking for gic_raise_softirq Daniel Thompson
2014-11-27 20:10 ` Daniel Thompson
2014-11-27 20:10 ` [PATCH 3.18-rc4 v11 2/6] irqchip: gic: Optimize locking in gic_raise_softirq Daniel Thompson
2014-11-27 20:10 ` Daniel Thompson
2014-11-27 21:37 ` Thomas Gleixner
2014-11-27 21:37 ` Thomas Gleixner
2014-11-28 10:14 ` Daniel Thompson
2014-11-28 10:14 ` Daniel Thompson
2014-11-27 20:10 ` [PATCH 3.18-rc4 v11 3/6] irqchip: gic: Make gic_raise_softirq FIQ-safe Daniel Thompson
2014-11-27 20:10 ` Daniel Thompson
2014-11-27 21:45 ` Thomas Gleixner
2014-11-27 21:45 ` Thomas Gleixner
2014-11-28 9:21 ` Daniel Thompson
2014-11-28 9:21 ` Daniel Thompson
2014-11-27 20:10 ` [PATCH 3.18-rc4 v11 4/6] irqchip: gic: Introduce plumbing for IPI FIQ Daniel Thompson
2014-11-27 20:10 ` Daniel Thompson
2014-11-27 20:10 ` [PATCH 3.18-rc4 v11 5/6] ARM: add basic support for on-demand backtrace of other CPUs Daniel Thompson
2014-11-27 20:10 ` Daniel Thompson
2014-11-27 20:10 ` [PATCH 3.18-rc4 v11 6/6] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) Daniel Thompson
2014-11-27 20:10 ` Daniel Thompson
2014-11-28 16:16 ` [PATCH 3.18-rc4 v12 0/5] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2014-11-28 16:16 ` Daniel Thompson
2014-11-28 16:16 ` [PATCH 3.18-rc4 v12 1/5] irqchip: gic: Optimize locking in gic_raise_softirq Daniel Thompson
2014-11-28 16:16 ` Daniel Thompson
2014-11-28 16:16 ` [PATCH 3.18-rc4 v12 2/5] irqchip: gic: Make gic_raise_softirq FIQ-safe Daniel Thompson
2014-11-28 16:16 ` Daniel Thompson
2014-11-28 16:16 ` [PATCH 3.18-rc4 v12 3/5] irqchip: gic: Introduce plumbing for IPI FIQ Daniel Thompson
2014-11-28 16:16 ` Daniel Thompson
2014-11-28 16:16 ` [PATCH 3.18-rc4 v12 4/5] ARM: add basic support for on-demand backtrace of other CPUs Daniel Thompson
2014-11-28 16:16 ` Daniel Thompson
2014-11-28 16:16 ` [PATCH 3.18-rc4 v12 5/5] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) Daniel Thompson
2014-11-28 16:16 ` Daniel Thompson
2014-12-08 16:00 ` [PATCH 3.18-rc4 v12 0/5] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2014-12-08 16:00 ` Daniel Thompson
2015-01-05 14:54 ` [PATCH 3.19-rc2 v13 " Daniel Thompson
2015-01-05 14:54 ` Daniel Thompson
2015-01-05 14:54 ` [PATCH 3.19-rc2 v13 1/5] irqchip: gic: Optimize locking in gic_raise_softirq Daniel Thompson
2015-01-05 14:54 ` Daniel Thompson
2015-01-05 14:54 ` [PATCH 3.19-rc2 v13 2/5] irqchip: gic: Make gic_raise_softirq FIQ-safe Daniel Thompson
2015-01-05 14:54 ` Daniel Thompson
2015-01-05 14:54 ` [PATCH 3.19-rc2 v13 3/5] irqchip: gic: Introduce plumbing for IPI FIQ Daniel Thompson
2015-01-05 14:54 ` Daniel Thompson
2015-01-05 14:54 ` [PATCH 3.19-rc2 v13 4/5] ARM: Add support for on-demand backtrace of other CPUs Daniel Thompson
2015-01-05 14:54 ` Daniel Thompson
2015-01-05 15:19 ` Steven Rostedt
2015-01-05 15:19 ` Steven Rostedt
2015-01-05 17:07 ` Daniel Thompson
2015-01-05 17:07 ` Daniel Thompson
2015-01-09 16:48 ` Russell King - ARM Linux
2015-01-09 16:48 ` Russell King - ARM Linux
2015-01-11 23:37 ` Steven Rostedt
2015-01-11 23:37 ` Steven Rostedt
2015-01-13 10:36 ` Daniel Thompson [this message]
2015-01-13 10:36 ` Daniel Thompson
2015-01-13 12:27 ` Steven Rostedt
2015-01-13 12:27 ` Steven Rostedt
2015-01-05 14:54 ` [PATCH 3.19-rc2 v13 5/5] ARM: Fix on-demand backtrace triggered by IRQ Daniel Thompson
2015-01-05 14:54 ` Daniel Thompson
2015-01-13 10:26 ` [PATCH 3.19-rc2 v14 0/7] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2015-01-13 10:26 ` Daniel Thompson
2015-01-13 10:26 ` [PATCH 3.19-rc2 v14 1/7] irqchip: gic: Optimize locking in gic_raise_softirq Daniel Thompson
2015-01-13 10:26 ` Daniel Thompson
2015-01-13 10:26 ` [PATCH 3.19-rc2 v14 2/7] irqchip: gic: Make gic_raise_softirq FIQ-safe Daniel Thompson
2015-01-13 10:26 ` Daniel Thompson
2015-01-13 10:26 ` [PATCH 3.19-rc2 v14 3/7] irqchip: gic: Introduce plumbing for IPI FIQ Daniel Thompson
2015-01-13 10:26 ` Daniel Thompson
2015-01-13 10:26 ` [PATCH 3.19-rc2 v14 4/7] printk: Simple implementation for NMI backtracing Daniel Thompson
2015-01-13 10:26 ` Daniel Thompson
2015-01-13 10:26 ` [PATCH 3.19-rc2 v14 5/7] x86/nmi: Use common printk functions Daniel Thompson
2015-01-13 10:26 ` Daniel Thompson
2015-01-13 10:26 ` [PATCH 3.19-rc2 v14 6/7] ARM: Add support for on-demand backtrace of other CPUs Daniel Thompson
2015-01-13 10:26 ` Daniel Thompson
2015-01-13 10:26 ` [PATCH 3.19-rc2 v14 7/7] ARM: Fix on-demand backtrace triggered by IRQ Daniel Thompson
2015-01-13 10:26 ` Daniel Thompson
2015-01-20 10:25 ` [PATCH 3.19-rc2 v14 0/7] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2015-01-20 10:25 ` Daniel Thompson
2015-01-20 20:53 ` Stephen Boyd
2015-01-20 20:53 ` Stephen Boyd
2015-01-21 10:47 ` Daniel Thompson
2015-01-21 10:47 ` Daniel Thompson
2015-01-21 13:06 ` Steven Rostedt
2015-01-21 13:06 ` Steven Rostedt
2015-01-21 13:48 ` Daniel Thompson
2015-01-21 13:48 ` Daniel Thompson
2015-01-22 11:21 ` Daniel Thompson
2015-01-22 11:21 ` Daniel Thompson
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=54B4F52D.8010403@linaro.org \
--to=daniel.thompson@linaro.org \
--cc=linux-arm-kernel@lists.infradead.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.