diff options
Diffstat (limited to 'arch/powerpc/kernel/interrupt.c')
| -rw-r--r-- | arch/powerpc/kernel/interrupt.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/interrupt.c b/arch/powerpc/kernel/interrupt.c index fc6631a80527..0ec1581619db 100644 --- a/arch/powerpc/kernel/interrupt.c +++ b/arch/powerpc/kernel/interrupt.c @@ -50,16 +50,18 @@ static inline bool exit_must_hard_disable(void)   */  static notrace __always_inline bool prep_irq_for_enabled_exit(bool restartable)  { +	bool must_hard_disable = (exit_must_hard_disable() || !restartable); +  	/* This must be done with RI=1 because tracing may touch vmaps */  	trace_hardirqs_on(); -	if (exit_must_hard_disable() || !restartable) +	if (must_hard_disable)  		__hard_EE_RI_disable();  #ifdef CONFIG_PPC64  	/* This pattern matches prep_irq_for_idle */  	if (unlikely(lazy_irq_pending_nocheck())) { -		if (exit_must_hard_disable() || !restartable) { +		if (must_hard_disable) {  			local_paca->irq_happened |= PACA_IRQ_HARD_DIS;  			__hard_RI_enable();  		}  |