diff options
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem_execbuffer.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 4 |
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 | ||
| 977 | static void | 980 | static 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); |
