From 18f23b92187ff75f8381aecd8b89c8feeddcab09 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ville=20Syrj=C3=A4l=C3=A4?= Date: Tue, 15 Mar 2022 15:27:46 +0200 Subject: [PATCH] drm/i915: Fix DRRS frontbuffer_bits handling MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- drivers/gpu/drm/i915/display/intel_drrs.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_drrs.c b/drivers/gpu/drm/i915/display/intel_drrs.c index e1b41b7..e9d622fe6 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 -- 2.7.4