diff options
author | Daniel Thompson <daniel.thompson@linaro.org> | 2014-09-11 10:56:45 +0100 |
---|---|---|
committer | Daniel Thompson <daniel.thompson@linaro.org> | 2015-07-03 15:54:13 +0100 |
commit | 25481b186d4a449df390c3c66e36eb1c008fd3da (patch) | |
tree | 4a91b43ab0d191e32f7b5664420994f4139ad2fe /arch/arm/include/asm/irq.h | |
parent | 5f458e05a6d0c378269bf4650f27f22dec2a7971 (diff) |
ARM: Add support for on-demand backtrace of other CPUsdev/trigger_backtrace
Replicate the x86 code to trigger a backtrace using an NMI and hook
it up to IPI on ARM.
The code differs slightly from the code on x86 because, on ARM, we do
now know at compile time whether a platform is capable of supporting FIQ.
We must avoid using an IPI to request a backtrace from the CPU on which
the backtrace was requested if interrupts are disabled and fall back to
generating it directly.
In addition the implementation of arch_trigger_all_cpu_backtrace() the
patch also includes a few small items of plumbing that must be hooked
up for the new code to work.
Credit:
Russell King provided the initial prototype implementing this feature
for ARM. Today the patch has been reworked and, mostly, rewriten to
keep it aligned with x86. However this patch does still include some
code from Russell's original prototype.
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'arch/arm/include/asm/irq.h')
-rw-r--r-- | arch/arm/include/asm/irq.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/include/asm/irq.h b/arch/arm/include/asm/irq.h index 53c15dec7af6..be1d07d59ee9 100644 --- a/arch/arm/include/asm/irq.h +++ b/arch/arm/include/asm/irq.h @@ -35,6 +35,11 @@ extern void (*handle_arch_irq)(struct pt_regs *); extern void set_handle_irq(void (*handle_irq)(struct pt_regs *)); #endif +#ifdef CONFIG_SMP +extern void arch_trigger_all_cpu_backtrace(bool); +#define arch_trigger_all_cpu_backtrace(x) arch_trigger_all_cpu_backtrace(x) +#endif + #endif #endif |