summaryrefslogtreecommitdiffstats
path: root/arch/xtensa/kernel/traps.c
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2015-07-16 06:18:46 +0300
committerMax Filippov <jcmvbkbc@gmail.com>2015-08-17 07:33:34 +0300
commit7d5f6a9a2496c6e4f2a3b5db7743ff4e3a99738e (patch)
tree50649451d8f300910a632205be4df863093533b9 /arch/xtensa/kernel/traps.c
parent18bc5b85aac08d35eeca174abc73238a4d5deb0b (diff)
downloadlinux-7d5f6a9a2496c6e4f2a3b5db7743ff4e3a99738e.tar.bz2
xtensa: reorganize irq flags tracing
entry.s only disables IRQs on hardware IRQ, move trace_hardirqs_off call into do_interrupt. Check actual intlevel that will be restored on return from exception handler to decide if trace_hardirqs_on should be called. Annotate IRQ on/off points in the TIF_* handling loop on return from exception handler. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Diffstat (limited to 'arch/xtensa/kernel/traps.c')
-rw-r--r--arch/xtensa/kernel/traps.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/xtensa/kernel/traps.c b/arch/xtensa/kernel/traps.c
index 9d2f45f010ef..a1b5bd237c71 100644
--- a/arch/xtensa/kernel/traps.c
+++ b/arch/xtensa/kernel/traps.c
@@ -211,8 +211,11 @@ void do_interrupt(struct pt_regs *regs)
XCHAL_INTLEVEL6_MASK,
XCHAL_INTLEVEL7_MASK,
};
- struct pt_regs *old_regs = set_irq_regs(regs);
+ struct pt_regs *old_regs;
+ trace_hardirqs_off();
+
+ old_regs = set_irq_regs(regs);
irq_enter();
for (;;) {