aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_gem_execbuffer.c5
-rw-r--r--drivers/gpu/drm/i915/intel_display.c4
2 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 206b9bbe6979..21fc11d84712 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -967,11 +967,14 @@ i915_gem_execbuffer_move_to_active(struct list_head *objects,
967 obj->pending_gpu_write = true; 967 obj->pending_gpu_write = true;
968 list_move_tail(&obj->gpu_write_list, 968 list_move_tail(&obj->gpu_write_list,
969 &ring->gpu_write_list); 969 &ring->gpu_write_list);
970 intel_mark_busy(ring->dev, obj); 970 if (obj->pin_count) /* check for potential scanout */
971 intel_mark_busy(ring->dev, obj);
971 } 972 }
972 973
973 trace_i915_gem_object_change_domain(obj, old_read, old_write); 974 trace_i915_gem_object_change_domain(obj, old_read, old_write);
974 } 975 }
976
977 intel_mark_busy(ring->dev, NULL);
975} 978}
976 979
977static void 980static void
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index b322bde98675..1cbe2680fdec 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5558,6 +5558,9 @@ void intel_mark_busy(struct drm_device *dev, struct drm_i915_gem_object *obj)
5558 mod_timer(&dev_priv->idle_timer, jiffies + 5558 mod_timer(&dev_priv->idle_timer, jiffies +
5559 msecs_to_jiffies(GPU_IDLE_TIMEOUT)); 5559 msecs_to_jiffies(GPU_IDLE_TIMEOUT));
5560 5560
5561 if (obj == NULL)
5562 return;
5563
5561 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { 5564 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
5562 if (!crtc->fb) 5565 if (!crtc->fb)
5563 continue; 5566 continue;
@@ -6007,6 +6010,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
6007 goto cleanup_pending; 6010 goto cleanup_pending;
6008 6011
6009 intel_disable_fbc(dev); 6012 intel_disable_fbc(dev);
6013 intel_mark_busy(dev, obj);
6010 mutex_unlock(&dev->struct_mutex); 6014 mutex_unlock(&dev->struct_mutex);
6011 6015
6012 trace_i915_flip_request(intel_crtc->plane, obj); 6016 trace_i915_flip_request(intel_crtc->plane, obj);