linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: tim@krieglstein.org (Tim Sander)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3.18-rc3 v9 5/5] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available)
Date: Fri, 28 Nov 2014 10:10:04 +0100	[thread overview]
Message-ID: <13373554.4deCsZOMXS@dabox> (raw)
In-Reply-To: <5475FD02.3030501@linaro.org>

Hi Daniel, Russell

Am Mittwoch, 26. November 2014, 16:17:06 schrieb Daniel Thompson:
> On 26/11/14 13:12, Russell King - ARM Linux wrote:
> > On Wed, Nov 26, 2014 at 01:46:52PM +0100, Tim Sander wrote:
> >> Hi Daniel
> >> 
> >> Am Dienstag, 25. November 2014, 17:26:41 schrieb Daniel Thompson:
> >>> Previous changes have introduced both a replacement default FIQ handler
> >>> and an implementation of arch_trigger_all_cpu_backtrace for ARM but
> >>> these are currently independent of each other.
> >>> 
> >>> This patch plumbs together these features making it possible, on
> >>> platforms
> >>> that support it, to trigger backtrace using FIQ.
> >> 
> >> Does this ipi handler interfere in any way with set_fiq_handler?
> >> 
> >> As far as i know there is only one FIQ handler vector so i guess there is
> >> a
> >> potential conflict. But i have not worked with IPI's so i might be
> >> completley wrong.
> > 
> > First, the code in arch/arm/kernel/fiq.c should work with this new FIQ
> > code in that the new FIQ code is used as the "default" handler (as
> > opposed to the original handler which was a total no-op.)
> > 
> > Secondly, use of arch/arm/kernel/fiq.c in a SMP system is really not a
> > good idea: the FIQ registers are private to each CPU in the system, and
> > there is no infrastructure to allow fiq.c to ensure that it loads the
> > right CPU with the register information for the provided handler.
Well given the races in the GIC v1. i have seen in the chips on my desk 
initializing with for_each_possible_cpu(cpu) work_on_cpu(cpu,..) is rather 
easy. 
> > So, use of arch/arm/kernel/fiq.c and the IPI's use of FIQ /should/ be
> > mutually exclusive.
Yes but i digress on the assessment that this a decision between SMP and non-
SMP usage or the availbility of the GIC.

> Agree with the above. Just to add...
> 
> I am currently working to get NMI features from x86 land running on top
> of the new default FIQ handler: arch_trigger_all_cpu_backtrace (with
> Russell's patch), perf, hard lockup detector, kgdb.
> 
> However I don't think anything I'm doing makes it very much harder than
> it already is to use arch/arm/kernel/fiq.c . That said, other then
> setting the GIC up nicely, I am not doing anything to make it easier either.
> 
> I'd like to end up somewhere where if you want the NMI features (and
> have a suitable device) you just use the default handler and it all just
> works. If you need *Fast* Interrupt reQuests, proper old school "I want
> to write an overclocked I2C slave in software" craziness and you can
> pass on the improved debug features then set_fiq_handler() is still
> there and still need extremely careful handling.
Well i am not against these features as they assumably improve the backtrace,
but it would be nice to have a config option which switches between 
set_fiq_handler usage and the other conflicting usages of the fiq.

> The only thing I might have done to make your life worse is not provide
> the code to dynamically shunt all the debug and performance monitoring
> features back to group 1. All except the hard lockup detector will have
> logic to fall back statically. This means making it dynamic shouldn't be
> that hard. However since there is no code in the upstream kernel that
> would use the code I don't plan to go there myself.
I don't think this needs to by dynamic, but from a user perspective a config 
option would be really nice.

Tim

  reply	other threads:[~2014-11-28  9:10 UTC|newest]

