drm/i915: Reject excessive SAGV block time
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 9 Mar 2022 16:49:44 +0000 (18:49 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 18 Mar 2022 20:37:43 +0000 (22:37 +0200)
If the mailbox returns an exceesively large SAGV block time let's just
reject it. This avoids having to worry about overflows when we add the
SAGV block time to the wm0 latency.

We shall put the limit arbitrarily at U16_MAX. >65msec latency
doesn't really make sense to me in any case.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220309164948.10671-5-ville.syrjala@linux.intel.com
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
drivers/gpu/drm/i915/intel_pm.c

index 36f5bccabf64da0b986b55cf6eb126ffd749ac2d..166246fa27e40185efa742dc4dd088f776bf8f85 100644 (file)
@@ -3716,6 +3716,12 @@ static void intel_sagv_init(struct drm_i915_private *i915)
        drm_dbg_kms(&i915->drm, "SAGV supported: %s, original SAGV block time: %u us\n",
                    str_yes_no(intel_has_sagv(i915)), i915->sagv_block_time_us);
 
+       /* avoid overflow when adding with wm0 latency/etc. */
+       if (drm_WARN(&i915->drm, i915->sagv_block_time_us > U16_MAX,
+                    "Excessive SAGV block time %u, ignoring\n",
+                    i915->sagv_block_time_us))
+               i915->sagv_block_time_us = 0;
+
        if (!intel_has_sagv(i915))
                i915->sagv_block_time_us = 0;
 }