From: Ville Syrjälä Date: Tue, 15 Mar 2022 13:27:46 +0000 (+0200) Subject: drm/i915: Fix DRRS frontbuffer_bits handling X-Git-Tag: v5.19-rc1~56^2~24^2~121 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=18f23b92187ff75f8381aecd8b89c8feeddcab09;p=tomoyo%2Ftomoyo-test1.git drm/i915: Fix DRRS frontbuffer_bits handling Now that DRRS can operate on multiple pipes we need to make sure one pipe doesn't throw away the other pipe's frontbuffer_bits before said pipe can handle them. Signed-off-by: Ville Syrjälä Link: https://patchwork.freedesktop.org/patch/msgid/20220315132752.11849-4-ville.syrjala@linux.intel.com Reviewed-by: José Roberto de Souza --- diff --git a/drivers/gpu/drm/i915/display/intel_drrs.c b/drivers/gpu/drm/i915/display/intel_drrs.c index e1b41b772521..e9d622fe66b3 100644 --- a/drivers/gpu/drm/i915/display/intel_drrs.c +++ b/drivers/gpu/drm/i915/display/intel_drrs.c @@ -258,7 +258,7 @@ static void intel_drrs_downclock_work(struct work_struct *work) } static void intel_drrs_frontbuffer_update(struct drm_i915_private *dev_priv, - unsigned int frontbuffer_bits, + unsigned int all_frontbuffer_bits, bool invalidate) { struct intel_crtc *crtc; @@ -267,6 +267,8 @@ static void intel_drrs_frontbuffer_update(struct drm_i915_private *dev_priv, return; for_each_intel_crtc(&dev_priv->drm, crtc) { + unsigned int frontbuffer_bits; + cancel_delayed_work(&crtc->drrs.work); mutex_lock(&crtc->drrs.mutex); @@ -276,7 +278,7 @@ static void intel_drrs_frontbuffer_update(struct drm_i915_private *dev_priv, continue; } - frontbuffer_bits &= INTEL_FRONTBUFFER_ALL_MASK(crtc->pipe); + frontbuffer_bits = all_frontbuffer_bits & INTEL_FRONTBUFFER_ALL_MASK(crtc->pipe); if (invalidate) crtc->drrs.busy_frontbuffer_bits |= frontbuffer_bits; else