mirror of https://gitee.com/openkylin/linux.git
powerpc/irq: Don't WARN continuously in arch_local_irq_restore()
When CONFIG_PPC_IRQ_SOFT_MASK_DEBUG is enabled (uncommon), we have a series of WARN_ON's in arch_local_irq_restore(). These are "should never happen" conditions, but if they do happen they can flood the console and render the system unusable. So switch them to WARN_ON_ONCE(). Fixes:e2b36d5917
("powerpc/64: Don't trace code that runs with the soft irq mask unreconciled") Fixes:9b81c0211c
("powerpc/64s: make PACA_IRQ_HARD_DIS track MSR[EE] closely") Fixes:7c0482e3d0
("powerpc/irq: Fix another case of lazy IRQ state getting out of sync") Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20190708061046.7075-1-mpe@ellerman.id.au
This commit is contained in:
parent
a2b6f26c26
commit
0fc12c022a
|
@ -259,7 +259,7 @@ notrace void arch_local_irq_restore(unsigned long mask)
|
|||
irq_happened = get_irq_happened();
|
||||
if (!irq_happened) {
|
||||
#ifdef CONFIG_PPC_IRQ_SOFT_MASK_DEBUG
|
||||
WARN_ON(!(mfmsr() & MSR_EE));
|
||||
WARN_ON_ONCE(!(mfmsr() & MSR_EE));
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
@ -272,7 +272,7 @@ notrace void arch_local_irq_restore(unsigned long mask)
|
|||
*/
|
||||
if (!(irq_happened & PACA_IRQ_HARD_DIS)) {
|
||||
#ifdef CONFIG_PPC_IRQ_SOFT_MASK_DEBUG
|
||||
WARN_ON(!(mfmsr() & MSR_EE));
|
||||
WARN_ON_ONCE(!(mfmsr() & MSR_EE));
|
||||
#endif
|
||||
__hard_irq_disable();
|
||||
#ifdef CONFIG_PPC_IRQ_SOFT_MASK_DEBUG
|
||||
|
@ -283,7 +283,7 @@ notrace void arch_local_irq_restore(unsigned long mask)
|
|||
* warn if we are wrong. Only do that when IRQ tracing
|
||||
* is enabled as mfmsr() can be costly.
|
||||
*/
|
||||
if (WARN_ON(mfmsr() & MSR_EE))
|
||||
if (WARN_ON_ONCE(mfmsr() & MSR_EE))
|
||||
__hard_irq_disable();
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue