aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h4
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c4
2 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index b62ff5d6fa7e..67ec046aeb90 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -547,6 +547,9 @@ typedef struct drm_i915_private {
547 struct drm_mm stolen; 547 struct drm_mm stolen;
548 /** Memory allocator for GTT */ 548 /** Memory allocator for GTT */
549 struct drm_mm gtt_space; 549 struct drm_mm gtt_space;
550 /** List of all objects in gtt_space. Used to restore gtt
551 * mappings on resume */
552 struct list_head gtt_list;
550 /** End of mappable part of GTT */ 553 /** End of mappable part of GTT */
551 unsigned long gtt_mappable_end; 554 unsigned long gtt_mappable_end;
552 555
@@ -714,6 +717,7 @@ struct drm_i915_gem_object {
714 717
715 /** Current space allocated to this object in the GTT, if any. */ 718 /** Current space allocated to this object in the GTT, if any. */
716 struct drm_mm_node *gtt_space; 719 struct drm_mm_node *gtt_space;
720 struct list_head gtt_list;
717 721
718 /** This object's place on the active/flushing/inactive lists */ 722 /** This object's place on the active/flushing/inactive lists */
719 struct list_head ring_list; 723 struct list_head ring_list;
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index b663d2da1db3..07e1b25f4a8a 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -95,6 +95,7 @@ static void i915_gem_info_add_gtt(struct drm_i915_private *dev_priv,
95 min_t(size_t, obj->gtt_space->size, 95 min_t(size_t, obj->gtt_space->size,
96 dev_priv->mm.gtt_mappable_end - obj->gtt_offset); 96 dev_priv->mm.gtt_mappable_end - obj->gtt_offset);
97 } 97 }
98 list_add_tail(&obj->gtt_list, &dev_priv->mm.gtt_list);
98} 99}
99 100
100static void i915_gem_info_remove_gtt(struct drm_i915_private *dev_priv, 101static void i915_gem_info_remove_gtt(struct drm_i915_private *dev_priv,
@@ -107,6 +108,7 @@ static void i915_gem_info_remove_gtt(struct drm_i915_private *dev_priv,
107 min_t(size_t, obj->gtt_space->size, 108 min_t(size_t, obj->gtt_space->size,
108 dev_priv->mm.gtt_mappable_end - obj->gtt_offset); 109 dev_priv->mm.gtt_mappable_end - obj->gtt_offset);
109 } 110 }
111 list_del_init(&obj->gtt_list);
110} 112}
111 113
112/** 114/**
@@ -4604,6 +4606,7 @@ struct drm_gem_object * i915_gem_alloc_object(struct drm_device *dev,
4604 obj->base.driver_private = NULL; 4606 obj->base.driver_private = NULL;
4605 obj->fence_reg = I915_FENCE_REG_NONE; 4607 obj->fence_reg = I915_FENCE_REG_NONE;
4606 INIT_LIST_HEAD(&obj->mm_list); 4608 INIT_LIST_HEAD(&obj->mm_list);
4609 INIT_LIST_HEAD(&obj->gtt_list);
4607 INIT_LIST_HEAD(&obj->ring_list); 4610 INIT_LIST_HEAD(&obj->ring_list);
4608 INIT_LIST_HEAD(&obj->gpu_write_list); 4611 INIT_LIST_HEAD(&obj->gpu_write_list);
4609 obj->madv = I915_MADV_WILLNEED; 4612 obj->madv = I915_MADV_WILLNEED;
@@ -4916,6 +4919,7 @@ i915_gem_load(struct drm_device *dev)
4916 INIT_LIST_HEAD(&dev_priv->mm.pinned_list); 4919 INIT_LIST_HEAD(&dev_priv->mm.pinned_list);
4917 INIT_LIST_HEAD(&dev_priv->mm.fence_list); 4920 INIT_LIST_HEAD(&dev_priv->mm.fence_list);
4918 INIT_LIST_HEAD(&dev_priv->mm.deferred_free_list); 4921 INIT_LIST_HEAD(&dev_priv->mm.deferred_free_list);
4922 INIT_LIST_HEAD(&dev_priv->mm.gtt_list);
4919 init_ring_lists(&dev_priv->render_ring); 4923 init_ring_lists(&dev_priv->render_ring);
4920 init_ring_lists(&dev_priv->bsd_ring); 4924 init_ring_lists(&dev_priv->bsd_ring);
4921 init_ring_lists(&dev_priv->blt_ring); 4925 init_ring_lists(&dev_priv->blt_ring);