aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Gardner <rob.gardner@oracle.com>2015-12-21 23:48:03 -0500
committerDavid S. Miller <davem@davemloft.net>2015-12-24 12:07:16 -0500
commit1ca04a4ce0d5131471c5a1fac76899dc2d9d3f36 (patch)
tree7e2f8aad1841ce369234d6de9c522b545bedf6aa
parent82924e542f20e645bc7de86e2889fe3fb0858566 (diff)
sparc64: Don't set %pil in rtrap_nmi too early
Commit 28a1f53 delays setting %pil to avoid potential hardirq stack overflow in the common rtrap_irq path. Setting %pil also needs to be delayed in the rtrap_nmi path for the same reason. Signed-off-by: Rob Gardner <rob.gardner@oracle.com> Signed-off-by: Dave Aldridge <david.j.aldridge@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--arch/sparc/kernel/rtrap_64.S8
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/sparc/kernel/rtrap_64.S b/arch/sparc/kernel/rtrap_64.S
index 39f0c662f4c8..d08bdaffdbfc 100644
--- a/arch/sparc/kernel/rtrap_64.S
+++ b/arch/sparc/kernel/rtrap_64.S
@@ -73,7 +73,13 @@ rtrap_nmi: ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1
73 andn %l1, %l4, %l1 73 andn %l1, %l4, %l1
74 srl %l4, 20, %l4 74 srl %l4, 20, %l4
75 ba,pt %xcc, rtrap_no_irq_enable 75 ba,pt %xcc, rtrap_no_irq_enable
76 wrpr %l4, %pil 76 nop
77 /* Do not actually set the %pil here. We will do that
78 * below after we clear PSTATE_IE in the %pstate register.
79 * If we re-enable interrupts here, we can recurse down
80 * the hardirq stack potentially endlessly, causing a
81 * stack overflow.
82 */
77 83
78 .align 64 84 .align 64
79 .globl rtrap_irq, rtrap, irqsz_patchme, rtrap_xcall 85 .globl rtrap_irq, rtrap, irqsz_patchme, rtrap_xcall