Thread overview: 103+ 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 ` [PATCH 3.18-rc3 v7 1/4] irqchip: gic: Make gic_raise_softirq() FIQ-safe 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 ` [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 ` [PATCH 3.18-rc3 v7 4/4] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) 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   ` [PATCH 3.18-rc3 v8 1/4] irqchip: gic: Make gic_raise_softirq() FIQ-safe Daniel Thompson
2014-11-24 18:20     ` Thomas Gleixner
2014-11-24 18:40       ` Daniel Thompson
2014-11-24 18:48       ` Thomas Gleixner
2014-11-24 20:36         ` Daniel Thompson
2014-11-24 20:41           ` Thomas Gleixner
2014-11-24 21:09             ` Daniel Thompson
2014-11-24 20:38         ` Thomas Gleixner
2014-11-24 21:01           ` Daniel Thompson
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   ` [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   ` [PATCH 3.18-rc3 v8 4/4] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) 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-25 17:26   ` [PATCH 3.18-rc3 v9 0/5] " 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:40       ` Marc Zyngier
2014-11-25 20:17         ` Nicolas Pitre
2014-11-25 21:10           ` Daniel Thompson
2014-11-26  1:27             ` Stephen Boyd
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     ` [PATCH 3.18-rc3 v9 3/5] irqchip: gic: Introduce plumbing for IPI FIQ Daniel Thompson
2014-11-26 15:09       ` Tim Sander
2014-11-26 15:48         ` Daniel Thompson
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     ` [PATCH 3.18-rc3 v9 5/5] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) Daniel Thompson
2014-11-26 12:46       ` Tim Sander
2014-11-26 13:12         ` Russell King - ARM Linux
2014-11-26 16:17           ` Daniel Thompson
2014-11-28  9:10             ` Tim Sander [this message]
2014-11-28 10:08               ` Russell King - ARM Linux
2014-12-01 10:32                 ` Tim Sander
2014-12-01 10:38                   ` Russell King - ARM Linux
2014-12-01 13:54                     ` Tim Sander
2014-12-01 14:13                       ` Daniel Thompson
2014-12-03 13:41                         ` Tim Sander
2014-12-03 14:53                           ` Daniel Thompson
2014-12-01 15:02                       ` Russell King - ARM Linux
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     ` [PATCH 3.18-rc4 v10 1/6] irqchip: gic: Finer grain locking for gic_raise_softirq 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     ` [PATCH 3.18-rc4 v10 3/6] irqchip: gic: Make gic_raise_softirq FIQ-safe 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 17:42       ` Jason Cooper
2014-11-27 13:39         ` Daniel Thompson
2014-11-27 18:06           ` Jason Cooper
2014-11-27 19:42             ` 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     ` [PATCH 3.18-rc4 v10 6/6] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) 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     ` [PATCH 3.18-rc4 v11 1/6] irqchip: gic: Finer grain locking for gic_raise_softirq 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 21:37       ` Thomas Gleixner
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 21:45       ` Thomas Gleixner
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     ` [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     ` [PATCH 3.18-rc4 v11 6/6] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) 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     ` [PATCH 3.18-rc4 v12 1/5] irqchip: gic: Optimize locking in gic_raise_softirq 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     ` [PATCH 3.18-rc4 v12 3/5] irqchip: gic: Introduce plumbing for IPI FIQ 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     ` [PATCH 3.18-rc4 v12 5/5] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) Daniel Thompson
2014-12-08 16:00     ` [PATCH 3.18-rc4 v12 0/5] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2015-01-05 14:54   ` [PATCH 3.19-rc2 v13 " 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     ` [PATCH 3.19-rc2 v13 2/5] irqchip: gic: Make gic_raise_softirq FIQ-safe 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     ` [PATCH 3.19-rc2 v13 4/5] ARM: Add support for on-demand backtrace of other CPUs Daniel Thompson
2015-01-05 15:19       ` Steven Rostedt
2015-01-05 17:07         ` Daniel Thompson
2015-01-09 16:48         ` Russell King - ARM Linux
2015-01-11 23:37           ` Steven Rostedt
2015-01-13 10:36             ` Daniel Thompson
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-13 10:26   ` [PATCH 3.19-rc2 v14 0/7] arm: Implement arch_trigger_all_cpu_backtrace 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     ` [PATCH 3.19-rc2 v14 2/7] irqchip: gic: Make gic_raise_softirq FIQ-safe 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     ` [PATCH 3.19-rc2 v14 4/7] printk: Simple implementation for NMI backtracing 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     ` [PATCH 3.19-rc2 v14 6/7] ARM: Add support for on-demand backtrace of other CPUs 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-20 10:25     ` [PATCH 3.19-rc2 v14 0/7] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2015-01-20 20:53       ` Stephen Boyd
2015-01-21 10:47         ` Daniel Thompson
2015-01-21 13:06           ` Steven Rostedt
2015-01-21 13:48             ` 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=13373554.4deCsZOMXS@dabox \
    --to=tim@krieglstein.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).