drm/i915: ratelimit errors in display engine irq
authorLucas De Marchi <lucas.demarchi@intel.com>
Thu, 15 Dec 2022 00:14:59 +0000 (16:14 -0800)
committerLucas De Marchi <lucas.demarchi@intel.com>
Fri, 16 Dec 2022 16:39:26 +0000 (08:39 -0800)
While debugging page table faults it's useful not to kill the machine
with thousands of error mesages. Ratelimit all errors in
gen8_de_irq_handler().

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221215001459.3759580-1-lucas.demarchi@intel.com
drivers/gpu/drm/i915/i915_irq.c

index a815a45..2c58d1c 100644 (file)
@@ -2447,8 +2447,8 @@ gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
                        ret = IRQ_HANDLED;
                        gen8_de_misc_irq_handler(dev_priv, iir);
                } else {
-                       drm_err(&dev_priv->drm,
-                               "The master control interrupt lied (DE MISC)!\n");
+                       drm_err_ratelimited(&dev_priv->drm,
+                                           "The master control interrupt lied (DE MISC)!\n");
                }
        }
 
@@ -2459,8 +2459,8 @@ gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
                        ret = IRQ_HANDLED;
                        gen11_hpd_irq_handler(dev_priv, iir);
                } else {
-                       drm_err(&dev_priv->drm,
-                               "The master control interrupt lied, (DE HPD)!\n");
+                       drm_err_ratelimited(&dev_priv->drm,
+                                           "The master control interrupt lied, (DE HPD)!\n");
                }
        }
 
@@ -2509,12 +2509,12 @@ gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
                        }
 
                        if (!found)
-                               drm_err(&dev_priv->drm,
-                                       "Unexpected DE Port interrupt\n");
+                               drm_err_ratelimited(&dev_priv->drm,
+                                                   "Unexpected DE Port interrupt\n");
                }
                else
-                       drm_err(&dev_priv->drm,
-                               "The master control interrupt lied (DE PORT)!\n");
+                       drm_err_ratelimited(&dev_priv->drm,
+                                           "The master control interrupt lied (DE PORT)!\n");
        }
 
        for_each_pipe(dev_priv, pipe) {
@@ -2525,8 +2525,8 @@ gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
 
                iir = intel_uncore_read(&dev_priv->uncore, GEN8_DE_PIPE_IIR(pipe));
                if (!iir) {
-                       drm_err(&dev_priv->drm,
-                               "The master control interrupt lied (DE PIPE)!\n");
+                       drm_err_ratelimited(&dev_priv->drm,
+                                           "The master control interrupt lied (DE PIPE)!\n");
                        continue;
                }
 
@@ -2547,10 +2547,10 @@ gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
 
                fault_errors = iir & gen8_de_pipe_fault_mask(dev_priv);
                if (fault_errors)
-                       drm_err(&dev_priv->drm,
-                               "Fault errors on pipe %c: 0x%08x\n",
-                               pipe_name(pipe),
-                               fault_errors);
+                       drm_err_ratelimited(&dev_priv->drm,
+                                           "Fault errors on pipe %c: 0x%08x\n",
+                                           pipe_name(pipe),
+                                           fault_errors);
        }
 
        if (HAS_PCH_SPLIT(dev_priv) && !HAS_PCH_NOP(dev_priv) &&