aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_gem_execbuffer.c
diff options
context:
space:
mode:
authorTvrtko Ursulin <tvrtko.ursulin@intel.com>2015-01-07 12:32:39 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-01-08 03:34:58 -0500
commit7226572d8ed48f7e1aa9de5383d919490d6e9a0c (patch)
treec2a162ddb47f7079316fcadaaf94fb9b85e3081f /drivers/gpu/drm/i915/i915_gem_execbuffer.c
parentc9dc0f35986c0e2fc81e0b71ddc7e3adad733829 (diff)
drm/i915: Reserve shadow batch VMA analogue to others
If not pinned VMA can become an eviction target just before it needs to be executed which breaks the internal object lifetime rules. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87399 Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem_execbuffer.c')
-rw-r--r--drivers/gpu/drm/i915/i915_gem_execbuffer.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 8330660af978..6c21c59ed71d 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -1084,6 +1084,7 @@ i915_gem_execbuffer_parse(struct intel_engine_cs *ring,
1084{ 1084{
1085 struct drm_i915_private *dev_priv = to_i915(batch_obj->base.dev); 1085 struct drm_i915_private *dev_priv = to_i915(batch_obj->base.dev);
1086 struct drm_i915_gem_object *shadow_batch_obj; 1086 struct drm_i915_gem_object *shadow_batch_obj;
1087 bool need_reloc = false;
1087 int ret; 1088 int ret;
1088 1089
1089 shadow_batch_obj = i915_gem_batch_pool_get(&dev_priv->mm.batch_pool, 1090 shadow_batch_obj = i915_gem_batch_pool_get(&dev_priv->mm.batch_pool,
@@ -1109,6 +1110,7 @@ i915_gem_execbuffer_parse(struct intel_engine_cs *ring,
1109 vma->exec_entry = shadow_exec_entry; 1110 vma->exec_entry = shadow_exec_entry;
1110 vma->exec_entry->flags = __EXEC_OBJECT_PURGEABLE; 1111 vma->exec_entry->flags = __EXEC_OBJECT_PURGEABLE;
1111 drm_gem_object_reference(&shadow_batch_obj->base); 1112 drm_gem_object_reference(&shadow_batch_obj->base);
1113 i915_gem_execbuffer_reserve_vma(vma, ring, &need_reloc);
1112 list_add_tail(&vma->exec_list, &eb->vmas); 1114 list_add_tail(&vma->exec_list, &eb->vmas);
1113 1115
1114 shadow_batch_obj->base.pending_read_domains = 1116 shadow_batch_obj->base.pending_read_domains =