All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Thompson <daniel.thompson@linaro.org>
To: Russell King <linux@arm.linux.org.uk>
Cc: Daniel Thompson <daniel.thompson@linaro.org>,
	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>,
	Thomas Gleixner <tglx@linutronix.de>,
	Sumit Semwal <sumit.semwal@linaro.org>,
	Catalin Marinas <catalin.marinas@arm.com>
Subject: [PATCH 3.17-rc4 v5 2/6] arm: fiq: Replace default FIQ handler
Date: Thu, 11 Sep 2014 12:31:14 +0100	[thread overview]
Message-ID: <1410435078-28462-3-git-send-email-daniel.thompson@linaro.org> (raw)
In-Reply-To: <1410435078-28462-1-git-send-email-daniel.thompson@linaro.org>

This patch introduces a new default FIQ handler that is structured in a
similar way to the existing ARM exception handler and result in the FIQ
being handled by C code running on the SVC stack (despite this code run
in the FIQ handler is subject to severe limitations with respect to
locking making normal interaction with the kernel impossible).

This default handler allows concepts that on x86 would be handled using
NMIs to be realized on ARM.

Credit:

    This patch is a near complete re-write of a patch originally
    provided by Anton Vorontsov. Today only a couple of small fragments
    survive, however without Anton's work to build from this patch would
    not exist.

Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Nicolas Pitre <nico@linaro.org>
---
 arch/arm/kernel/entry-armv.S   | 95 +++++++++++++++++++++++++++++++++++++-----
 arch/arm/kernel/entry-header.S | 47 +++++++++++++++++++++
 arch/arm/kernel/setup.c        |  8 +++-
 arch/arm/kernel/traps.c        | 26 ++++++++++++
 4 files changed, 165 insertions(+), 11 deletions(-)

diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index 36276cd..0c70fee 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -146,7 +146,7 @@ ENDPROC(__und_invalid)
 #define SPFIX(code...)
 #endif
 
-	.macro	svc_entry, stack_hole=0
+	.macro	svc_entry, stack_hole=0, call_trace=1
  UNWIND(.fnstart		)
  UNWIND(.save {r0 - pc}		)
 	sub	sp, sp, #(S_FRAME_SIZE + \stack_hole - 4)
@@ -183,7 +183,9 @@ ENDPROC(__und_invalid)
 	stmia	r7, {r2 - r6}
 
 #ifdef CONFIG_TRACE_IRQFLAGS
+	.if \call_trace
 	bl	trace_hardirqs_off
+	.endif
 #endif
 	.endm
 
@@ -295,6 +297,15 @@ __pabt_svc:
 ENDPROC(__pabt_svc)
 
 	.align	5
+__fiq_svc:
+	svc_entry 0, 0
+	mov	r0, sp				@ struct pt_regs *regs
+	bl	handle_fiq_as_nmi
+	svc_exit_via_fiq
+ UNWIND(.fnend		)
+ENDPROC(__fiq_svc)
+
+	.align	5
 .LCcralign:
 	.word	cr_alignment
 #ifdef MULTI_DABORT
