Skip to content

Commit

Permalink
powerpc: hard_irq_disable(): Call trace_hardirqs_off after disabling
Browse files Browse the repository at this point in the history
lockdep.c has this:
        /*
         * So we're supposed to get called after you mask local IRQs,
         * but for some reason the hardware doesn't quite think you did
         * a proper job.
         */
	if (DEBUG_LOCKS_WARN_ON(!irqs_disabled()))
		return;

Since irqs_disabled() is based on soft_enabled(), that (not just the
hard EE bit) needs to be 0 before we call trace_hardirqs_off.

Signed-off-by: Scott Wood <scottwood@freescale.com>
  • Loading branch information
Scott Wood authored and Benjamin Herrenschmidt committed May 10, 2013
1 parent 73ed148 commit 4a3b8d0
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions arch/powerpc/include/asm/hw_irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,12 @@ static inline bool arch_irqs_disabled(void)
#endif

#define hard_irq_disable() do { \
u8 _was_enabled = get_paca()->soft_enabled; \
__hard_irq_disable(); \
if (local_paca->soft_enabled) \
trace_hardirqs_off(); \
get_paca()->soft_enabled = 0; \
get_paca()->irq_happened |= PACA_IRQ_HARD_DIS; \
if (_was_enabled) \
trace_hardirqs_off(); \
} while(0)

static inline bool lazy_irq_pending(void)
Expand Down

0 comments on commit 4a3b8d0

Please sign in to comment.