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;
        }
         */
        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
                 * 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
        }