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