drm/i915/fbc: only update no_fbc_reason when active
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 11 Aug 2017 07:23:27 +0000 (09:23 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 11 Aug 2017 14:57:18 +0000 (16:57 +0200)
In our snb farm in CI we have plenty of underruns, but not enough
stolen memory to enable fbc. Which means every time there's an
underrun the no_fbc_reason swichtes to something that makes
kms_frontbuffer_tracking fail instead of skip, adding massive amounts
of additional noise to igt test runs.

Make sure we don't try to disable fbc when it's off already.

v2: Squash in additional WARN_ON suggestion from Chris.

Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170811072327.4335-1-daniel.vetter@ffwll.ch
drivers/gpu/drm/i915/intel_fbc.c

index 860b8c26d29b74acf6d8586f6a6fb7c7894df1f0..3fca9fa39a8e649f7f47c481874d6dc619d7de42 100644 (file)
@@ -461,6 +461,8 @@ static void intel_fbc_schedule_activation(struct intel_crtc *crtc)
        struct intel_fbc_work *work = &fbc->work;
 
        WARN_ON(!mutex_is_locked(&fbc->lock));
+       if (WARN_ON(!fbc->enabled))
+               return;
 
        if (drm_crtc_vblank_get(&crtc->base)) {
                DRM_ERROR("vblank not available for FBC on pipe %c\n",
@@ -1216,7 +1218,7 @@ static void intel_fbc_underrun_work_fn(struct work_struct *work)
        mutex_lock(&fbc->lock);
 
        /* Maybe we were scheduled twice. */
-       if (fbc->underrun_detected)
+       if (fbc->underrun_detected || !fbc->enabled)
                goto out;
 
        DRM_DEBUG_KMS("Disabling FBC due to FIFO underrun.\n");