@@ -305,6 +316,46 @@ ENDPROC(__pabt_svc)
 	.word	fp_enter
 
 /*
+ * Abort mode handlers
+ */
+
+@
+@ Taking a FIQ in abort mode is similar to taking a FIQ in SVC mode
+@ and reuses the same macros. However in abort mode we must also
+@ save/restore lr_abt and spsr_abt to make nested aborts safe.
+@
+	.align 5
+__fiq_abt:
+	svc_entry 0, 0
+
+ ARM(	msr	cpsr_c, #ABT_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( mov	r0, #ABT_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( msr	cpsr_c, r0 )
+	mov	r1, lr		@ Save lr_abt
+	mrs	r2, spsr	@ Save spsr_abt, abort is now safe
+ ARM(	msr	cpsr_c, #SVC_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( mov	r0, #SVC_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( msr	cpsr_c, r0 )
+	stmfd	sp!, {r1 - r2}
+
+	add	r0, sp, #8			@ struct pt_regs *regs
+	bl	handle_fiq_as_nmi
+
+	ldmfd	sp!, {r1 - r2}
+ ARM(	msr	cpsr_c, #ABT_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( mov	r0, #ABT_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( msr	cpsr_c, r0 )
+	mov	lr, r1		@ Restore lr_abt, abort is unsafe
+	msr	spsr_cxsf, r2	@ Restore spsr_abt
+ ARM(	msr	cpsr_c, #SVC_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( mov	r0, #SVC_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( msr	cpsr_c, r0 )
+
+	svc_exit_via_fiq
+ UNWIND(.fnend		)
+ENDPROC(__fiq_svc)
+
+/*
  * User mode handlers
  *
  * EABI note: sp_svc is always 64-bit aligned here, so should S_FRAME_SIZE
@@ -683,6 +734,18 @@ ENTRY(ret_from_exception)
 ENDPROC(__pabt_usr)
 ENDPROC(ret_from_exception)
 
+	.align	5
+__fiq_usr:
+	usr_entry
+	kuser_cmpxchg_check
+	mov	r0, sp				@ struct pt_regs *regs
+	bl	handle_fiq_as_nmi
+	get_thread_info tsk
+	mov	why, #0
+	b	ret_to_user_from_irq
+ UNWIND(.fnend		)
+ENDPROC(__fiq_usr)
+
 /*
  * Register switch for ARMv3 and ARMv4 processors
  * r0 = previous task_struct, r1 = previous thread_info, r2 = next thread_info
@@ -1118,17 +1181,29 @@ vector_addrexcptn:
 	b	vector_addrexcptn
 
 /*=============================================================================
- * Undefined FIQs
+ * FIQ "NMI" handler
  *-----------------------------------------------------------------------------
- * Enter in FIQ mode, spsr = ANY CPSR, lr = ANY PC
- * MUST PRESERVE SVC SPSR, but need to switch to SVC mode to show our msg.
- * Basically to switch modes, we *HAVE* to clobber one register...  brain
- * damage alert!  I don't think that we can execute any code in here in any
- * other mode than FIQ...  Ok you can switch to another mode, but you can't
- * get out of that mode without clobbering one register.
+ * Handle a FIQ using the SVC stack allowing FIQ act like NMI on x86
+ * systems.
  */
-vector_fiq:
-	subs	pc, lr, #4
+	vector_stub	fiq, FIQ_MODE, 4
+
+	.long	__fiq_usr			@  0  (USR_26 / USR_32)
+	.long	__fiq_svc			@  1  (FIQ_26 / FIQ_32)
+	.long	__fiq_svc			@  2  (IRQ_26 / IRQ_32)
+	.long	__fiq_svc			@  3  (SVC_26 / SVC_32)
+	.long	__fiq_svc			@  4
+	.long	__fiq_svc			@  5
+	.long	__fiq_svc			@  6
+	.long	__fiq_abt			@  7
+	.long	__fiq_svc			@  8
+	.long	__fiq_svc			@  9
+	.long	__fiq_svc			@  a
+	.long	__fiq_svc			@  b
+	.long	__fiq_svc			@  c
+	.long	__fiq_svc			@  d
+	.long	__fiq_svc			@  e
+	.long	__fiq_svc			@  f
 
 	.globl	vector_fiq_offset
 	.equ	vector_fiq_offset, vector_fiq
diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S
index 2fdf867..0d91ca0 100644
--- a/arch/arm/kernel/entry-header.S
+++ b/arch/arm/kernel/entry-header.S
@@ -216,6 +216,34 @@
 	ldmia	sp, {r0 - pc}^			@ load r0 - pc, cpsr
 	.endm
 
+	@
+	@ svc_exit_via_fiq - like svc_exit but switches to FIQ mode before exit
+	@
+	@ This macro acts in a similar manner to svc_exit but switches to FIQ
+	@ mode to restore the final part of the register state.
+	@
+	@ We cannot use the normal svc_exit procedure because that would
+	@ clobber spsr_svc (FIQ could be delivered during the first few
+	@ instructions of vector_swi meaning its contents have not been
+	@ saved anywhere).
+	@
+	@ Note that, unlike svc_exit, this macro also does not allow a caller
+	@ supplied rpsr. This is because the FIQ exceptions are not re-entrant
+	@ and the handlers cannot call into the scheduler (meaning the value
+	@ on the stack remains correct).
+	@
+	.macro  svc_exit_via_fiq
+	mov	r0, sp
+	ldmib	r0, {r1 - r14}	@ abort is deadly from here onward (it will
+				@ clobber state restored below)
+	msr	cpsr_c, #FIQ_MODE | PSR_I_BIT | PSR_F_BIT
+	add	r8, r0, #S_PC
+	ldr	r9, [r0, #S_PSR]
+	msr	spsr_cxsf, r9
+	ldr	r0, [r0, #S_R0]
+	ldmia	r8, {pc}^
+	.endm
+
 	.macro	restore_user_regs, fast = 0, offset = 0
 	ldr	r1, [sp, #\offset + S_PSR]	@ get calling cpsr
 	ldr	lr, [sp, #\offset + S_PC]!	@ get pc
@@ -267,6 +295,25 @@
 	rfeia	sp!
 	.endm
 
+	@
+	@ svc_exit_via_fiq - like svc_exit but switches to FIQ mode before exit
+	@
+	@ For full details see non-Thumb implementation above.
+	@
+	.macro  svc_exit_via_fiq
+	add	r0, sp, #S_R2
+	ldr	lr, [sp, #S_LR]
+	ldr	sp, [sp, #S_SP] @ abort is deadly from here onward (it will
+			        @ clobber state restored below)
+	ldmia	r0, {r2 - r12}
+	mov	r1, #FIQ_MODE | PSR_I_BIT | PSR_F_BIT
+	msr	cpsr_c, r1
+	sub	r0, #S_R2
+	add	r8, r0, #S_PC
+	ldmia	r0, {r0 - r1}
+	rfeia	r8
+	.endm
+
 #ifdef CONFIG_CPU_V7M
 	/*
 	 * Note we don't need to do clrex here as clearing the local monitor is
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index 84db893d..c031063 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -133,6 +133,7 @@ struct stack {
 	u32 irq[3];
 	u32 abt[3];
 	u32 und[3];
+	u32 fiq[3];
 } ____cacheline_aligned;
 
 #ifndef CONFIG_CPU_V7M
@@ -470,7 +471,10 @@ void notrace cpu_init(void)
 	"msr	cpsr_c, %5\n\t"
 	"add	r14, %0, %6\n\t"
 	"mov	sp, r14\n\t"
-	"msr	cpsr_c, %7"
+	"msr	cpsr_c, %7\n\t"
+	"add	r14, %0, %8\n\t"
+	"mov	sp, r14\n\t"
+	"msr	cpsr_c, %9"
 	    :
 	    : "r" (stk),
 	      PLC (PSR_F_BIT | PSR_I_BIT | IRQ_MODE),
@@ -479,6 +483,8 @@ void notrace cpu_init(void)
 	      "I" (offsetof(struct stack, abt[0])),
 	      PLC (PSR_F_BIT | PSR_I_BIT | UND_MODE),
 	      "I" (offsetof(struct stack, und[0])),
+	      PLC (PSR_F_BIT | PSR_I_BIT | FIQ_MODE),
+	      "I" (offsetof(struct stack, fiq[0])),
 	      PLC (PSR_F_BIT | PSR_I_BIT | SVC_MODE)
 	    : "r14");
 #endif
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
index a447dcc..439138d 100644
--- a/arch/arm/kernel/traps.c
+++ b/arch/arm/kernel/traps.c
@@ -25,6 +25,7 @@
 #include <linux/delay.h>
 #include <linux/init.h>
 #include <linux/sched.h>
+#include <linux/irq.h>
 
 #include <linux/atomic.h>
 #include <asm/cacheflush.h>
@@ -461,6 +462,31 @@ die_sig:
 }
 
 /*
+ * Handle FIQ similarly to NMI on x86 systems.
+ *
+ * The runtime environment for NMIs is extremely restrictive
+ * (NMIs can pre-empt critical sections meaning almost all locking is
+ * forbidden) meaning this default FIQ handling must only be used in
+ * circumstances where non-maskability improves robustness, such as
+ * watchdog or debug logic.
+ *
+ * This handler is not appropriate for general purpose use in drivers
+ * platform code and can be overrideen using set_fiq_handler.
+ */
+asmlinkage void __exception_irq_entry handle_fiq_as_nmi(struct pt_regs *regs)
+{
+	struct pt_regs *old_regs = set_irq_regs(regs);
+
+	nmi_enter();
+
+	/* nop. FIQ handlers for special arch/arm features can be added here. */
+
+	nmi_exit();
+
+	set_irq_regs(old_regs);
+}
+
+/*
  * bad_mode handles the impossible case in the vectors.  If you see one of
  * these, then it's extremely serious, and could mean you have buggy hardware.
  * It never returns, and never tries to sync.  We hope that we can at least
-- 
1.9.3


WARNING: multiple messages have this Message-ID (diff)
From: daniel.thompson@linaro.org (Daniel Thompson)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3.17-rc4 v5 2/6] arm: fiq: Replace default FIQ handler
Date: Thu, 11 Sep 2014 12:31:14 +0100	[thread overview]
Message-ID: <1410435078-28462-3-git-send-email-daniel.thompson@linaro.org> (raw)
In-Reply-To: <1410435078-28462-1-git-send-email-daniel.thompson@linaro.org>

This patch introduces a new default FIQ handler that is structured in a
similar way to the existing ARM exception handler and result in the FIQ
being handled by C code running on the SVC stack (despite this code run
in the FIQ handler is subject to severe limitations with respect to
locking making normal interaction with the kernel impossible).

This default handler allows concepts that on x86 would be handled using
NMIs to be realized on ARM.

Credit:

    This patch is a near complete re-write of a patch originally
    provided by Anton Vorontsov. Today only a couple of small fragments
    survive, however without Anton's work to build from this patch would
    not exist.

Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Nicolas Pitre <nico@linaro.org>
---
 arch/arm/kernel/entry-armv.S   | 95 +++++++++++++++++++++++++++++++++++++-----
 arch/arm/kernel/entry-header.S | 47 +++++++++++++++++++++
 arch/arm/kernel/setup.c        |  8 +++-
 arch/arm/kernel/traps.c        | 26 ++++++++++++
 4 files changed, 165 insertions(+), 11 deletions(-)

diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index 36276cd..0c70fee 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -146,7 +146,7 @@ ENDPROC(__und_invalid)
 #define SPFIX(code...)
 #endif
 
-	.macro	svc_entry, stack_hole=0
+	.macro	svc_entry, stack_hole=0, call_trace=1
  UNWIND(.fnstart		)
  UNWIND(.save {r0 - pc}		)
 	sub	sp, sp, #(S_FRAME_SIZE + \stack_hole - 4)
@@ -183,7 +183,9 @@ ENDPROC(__und_invalid)
 	stmia	r7, {r2 - r6}
 
 #ifdef CONFIG_TRACE_IRQFLAGS
+	.if \call_trace
 	bl	trace_hardirqs_off
+	.endif
 #endif
 	.endm
 
@@ -295,6 +297,15 @@ __pabt_svc:
 ENDPROC(__pabt_svc)
 
 	.align	5
+__fiq_svc:
+	svc_entry 0, 0
+	mov	r0, sp				@ struct pt_regs *regs
+	bl	handle_fiq_as_nmi
+	svc_exit_via_fiq
+ UNWIND(.fnend		)
+ENDPROC(__fiq_svc)
+
+	.align	5
 .LCcralign:
 	.word	cr_alignment
 #ifdef MULTI_DABORT
@@ -305,6 +316,46 @@ ENDPROC(__pabt_svc)
 	.word	fp_enter
 
 /*
+ * Abort mode handlers
+ */
+
+@
+@ Taking a FIQ in abort mode is similar to taking a FIQ in SVC mode
+@ and reuses the same macros. However in abort mode we must also
+@ save/restore lr_abt and spsr_abt to make nested aborts safe.
+@
+	.align 5
+__fiq_abt:
+	svc_entry 0, 0
+
+ ARM(	msr	cpsr_c, #ABT_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( mov	r0, #ABT_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( msr	cpsr_c, r0 )
+	mov	r1, lr		@ Save lr_abt
+	mrs	r2, spsr	@ Save spsr_abt, abort is now safe
+ ARM(	msr	cpsr_c, #SVC_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( mov	r0, #SVC_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( msr	cpsr_c, r0 )
+	stmfd	sp!, {r1 - r2}
+
+	add	r0, sp, #8			@ struct pt_regs *regs
+	bl	handle_fiq_as_nmi
+
+	ldmfd	sp!, {r1 - r2}
+ ARM(	msr	cpsr_c, #ABT_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( mov	r0, #ABT_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( msr	cpsr_c, r0 )
+	mov	lr, r1		@ Restore lr_abt, abort is unsafe
+	msr	spsr_cxsf, r2	@ Restore spsr_abt
+ ARM(	msr	cpsr_c, #SVC_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( mov	r0, #SVC_MODE | PSR_I_BIT | PSR_F_BIT )
+ THUMB( msr	cpsr_c, r0 )
+
+	svc_exit_via_fiq
+ UNWIND(.fnend		)
+ENDPROC(__fiq_svc)
+
+/*
  * User mode handlers
  *
  * EABI note: sp_svc is always 64-bit aligned here, so should S_FRAME_SIZE
@@ -683,6 +734,18 @@ ENTRY(ret_from_exception)
 ENDPROC(__pabt_usr)
 ENDPROC(ret_from_exception)
 
+	.align	5
+__fiq_usr:
+	usr_entry
+	kuser_cmpxchg_check
+	mov	r0, sp				@ struct pt_regs *regs
+	bl	handle_fiq_as_nmi
+	get_thread_info tsk
+	mov	why, #0
+	b	ret_to_user_from_irq
+ UNWIND(.fnend		)
+ENDPROC(__fiq_usr)
+
 /*
  * Register switch for ARMv3 and ARMv4 processors
  * r0 = previous task_struct, r1 = previous thread_info, r2 = next thread_info
@@ -1118,17 +1181,29 @@ vector_addrexcptn:
 	b	vector_addrexcptn
 
 /*=============================================================================
- * Undefined FIQs
+ * FIQ "NMI" handler
  *-----------------------------------------------------------------------------
- * Enter in FIQ mode, spsr = ANY CPSR, lr = ANY PC
- * MUST PRESERVE SVC SPSR, but need to switch to SVC mode to show our msg.
- * Basically to switch modes, we *HAVE* to clobber one register...  brain
- * damage alert!  I don't think that we can execute any code in here in any
- * other mode than FIQ...  Ok you can switch to another mode, but you can't
- * get out of that mode without clobbering one register.
+ * Handle a FIQ using the SVC stack allowing FIQ act like NMI on x86
+ * systems.
  */
-vector_fiq:
-	subs	pc, lr, #4
+	vector_stub	fiq, FIQ_MODE, 4
+
+	.long	__fiq_usr			@  0  (USR_26 / USR_32)
+	.long	__fiq_svc			@  1  (FIQ_26 / FIQ_32)
+	.long	__fiq_svc			@  2  (IRQ_26 / IRQ_32)
+	.long	__fiq_svc			@  3  (SVC_26 / SVC_32)
+	.long	__fiq_svc			@  4
+	.long	__fiq_svc			@  5
+	.long	__fiq_svc			@  6
+	.long	__fiq_abt			@  7
+	.long	__fiq_svc			@  8
+	.long	__fiq_svc			@  9
+	.long	__fiq_svc			@  a
+	.long	__fiq_svc			@  b
+	.long	__fiq_svc			@  c
+	.long	__fiq_svc			@  d
+	.long	__fiq_svc			@  e
+	.long	__fiq_svc			@  f
 
 	.globl	vector_fiq_offset
 	.equ	vector_fiq_offset, vector_fiq
diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S
index 2fdf867..0d91ca0 100644
--- a/arch/arm/kernel/entry-header.S
+++ b/arch/arm/kernel/entry-header.S
@@ -216,6 +216,34 @@
 	ldmia	sp, {r0 - pc}^			@ load r0 - pc, cpsr
 	.endm
 
+	@
+	@ svc_exit_via_fiq - like svc_exit but switches to FIQ mode before exit
+	@
+	@ This macro acts in a similar manner to svc_exit but switches to FIQ
+	@ mode to restore the final part of the register state.
+	@
+	@ We cannot use the normal svc_exit procedure because that would
+	@ clobber spsr_svc (FIQ could be delivered during the first few
+	@ instructions of vector_swi meaning its contents have not been
+	@ saved anywhere).
+	@
+	@ Note that, unlike svc_exit, this macro also does not allow a caller
+	@ supplied rpsr. This is because the FIQ exceptions are not re-entrant
+	@ and the handlers cannot call into the scheduler (meaning the value
+	@ on the stack remains correct).
+	@
+	.macro  svc_exit_via_fiq
+	mov	r0, sp
+	ldmib	r0, {r1 - r14}	@ abort is deadly from here onward (it will
+				@ clobber state restored below)
+	msr	cpsr_c, #FIQ_MODE | PSR_I_BIT | PSR_F_BIT
+	add	r8, r0, #S_PC
+	ldr	r9, [r0, #S_PSR]
+	msr	spsr_cxsf, r9
+	ldr	r0, [r0, #S_R0]
+	ldmia	r8, {pc}^
+	.endm
+
 	.macro	restore_user_regs, fast = 0, offset = 0
 	ldr	r1, [sp, #\offset + S_PSR]	@ get calling cpsr
 	ldr	lr, [sp, #\offset + S_PC]!	@ get pc
@@ -267,6 +295,25 @@
 	rfeia	sp!
 	.endm
 
+	@
+	@ svc_exit_via_fiq - like svc_exit but switches to FIQ mode before exit
+	@
+	@ For full details see non-Thumb implementation above.
+	@
+	.macro  svc_exit_via_fiq
+	add	r0, sp, #S_R2
+	ldr	lr, [sp, #S_LR]
+	ldr	sp, [sp, #S_SP] @ abort is deadly from here onward (it will
+			        @ clobber state restored below)
+	ldmia	r0, {r2 - r12}
+	mov	r1, #FIQ_MODE | PSR_I_BIT | PSR_F_BIT
+	msr	cpsr_c, r1
+	sub	r0, #S_R2
+	add	r8, r0, #S_PC
+	ldmia	r0, {r0 - r1}
+	rfeia	r8
+	.endm
+
 #ifdef CONFIG_CPU_V7M
 	/*
 	 * Note we don't need to do clrex here as clearing the local monitor is
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index 84db893d..c031063 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -133,6 +133,7 @@ struct stack {
 	u32 irq[3];
 	u32 abt[3];
 	u32 und[3];
+	u32 fiq[3];
 } ____cacheline_aligned;
 
 #ifndef CONFIG_CPU_V7M
@@ -470,7 +471,10 @@ void notrace cpu_init(void)
 	"msr	cpsr_c, %5\n\t"
 	"add	r14, %0, %6\n\t"
 	"mov	sp, r14\n\t"
-	"msr	cpsr_c, %7"
+	"msr	cpsr_c, %7\n\t"
+	"add	r14, %0, %8\n\t"
+	"mov	sp, r14\n\t"
+	"msr	cpsr_c, %9"
 	    :
 	    : "r" (stk),
 	      PLC (PSR_F_BIT | PSR_I_BIT | IRQ_MODE),
@@ -479,6 +483,8 @@ void notrace cpu_init(void)
 	      "I" (offsetof(struct stack, abt[0])),
 	      PLC (PSR_F_BIT | PSR_I_BIT | UND_MODE),
 	      "I" (offsetof(struct stack, und[0])),
+	      PLC (PSR_F_BIT | PSR_I_BIT | FIQ_MODE),
+	      "I" (offsetof(struct stack, fiq[0])),
 	      PLC (PSR_F_BIT | PSR_I_BIT | SVC_MODE)
 	    : "r14");
 #endif
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
index a447dcc..439138d 100644
--- a/arch/arm/kernel/traps.c
+++ b/arch/arm/kernel/traps.c
@@ -25,6 +25,7 @@
 #include <linux/delay.h>
 #include <linux/init.h>
 #include <linux/sched.h>
+#include <linux/irq.h>
 
 #include <linux/atomic.h>
 #include <asm/cacheflush.h>
@@ -461,6 +462,31 @@ die_sig:
 }
 
 /*
+ * Handle FIQ similarly to NMI on x86 systems.
+ *
+ * The runtime environment for NMIs is extremely restrictive
+ * (NMIs can pre-empt critical sections meaning almost all locking is
+ * forbidden) meaning this default FIQ handling must only be used in
+ * circumstances where non-maskability improves robustness, such as
+ * watchdog or debug logic.
+ *
+ * This handler is not appropriate for general purpose use in drivers
+ * platform code and can be overrideen using set_fiq_handler.
+ */
+asmlinkage void __exception_irq_entry handle_fiq_as_nmi(struct pt_regs *regs)
+{
+	struct pt_regs *old_regs = set_irq_regs(regs);
+
+	nmi_enter();
+
+	/* nop. FIQ handlers for special arch/arm features can be added here. */
+
+	nmi_exit();
+
+	set_irq_regs(old_regs);
+}
+
+/*
  * bad_mode handles the impossible case in the vectors.  If you see one of
  * these, then it's extremely serious, and could mean you have buggy hardware.
  * It never returns, and never tries to sync.  We hope that we can at least
-- 
1.9.3

  parent reply	other threads:[~2014-09-11 11:31 UTC|newest]

Thread overview: 535+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-14 15:58 [RFC 0/8] kgdb: NMI/FIQ support for ARM Daniel Thompson
2014-05-14 15:58 ` Daniel Thompson
2014-05-14 15:58 ` [RFC 1/8] arm: fiq: Allow EOI to be communicated to the intc Daniel Thompson
2014-05-14 15:58   ` Daniel Thompson
2014-05-14 15:58 ` [RFC 2/8] irqchip: gic: Provide support for interrupt grouping Daniel Thompson
2014-05-14 15:58   ` Daniel Thompson
2014-05-14 15:58 ` [RFC 3/8] ARM: Move some macros from entry-armv to entry-header Daniel Thompson
2014-05-14 15:58   ` Daniel Thompson
2014-05-14 15:58 ` [RFC 4/8] ARM: Add KGDB/KDB FIQ debugger generic code Daniel Thompson
2014-05-14 15:58   ` Daniel Thompson
2014-05-14 15:58 ` [RFC 5/8] serial: amba-pl011: Pass on FIQ information to KGDB Daniel Thompson
2014-05-14 15:58   ` Daniel Thompson
2014-05-14 15:58 ` [RFC 6/8] serial: asc: Add support for KGDB's FIQ/NMI mode Daniel Thompson
2014-05-14 15:58   ` Daniel Thompson
2014-05-14 15:58 ` [RFC 7/8] ARM: VIC: Add vic_set_fiq function to select if an interrupt should generate an IRQ or FIQ Daniel Thompson
2014-05-14 15:58   ` Daniel Thompson
2014-05-14 15:58 ` [RFC 8/8] arm: fiq: Hack FIQ routing backdoors into GIC and VIC Daniel Thompson
2014-05-14 15:58   ` Daniel Thompson
2014-05-23 13:57 ` [RFC v2 00/10] kgdb: NMI/FIQ support for ARM Daniel Thompson
2014-05-23 13:57   ` Daniel Thompson
2014-05-23 13:57   ` [RFC v2 01/10] arm: fiq: Allow EOI to be communicated to the intc Daniel Thompson
2014-05-23 13:57     ` Daniel Thompson
2014-05-23 14:59     ` Srinivas Kandagatla
2014-05-23 14:59       ` Srinivas Kandagatla
2014-05-23 15:00     ` Russell King - ARM Linux
2014-05-23 15:00       ` Russell King - ARM Linux
2014-05-28 15:47       ` Daniel Thompson
2014-05-28 15:47         ` Daniel Thompson
2014-05-23 13:57   ` [RFC v2 02/10] irqchip: gic: Provide support for interrupt grouping Daniel Thompson
2014-05-23 13:57     ` Daniel Thompson
2014-05-23 13:57   ` [RFC v2 03/10] irqchip: gic: Introduce shadow irqs for FIQ Daniel Thompson
2014-05-23 13:57     ` Daniel Thompson
2014-05-23 13:57   ` [RFC v2 04/10] ARM: vexpress: Extend UART with FIQ support Daniel Thompson
2014-05-23 13:57     ` Daniel Thompson
2014-05-23 15:04     ` Russell King - ARM Linux
2014-05-23 15:04       ` Russell King - ARM Linux
2014-05-29 10:31       ` Daniel Thompson
2014-05-29 10:31         ` Daniel Thompson
2014-05-29 13:44         ` Rob Herring
2014-05-29 13:44           ` Rob Herring
2014-06-03 12:41           ` Daniel Thompson
2014-06-03 12:41             ` Daniel Thompson
2014-05-23 13:57   ` [RFC v2 05/10] ARM: STi: STiH41x: " Daniel Thompson
2014-05-23 13:57     ` Daniel Thompson
2014-05-23 13:57   ` [RFC v2 06/10] irqchip: vic: Introduce shadow irqs for FIQ Daniel Thompson
2014-05-23 13:57     ` Daniel Thompson
2014-05-23 13:57   ` [RFC v2 07/10] ARM: Move some macros from entry-armv to entry-header Daniel Thompson
2014-05-23 13:57     ` Daniel Thompson
2014-05-23 13:57   ` [RFC v2 08/10] ARM: Add KGDB/KDB FIQ debugger generic code Daniel Thompson
2014-05-23 13:57     ` Daniel Thompson
2014-05-23 13:57   ` [RFC v2 09/10] serial: amba-pl011: Pass on FIQ information to KGDB Daniel Thompson
2014-05-23 13:57     ` Daniel Thompson
2014-05-23 13:57   ` [RFC v2 10/10] serial: asc: Add support for KGDB's FIQ/NMI mode Daniel Thompson
2014-05-23 13:57     ` Daniel Thompson
2014-05-23 14:50     ` Srinivas Kandagatla
2014-05-23 14:50       ` Srinivas Kandagatla
2014-06-05  9:53   ` [RFC v3 0/9] kgdb: NMI/FIQ support for ARM Daniel Thompson
2014-06-05  9:53     ` Daniel Thompson
2014-06-05  9:53     ` [RFC v3 1/9] arm: fiq: arbitrary mappings from IRQ to FIQ virqs Daniel Thompson
2014-06-05  9:53       ` Daniel Thompson
2014-06-05 11:51       ` Russell King - ARM Linux
2014-06-05 11:51         ` Russell King - ARM Linux
2014-06-05 13:08         ` Daniel Thompson
2014-06-05 13:08           ` Daniel Thompson
2014-06-12  8:37       ` Linus Walleij
2014-06-12  8:37         ` Linus Walleij
2014-06-12  9:54         ` Daniel Thompson
2014-06-12  9:54           ` Daniel Thompson
2014-06-13 14:29       ` Rob Herring
2014-06-13 14:29         ` Rob Herring
2014-06-18 11:24         ` Daniel Thompson
2014-06-18 11:24           ` Daniel Thompson
2014-06-05  9:53     ` [RFC v3 2/9] arm: fiq: Allow EOI to be communicated to the intc Daniel Thompson
2014-06-05  9:53       ` Daniel Thompson
2014-06-05  9:53     ` [RFC v3 3/9] irqchip: gic: Provide support for interrupt grouping Daniel Thompson
2014-06-05  9:53       ` Daniel Thompson
2014-06-05 19:50       ` Nicolas Pitre
2014-06-05 19:50         ` Nicolas Pitre
2014-06-05  9:53     ` [RFC v3 4/9] irqchip: gic: Introduce shadow irqs for FIQ Daniel Thompson
2014-06-05  9:53       ` Daniel Thompson
2014-06-06  7:46       ` Peter De Schrijver
2014-06-06  7:46         ` Peter De Schrijver
2014-06-06  9:23         ` Daniel Thompson
2014-06-06  9:23           ` Daniel Thompson
2014-06-05  9:53     ` [RFC v3 5/9] irqchip: vic: " Daniel Thompson
2014-06-05  9:53       ` Daniel Thompson
2014-06-05  9:53     ` [RFC v3 6/9] ARM: Move some macros from entry-armv to entry-header Daniel Thompson
2014-06-05  9:53       ` Daniel Thompson
2014-06-05  9:53     ` [RFC v3 7/9] ARM: Add KGDB/KDB FIQ debugger generic code Daniel Thompson
2014-06-05  9:53       ` Daniel Thompson
2014-06-05  9:53     ` [RFC v3 8/9] serial: amba-pl011: Pass on FIQ information to KGDB Daniel Thompson
2014-06-05  9:53       ` Daniel Thompson
2014-06-05  9:53     ` [RFC v3 9/9] serial: asc: Add support for KGDB's FIQ/NMI mode Daniel Thompson
2014-06-05  9:53       ` Daniel Thompson
2014-06-19 10:38     ` [PATCH v4 00/13] kgdb: NMI/FIQ support for ARM Daniel Thompson
2014-06-19 10:38       ` Daniel Thompson
2014-06-19 10:38       ` [PATCH v4 01/13] arm: fiq: Add callbacks to manage FIQ routings Daniel Thompson
2014-06-19 10:38         ` Daniel Thompson
2014-06-19 10:38       ` [PATCH v4 02/13] arm: fiq: Allow EOI to be communicated to the intc Daniel Thompson
2014-06-19 10:38         ` Daniel Thompson
2014-06-19 10:38       ` [PATCH v4 03/13] irqchip: gic: Provide support for interrupt grouping Daniel Thompson
2014-06-19 10:38         ` Daniel Thompson
2014-06-19 10:38       ` [PATCH v4 04/13] irqchip: gic: Add support for FIQ management Daniel Thompson
2014-06-19 10:38         ` Daniel Thompson
2014-06-19 10:38       ` [PATCH v4 05/13] irqchip: gic: Remove spin locks from eoi_irq Daniel Thompson
2014-06-19 10:38         ` Daniel Thompson
2014-06-19 10:38       ` [PATCH v4 06/13] irqchip: vic: Add support for FIQ management Daniel Thompson
2014-06-19 10:38         ` Daniel Thompson
2014-06-19 10:38       ` [PATCH v4 07/13] ARM: Move some macros from entry-armv to entry-header Daniel Thompson
2014-06-19 10:38         ` Daniel Thompson
2014-06-19 10:38       ` [PATCH v4 08/13] ARM: Add KGDB/KDB FIQ debugger generic code Daniel Thompson
2014-06-19 10:38         ` Daniel Thompson
2014-06-19 10:38       ` [PATCH v4 09/13] serial: amba-pl011: Pass FIQ information to KGDB Daniel Thompson
2014-06-19 10:38         ` Daniel Thompson
2014-06-20  0:36         ` Greg Kroah-Hartman
2014-06-20  0:36           ` Greg Kroah-Hartman
2014-06-19 10:38       ` [PATCH v4 10/13] serial: asc: Add support for KGDB's FIQ/NMI mode Daniel Thompson
2014-06-19 10:38         ` Daniel Thompson
2014-06-20  0:36         ` Greg Kroah-Hartman
2014-06-20  0:36           ` Greg Kroah-Hartman
2014-06-19 10:38       ` [PATCH v4 11/13] serial: asc: Adopt readl_/writel_relaxed() Daniel Thompson
2014-06-19 10:38         ` Daniel Thompson
2014-06-19 11:29         ` Srinivas Kandagatla
2014-06-19 11:29           ` Srinivas Kandagatla
2014-06-19 11:46           ` Daniel Thompson
2014-06-19 11:46             ` Daniel Thompson
2014-06-19 11:58             ` Maxime Coquelin
2014-06-19 11:58               ` Maxime Coquelin
2014-06-19 12:01             ` Srinivas Kandagatla
2014-06-19 12:01               ` Srinivas Kandagatla
2014-06-19 13:12               ` Daniel Thompson
2014-06-19 13:12                 ` Daniel Thompson
2014-06-19 10:38       ` [PATCH v4 12/13] serial: imx: clean up imx_poll_get_char() Daniel Thompson
2014-06-19 10:38         ` Daniel Thompson
2014-06-19 10:38       ` [PATCH v4 13/13] serial: imx: Add support for KGDB's FIQ/NMI mode Daniel Thompson
2014-06-19 10:38         ` Daniel Thompson
2014-06-24 15:18       ` [PATCH v6 0/4] arm: KGDB NMI/FIQ support Daniel Thompson
2014-06-24 15:18         ` Daniel Thompson
2014-06-24 15:18         ` [PATCH v6 1/4] arm: fiq: Add callbacks to manage FIQ routings Daniel Thompson
2014-06-24 15:18           ` Daniel Thompson
2014-06-24 15:44           ` Nicolas Pitre
2014-06-24 15:44             ` Nicolas Pitre
2014-06-24 15:58             ` Daniel Thompson
2014-06-24 15:58               ` Daniel Thompson
2014-06-24 15:18         ` [PATCH v6 2/4] arm: fiq: Allow EOI to be communicated to the intc Daniel Thompson
2014-06-24 15:18           ` Daniel Thompson
2014-06-24 15:46           ` Nicolas Pitre
2014-06-24 15:46             ` Nicolas Pitre
2014-06-24 15:18         ` [PATCH v6 3/4] ARM: Move some macros from entry-armv to entry-header Daniel Thompson
2014-06-24 15:18           ` Daniel Thompson
2014-06-24 15:53           ` Nicolas Pitre
2014-06-24 15:53             ` Nicolas Pitre
2014-06-24 15:18         ` [PATCH v6 4/4] ARM: Add KGDB/KDB FIQ debugger generic code Daniel Thompson
2014-06-24 15:18           ` Daniel Thompson
2014-06-24 16:08           ` Russell King - ARM Linux
2014-06-24 16:08             ` Russell King - ARM Linux
2014-06-26  9:54             ` Daniel Thompson
2014-06-26  9:54               ` Daniel Thompson
2014-06-30 13:54               ` Daniel Thompson
2014-06-30 13:54                 ` Daniel Thompson
2014-06-24 16:22           ` Nicolas Pitre
2014-06-24 16:22             ` Nicolas Pitre
2014-06-26 12:48             ` Daniel Thompson
2014-06-26 12:48               ` Daniel Thompson
2014-06-30  8:53         ` [PATCH v7 0/4] arm: KGDB NMI/FIQ support Daniel Thompson
2014-06-30  8:53           ` Daniel Thompson
2014-06-30  8:53           ` [PATCH v7 1/4] arm: fiq: Add callbacks to manage FIQ routings Daniel Thompson
2014-06-30  8:53             ` Daniel Thompson
2014-06-30  8:53           ` [PATCH v7 2/4] arm: fiq: Allow EOI to be communicated to the intc Daniel Thompson
2014-06-30  8:53             ` Daniel Thompson
2014-06-30  8:53           ` [PATCH v7 3/4] ARM: Move some macros from entry-armv to entry-header Daniel Thompson
2014-06-30  8:53             ` Daniel Thompson
2014-06-30  8:53           ` [PATCH v7 4/4] ARM: Add KGDB/KDB FIQ debugger generic code Daniel Thompson
2014-06-30  8:53             ` Daniel Thompson
2014-07-10  8:03           ` [PATCH v8 0/4] arm: KGDB NMI/FIQ support Daniel Thompson
2014-07-10  8:03             ` Daniel Thompson
2014-07-10  8:03             ` [PATCH v8 1/4] arm: fiq: Add callbacks to manage FIQ routings Daniel Thompson
2014-07-10  8:03               ` Daniel Thompson
2014-07-10  8:03             ` [PATCH v8 2/4] arm: fiq: Allow ACK and EOI to be passed to the intc Daniel Thompson
2014-07-10  8:03               ` Daniel Thompson
2014-07-10  8:03             ` [PATCH v8 3/4] ARM: Move some macros from entry-armv to entry-header Daniel Thompson
2014-07-10  8:03               ` Daniel Thompson
2014-07-10  8:03             ` [PATCH v8 4/4] ARM: Add KGDB/KDB FIQ debugger generic code Daniel Thompson
2014-07-10  8:03               ` Daniel Thompson
2014-08-13 21:45               ` Russell King - ARM Linux
2014-08-13 21:45                 ` Russell King - ARM Linux
2014-08-14 10:48                 ` Daniel Thompson
2014-08-14 10:48                   ` Daniel Thompson
2014-08-14 11:15                   ` [RFC PATCH 0/3] arm: FIQ IPI support Daniel Thompson
2014-08-14 11:15                     ` Daniel Thompson
2014-08-14 11:15                     ` [RFC PATCH 1/3] arm: smp: Introduce a special IPI signalled using FIQ Daniel Thompson
2014-08-14 11:15                       ` Daniel Thompson
2014-08-14 11:15                     ` [RFC PATCH 2/3] arm: kgdb: Add support for IPI FIQ roundup Daniel Thompson
2014-08-14 11:15                       ` Daniel Thompson
2014-08-14 11:15                     ` [RFC PATCH 3/3] irqchip: gic: Add support for IPI FIQ Daniel Thompson
2014-08-14 11:15                       ` Daniel Thompson
2014-08-14 12:36                   ` [PATCH v8 4/4] ARM: Add KGDB/KDB FIQ debugger generic code Russell King - ARM Linux
2014-08-14 12:36                     ` Russell King - ARM Linux
2014-08-14 15:02                     ` Daniel Thompson
2014-08-14 15:02                       ` Daniel Thompson
2014-07-14 13:51             ` [PATCH v8 0/4] arm: KGDB NMI/FIQ support Harro Haan
2014-07-14 13:51               ` Harro Haan
2014-07-15  9:41               ` Daniel Thompson
2014-07-15  9:41                 ` Daniel Thompson
2014-07-15 13:04                 ` Harro Haan
2014-07-15 13:04                   ` Harro Haan
2014-07-15 14:52                   ` Daniel Thompson
2014-07-15 14:52                     ` Daniel Thompson
2014-07-15 15:59                     ` Harro Haan
2014-07-15 15:59                       ` Harro Haan
2014-07-15 17:08                       ` Daniel Thompson
2014-07-15 17:08                         ` Daniel Thompson
2014-07-16 17:15                         ` Harro Haan
2014-07-16 17:15                           ` Harro Haan
2014-07-17  9:01                           ` Daniel Thompson
2014-07-17  9:01                             ` Daniel Thompson
2014-07-15 18:45                 ` Marek Vasut
2014-07-15 18:45                   ` Marek Vasut
2014-07-16 12:54                   ` Daniel Thompson
2014-07-16 12:54                     ` Daniel Thompson
2014-07-16 17:21                     ` Harro Haan
2014-07-16 17:21                       ` Harro Haan
2014-07-17  9:20                       ` Daniel Thompson
2014-07-17  9:20                         ` Daniel Thompson
2014-08-18 13:40             ` [PATCH v9 00/16] " Daniel Thompson
2014-08-18 13:40               ` Daniel Thompson
2014-08-18 13:40               ` [PATCH v9 01/16] arm: fiq: Add callbacks to manage FIQ routings Daniel Thompson
2014-08-18 13:40                 ` Daniel Thompson
2014-08-18 13:40               ` [PATCH v9 02/16] arm: fiq: Allow ACK and EOI to be passed to the intc Daniel Thompson
2014-08-18 13:40                 ` Daniel Thompson
2014-08-18 13:40               ` [PATCH v9 03/16] arm: fiq: Replace default FIQ handler Daniel Thompson
2014-08-18 13:40                 ` Daniel Thompson
2014-08-18 13:40               ` [PATCH v9 04/16] arm: smp: Introduce a special IPI signalled using FIQ Daniel Thompson
2014-08-18 13:40                 ` Daniel Thompson
2014-08-18 13:40               ` [PATCH v9 05/16] arm: KGDB/KDB FIQ support Daniel Thompson
2014-08-18 13:40                 ` Daniel Thompson
2014-08-19 16:45               ` [PATCH v10 00/19] arm: KGDB NMI/FIQ support Daniel Thompson
2014-08-19 16:45                 ` Daniel Thompson
2014-08-19 16:45                 ` [PATCH v10 01/19] arm: fiq: Add callbacks to manage FIQ routings Daniel Thompson
2014-08-19 16:45                   ` Daniel Thompson
2014-08-19 16:45                 ` [PATCH v10 02/19] arm: fiq: Allow ACK and EOI to be passed to the intc Daniel Thompson
2014-08-19 16:45                   ` Daniel Thompson
2014-08-19 16:45                 ` [PATCH v10 03/19] arm: fiq: Replace default FIQ handler Daniel Thompson
2014-08-19 16:45                   ` Daniel Thompson
2014-08-19 17:37                   ` Russell King - ARM Linux
2014-08-19 17:37                     ` Russell King - ARM Linux
2014-08-19 18:12                     ` Daniel Thompson
2014-08-19 18:12                       ` Daniel Thompson
2014-08-28 15:01                       ` Russell King - ARM Linux
2014-08-28 15:01                         ` Russell King - ARM Linux
2014-08-28 15:43                         ` Paul E. McKenney
2014-08-28 15:43                           ` Paul E. McKenney
2014-08-28 15:54                         ` Daniel Thompson
2014-08-28 15:54                           ` Daniel Thompson
2014-08-28 16:15                           ` Paul E. McKenney
2014-08-28 16:15                             ` Paul E. McKenney
2014-09-02 11:03                             ` Daniel Thompson
2014-09-02 11:03                               ` Daniel Thompson
2014-09-02 11:36                               ` Russell King - ARM Linux
2014-09-02 11:36                                 ` Russell King - ARM Linux
2014-09-02 11:49                         ` Daniel Thompson
2014-09-02 11:49                           ` Daniel Thompson
2014-09-02 14:23                           ` Paul E. McKenney
2014-09-02 14:23                             ` Paul E. McKenney
2014-09-02 16:42                           ` Russell King - ARM Linux
2014-09-02 16:42                             ` Russell King - ARM Linux
2014-09-03 10:21                             ` Daniel Thompson
2014-09-03 10:21                               ` Daniel Thompson
2014-09-03 19:34                               ` Russell King - ARM Linux
2014-09-03 19:34                                 ` Russell King - ARM Linux
2014-09-04  9:09                                 ` Daniel Thompson
2014-09-04  9:09                                   ` Daniel Thompson
2014-09-04  9:45                                   ` Russell King - ARM Linux
2014-09-04  9:45                                     ` Russell King - ARM Linux
2014-09-04 10:04                                     ` Daniel Thompson
2014-09-04 10:04                                       ` Daniel Thompson
2014-08-19 16:45                 ` [PATCH v10 04/19] arm: smp: Introduce a special IPI signalled using FIQ Daniel Thompson
2014-08-19 16:45                   ` Daniel Thompson
2014-08-19 16:45                 ` [PATCH v10 05/19] arm: KGDB/KDB FIQ support Daniel Thompson
2014-08-19 16:45                   ` Daniel Thompson
2014-08-19 16:45                 ` [PATCH v10 06/19] irqchip: gic: Provide support for interrupt grouping Daniel Thompson
2014-08-19 16:45                   ` Daniel Thompson
2014-08-19 16:45                 ` [PATCH v10 07/19] irqchip: gic: Add support for FIQ management Daniel Thompson
2014-08-19 16:45                   ` Daniel Thompson
2014-08-19 16:45                 ` [PATCH v10 08/19] irqchip: gic: Remove spin locks from eoi_irq Daniel Thompson
2014-08-19 16:45                   ` Daniel Thompson
2014-08-19 16:45                 ` [PATCH v10 09/19] irqchip: gic: Add support for IPI FIQ Daniel Thompson
2014-08-19 16:45                   ` Daniel Thompson
2014-08-19 16:46                 ` [PATCH v10 10/19] irqchip: gic: Group 0 workaround Daniel Thompson
2014-08-19 16:46                   ` Daniel Thompson
2014-08-19 16:46                 ` [PATCH v10 11/19] irqchip: vic: Add support for FIQ management Daniel Thompson
2014-08-19 16:46                   ` Daniel Thompson
2014-08-19 16:46                   ` Daniel Thompson
2014-08-19 16:46                 ` [PATCH v10 12/19] serial: kgdb_nmi: No CON_ENABLED by default Daniel Thompson
2014-08-19 16:46                   ` Daniel Thompson
2014-08-19 16:46                 ` [PATCH v10 13/19] serial: amba-pl011: Use container_of() to get uart_amba_port Daniel Thompson
2014-08-19 16:46                   ` Daniel Thompson
2014-08-19 16:46                 ` [PATCH v10 14/19] serial: amba-pl011: Move pl011_hwinit() Daniel Thompson
2014-08-19 16:46                   ` Daniel Thompson
2014-08-19 16:46                 ` [PATCH v10 15/19] serial: amba-pl011: Pass FIQ information to KGDB Daniel Thompson
2014-08-19 16:46                   ` Daniel Thompson
2014-08-19 16:46                 ` [PATCH v10 16/19] serial: asc: Add support for KGDB's FIQ/NMI mode Daniel Thompson
2014-08-19 16:46                   ` Daniel Thompson
2014-08-19 16:46                   ` Daniel Thompson
2014-08-19 16:46                 ` [PATCH v10 17/19] serial: asc: Adopt readl_/writel_relaxed() Daniel Thompson
2014-08-19 16:46                   ` Daniel Thompson
2014-08-19 16:46                   ` Daniel Thompson
2014-08-19 16:46                 ` [PATCH v10 18/19] serial: imx: clean up imx_poll_get_char() Daniel Thompson
2014-08-19 16:46                   ` Daniel Thompson
2014-08-19 16:46                 ` [PATCH v10 19/19] serial: imx: Add support for KGDB's FIQ/NMI mode Daniel Thompson
2014-08-19 16:46                   ` Daniel Thompson
2014-09-02 13:00                 ` [PATCH v11 00/19] arm: KGDB NMI/FIQ support Daniel Thompson
2014-09-02 13:00                   ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 01/19] arm: fiq: Add callbacks to manage FIQ routings Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 18:51                     ` Russell King - ARM Linux
2014-09-02 18:51                       ` Russell King - ARM Linux
2014-09-03  0:03                     ` Thomas Gleixner
2014-09-03  0:03                       ` Thomas Gleixner
2014-09-03  8:27                       ` Daniel Thompson
2014-09-03  8:27                         ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 02/19] arm: fiq: Allow ACK and EOI to be passed to the intc Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 03/19] arm: fiq: Replace default FIQ handler Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 04/19] arm: smp: Introduce a special IPI signalled using FIQ Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 05/19] arm: KGDB/KDB FIQ support Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 06/19] irqchip: gic: Provide support for interrupt grouping Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 19:33                     ` Russell King - ARM Linux
2014-09-02 19:33                       ` Russell King - ARM Linux
2014-09-02 21:36                       ` Catalin Marinas
2014-09-02 21:36                         ` Catalin Marinas
2014-09-03  9:44                         ` Daniel Thompson
2014-09-03  9:44                           ` Daniel Thompson
2014-09-03  9:28                       ` Daniel Thompson
2014-09-03  9:28                         ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 07/19] irqchip: gic: Add support for FIQ management Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 19:36                     ` Russell King - ARM Linux
2014-09-02 19:36                       ` Russell King - ARM Linux
2014-09-02 13:00                   ` [PATCH v11 08/19] irqchip: gic: Remove spin locks from eoi_irq Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 09/19] irqchip: gic: Add support for IPI FIQ Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 10/19] irqchip: gic: Group 0 workaround Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 11/19] irqchip: vic: Add support for FIQ management Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 19:40                     ` Russell King - ARM Linux
2014-09-02 19:40                       ` Russell King - ARM Linux
2014-09-02 13:00                   ` [PATCH v11 12/19] serial: kgdb_nmi: No CON_ENABLED by default Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 13/19] serial: amba-pl011: Use container_of() to get uart_amba_port Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 14/19] serial: amba-pl011: Move pl011_hwinit() Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 15/19] serial: amba-pl011: Pass FIQ information to KGDB Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 16/19] serial: asc: Add support for KGDB's FIQ/NMI mode Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 17/19] serial: asc: Adopt readl_/writel_relaxed() Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:42                     ` [STLinux Kernel] " Peter Griffin
2014-09-02 13:42                       ` Peter Griffin
2014-09-02 13:55                     ` Maxime Coquelin
2014-09-02 13:55                       ` Maxime Coquelin
2014-09-02 13:55                       ` Maxime Coquelin
2014-09-02 13:00                   ` [PATCH v11 18/19] serial: imx: clean up imx_poll_get_char() Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 13:00                   ` [PATCH v11 19/19] serial: imx: Add support for KGDB's FIQ/NMI mode Daniel Thompson
2014-09-02 13:00                     ` Daniel Thompson
2014-09-02 23:02                   ` [PATCH v11 00/19] arm: KGDB NMI/FIQ support Thomas Gleixner
2014-09-02 23:02                     ` Thomas Gleixner
2014-09-03  9:02                     ` Daniel Thompson
2014-09-03  9:02                       ` Daniel Thompson
2014-09-03 10:06                       ` Thomas Gleixner
2014-09-03 10:06                         ` Thomas Gleixner
2014-09-03 10:30                         ` Daniel Thompson
2014-09-03 10:30                           ` Daniel Thompson
2014-09-04 16:03                   ` [PATCH v1 0/6] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2014-09-04 16:03                     ` Daniel Thompson
2014-09-04 16:03                     ` [PATCH v1 1/6] arm: fiq: Replace default FIQ handler Daniel Thompson
2014-09-04 16:03                       ` Daniel Thompson
2014-09-04 18:57                       ` Nicolas Pitre
2014-09-04 18:57                         ` Nicolas Pitre
2014-09-05  9:03                         ` Daniel Thompson
2014-09-05  9:03                           ` Daniel Thompson
2014-09-05 18:04                           ` Nicolas Pitre
2014-09-05 18:04                             ` Nicolas Pitre
2014-09-08 13:22                             ` Daniel Thompson
2014-09-08 13:22                               ` Daniel Thompson
2014-09-04 16:03                     ` [PATCH v1 2/6] arm: smp: Introduce a non-maskable IPI Daniel Thompson
2014-09-04 16:03                       ` Daniel Thompson
2014-09-04 16:03                     ` [PATCH v1 3/6] arm64: Introduce dummy version of asm/fiq.h Daniel Thompson
2014-09-04 16:03                       ` Daniel Thompson
2014-09-04 16:03                     ` [PATCH v1 4/6] irqchip: gic: Add support for IPI FIQ Daniel Thompson
2014-09-04 16:03                       ` Daniel Thompson
2014-09-04 16:03                     ` [PATCH v1 5/6] irqchip: gic: Group 0 workaround Daniel Thompson
2014-09-04 16:03                       ` Daniel Thompson
2014-09-04 16:03                     ` [PATCH v1 6/6] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2014-09-04 16:03                       ` Daniel Thompson
2014-09-05 15:33                     ` [PATCH v2 0/5] " Daniel Thompson
2014-09-05 15:33                       ` Daniel Thompson
2014-09-05 15:33                       ` [PATCH v2 1/5] ARM: remove unused do_unexp_fiq() function Daniel Thompson
2014-09-05 15:33                         ` Daniel Thompson
2014-09-05 15:33                       ` [PATCH v2 2/5] ARM: add basic support for on-demand backtrace of other CPUs Daniel Thompson
2014-09-05 15:33                         ` Daniel Thompson
2014-09-05 15:33                       ` [PATCH v2 3/5] arm: fiq: Replace default FIQ handler Daniel Thompson
2014-09-05 15:33                         ` Daniel Thompson
2014-09-05 15:33                       ` [PATCH v2 4/5] arm64: Introduce dummy version of asm/fiq.h Daniel Thompson
2014-09-05 15:33                         ` Daniel Thompson
2014-09-05 16:50                         ` Catalin Marinas
2014-09-05 16:50                           ` Catalin Marinas
2014-09-08 11:03                           ` Daniel Thompson
2014-09-08 11:03                             ` Daniel Thompson
2014-09-05 15:33                       ` [PATCH v2 5/5] irqchip: gic: Add support for IPI FIQ Daniel Thompson
2014-09-05 15:33                         ` Daniel Thompson
2014-09-08 15:28                       ` [PATCH v3 0/5] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2014-09-08 15:28                         ` Daniel Thompson
2014-09-08 15:28                         ` [PATCH v3 1/5] ARM: remove unused do_unexp_fiq() function Daniel Thompson
2014-09-08 15:28                           ` Daniel Thompson
2014-09-08 15:28                         ` [PATCH v3 2/5] ARM: add basic support for on-demand backtrace of other CPUs Daniel Thompson
2014-09-08 15:28                           ` Daniel Thompson
2014-09-08 15:28                         ` [PATCH v3 3/5] arm: fiq: Replace default FIQ handler Daniel Thompson
2014-09-08 15:28                           ` Daniel Thompson
2014-09-08 15:49                           ` Nicolas Pitre
2014-09-08 15:49                             ` Nicolas Pitre
2014-09-08 15:57                             ` Daniel Thompson
2014-09-08 15:57                               ` Daniel Thompson
2014-09-08 15:28                         ` [PATCH v3 4/5] arm64: Introduce dummy version of asm/fiq.h Daniel Thompson
2014-09-08 15:28                           ` Daniel Thompson
2014-09-08 15:28                         ` [PATCH v3 5/5] irqchip: gic: Add support for IPI FIQ Daniel Thompson
2014-09-08 15:28                           ` Daniel Thompson
2014-09-08 16:23                           ` Russell King - ARM Linux
2014-09-08 16:23                             ` Russell King - ARM Linux
2014-09-09  8:24                             ` Daniel Thompson
2014-09-09  8:24                               ` Daniel Thompson
2014-09-14 11:53                               ` Daniel Thompson
2014-09-14 11:53                                 ` Daniel Thompson
2014-09-08 16:24                         ` [PATCH v3 0/5] arm: Implement arch_trigger_all_cpu_backtrace Russell King - ARM Linux
2014-09-08 16:24                           ` Russell King - ARM Linux
2014-09-09  8:26                           ` Daniel Thompson
2014-09-09  8:26                             ` Daniel Thompson
2014-09-09 14:15                         ` [PATCH v4 0/6] " Daniel Thompson
2014-09-09 14:15                           ` Daniel Thompson
2014-09-09 14:15                           ` [PATCH v4 1/6] ARM: remove unused do_unexp_fiq() function Daniel Thompson
2014-09-09 14:15                             ` Daniel Thompson
2014-09-09 14:15                           ` [PATCH v4 2/6] arm: fiq: Replace default FIQ handler Daniel Thompson
2014-09-09 14:15                             ` Daniel Thompson
2014-09-09 14:15                           ` [PATCH v4 3/6] arm64: Introduce dummy version of asm/fiq.h Daniel Thompson
2014-09-09 14:15                             ` Daniel Thompson
2014-09-09 14:15                           ` [PATCH v4 4/6] irqchip: gic: Add support for IPI FIQ Daniel Thompson
2014-09-09 14:15                             ` Daniel Thompson
2014-09-09 14:15                           ` [PATCH v4 5/6] ARM: add basic support for on-demand backtrace of other CPUs Daniel Thompson
2014-09-09 14:15                             ` Daniel Thompson
2014-09-09 14:15                           ` [PATCH v4 6/6] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) Daniel Thompson
2014-09-09 14:15                             ` Daniel Thompson
2014-09-11 11:31                           ` [PATCH 3.17-rc4 v5 0/6] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2014-09-11 11:31                             ` Daniel Thompson
2014-09-11 11:31                             ` [PATCH 3.17-rc4 v5 1/6] ARM: remove unused do_unexp_fiq() function Daniel Thompson
2014-09-11 11:31                               ` Daniel Thompson
2014-09-11 11:31                             ` Daniel Thompson [this message]
2014-09-11 11:31                               ` [PATCH 3.17-rc4 v5 2/6] arm: fiq: Replace default FIQ handler Daniel Thompson
2014-09-12 17:03                               ` Russell King - ARM Linux
2014-09-12 17:03                                 ` Russell King - ARM Linux
2014-09-12 17:07                                 ` Russell King - ARM Linux
2014-09-12 17:07                                   ` Russell King - ARM Linux
2014-09-13 12:01                                 ` Daniel Thompson
2014-09-13 12:01                                   ` Daniel Thompson
2014-09-12 17:08                               ` Russell King - ARM Linux
2014-09-12 17:08                                 ` Russell King - ARM Linux
2014-09-12 17:14                               ` Russell King - ARM Linux
2014-09-12 17:14                                 ` Russell King - ARM Linux
2014-09-12 17:19                                 ` Russell King - ARM Linux
2014-09-12 17:19                                   ` Russell King - ARM Linux
2014-09-12 17:23                                   ` Russell King - ARM Linux
2014-09-12 17:23                                     ` Russell King - ARM Linux
2014-09-14  6:36                                     ` Daniel Thompson
2014-09-14  6:36                                       ` Daniel Thompson
2014-09-14  8:45                                       ` Russell King - ARM Linux
2014-09-14  8:45                                         ` Russell King - ARM Linux
2014-09-14 11:27                                     ` Daniel Thompson
2014-09-14 11:27                                       ` Daniel Thompson
2014-09-13 12:03                                 ` Daniel Thompson
2014-09-13 12:03                                   ` Daniel Thompson
2014-09-11 11:31                             ` [PATCH 3.17-rc4 v5 3/6] arm64: Introduce dummy version of asm/fiq.h Daniel Thompson
2014-09-11 11:31                               ` Daniel Thompson
2014-09-11 11:31                             ` [PATCH 3.17-rc4 v5 4/6] irqchip: gic: Add support for IPI FIQ Daniel Thompson
2014-09-11 11:31                               ` Daniel Thompson
2014-09-11 11:31                             ` [PATCH 3.17-rc4 v5 5/6] ARM: add basic support for on-demand backtrace of other CPUs Daniel Thompson
2014-09-11 11:31                               ` Daniel Thompson
2014-09-11 11:31                             ` [PATCH 3.17-rc4 v5 6/6] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) Daniel Thompson
2014-09-11 11:31                               ` Daniel Thompson
2014-08-18 14:12             ` [PATCH v9 06/16] irqchip: gic: Provide support for interrupt grouping Daniel Thompson
2014-08-18 14:12               ` Daniel Thompson
2014-08-18 14:12             ` [PATCH v9 07/16] irqchip: gic: Add support for FIQ management Daniel Thompson
2014-08-18 14:12               ` Daniel Thompson
2014-08-18 14:12             ` [PATCH v9 08/16] irqchip: gic: Remove spin locks from eoi_irq Daniel Thompson
2014-08-18 14:12               ` Daniel Thompson
2014-08-18 14:12             ` [PATCH v9 09/16] irqchip: gic: Add support for IPI FIQ Daniel Thompson
2014-08-18 14:12               ` Daniel Thompson
2014-08-18 14:12             ` [PATCH v9 10/16] irqchip: gic: Group 0 workaround Daniel Thompson
2014-08-18 14:12               ` Daniel Thompson
2014-08-18 14:12             ` [PATCH v9 11/16] irqchip: vic: Add support for FIQ management Daniel Thompson
2014-08-18 14:12               ` Daniel Thompson
2014-08-18 14:12               ` Daniel Thompson
2014-08-18 14:28             ` [PATCH v9 12/16] serial: amba-pl011: Pass FIQ information to KGDB Daniel Thompson
2014-08-18 14:28               ` Daniel Thompson
2014-08-18 18:30               ` Peter Hurley
2014-08-18 18:30                 ` Peter Hurley
2014-08-19  9:08                 ` Daniel Thompson
2014-08-19  9:08                   ` Daniel Thompson
2014-08-19 11:58                   ` Peter Hurley
2014-08-19 11:58                     ` Peter Hurley
2014-08-19 12:51                     ` Daniel Thompson
2014-08-19 12:51                       ` Daniel Thompson
2014-08-18 14:28             ` [PATCH v9 13/16] serial: asc: Add support for KGDB's FIQ/NMI mode Daniel Thompson
2014-08-18 14:28               ` Daniel Thompson
2014-08-18 14:28               ` Daniel Thompson
2014-08-18 14:28             ` [PATCH v9 14/16] serial: asc: Adopt readl_/writel_relaxed() Daniel Thompson
2014-08-18 14:28               ` Daniel Thompson
2014-08-18 14:28               ` Daniel Thompson
2014-08-18 14:28             ` [PATCH v9 15/16] serial: imx: clean up imx_poll_get_char() Daniel Thompson
2014-08-18 14:28               ` Daniel Thompson
2014-08-18 14:28             ` [PATCH v9 16/16] serial: imx: Add support for KGDB's FIQ/NMI mode Daniel Thompson
2014-08-18 14:28               ` Daniel Thompson
2014-08-18 17:32               ` Dirk Behme
2014-08-18 17:32                 ` Dirk Behme

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=1410435078-28462-3-git-send-email-daniel.thompson@linaro.org \
    --to=daniel.thompson@linaro.org \
    --cc=catalin.marinas@arm.com \
    --cc=john.stultz@linaro.org \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=patches@linaro.org \
    --cc=sumit.semwal@linaro.org \
    --cc=tglx@linutronix.de \
    /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.