|
@@ -1457,27 +1457,6 @@ i915_gem_object_move_to_active(struct drm_i915_gem_object *obj,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void
|
|
|
-i915_gem_object_move_off_active(struct drm_i915_gem_object *obj)
|
|
|
-{
|
|
|
- list_del_init(&obj->ring_list);
|
|
|
- obj->last_read_seqno = 0;
|
|
|
- obj->last_write_seqno = 0;
|
|
|
- obj->last_fenced_seqno = 0;
|
|
|
-}
|
|
|
-
|
|
|
-static void
|
|
|
-i915_gem_object_move_to_flushing(struct drm_i915_gem_object *obj)
|
|
|
-{
|
|
|
- struct drm_device *dev = obj->base.dev;
|
|
|
- drm_i915_private_t *dev_priv = dev->dev_private;
|
|
|
-
|
|
|
- BUG_ON(!obj->active);
|
|
|
- list_move_tail(&obj->mm_list, &dev_priv->mm.flushing_list);
|
|
|
-
|
|
|
- i915_gem_object_move_off_active(obj);
|
|
|
-}
|
|
|
-
|
|
|
static void
|
|
|
i915_gem_object_move_to_inactive(struct drm_i915_gem_object *obj)
|
|
|
{
|
|
@@ -1487,10 +1466,17 @@ i915_gem_object_move_to_inactive(struct drm_i915_gem_object *obj)
|
|
|
list_move_tail(&obj->mm_list, &dev_priv->mm.inactive_list);
|
|
|
|
|
|
BUG_ON(!list_empty(&obj->gpu_write_list));
|
|
|
+ BUG_ON(obj->base.write_domain & ~I915_GEM_GPU_DOMAINS);
|
|
|
BUG_ON(!obj->active);
|
|
|
+
|
|
|
+ list_del_init(&obj->ring_list);
|
|
|
obj->ring = NULL;
|
|
|
|
|
|
- i915_gem_object_move_off_active(obj);
|
|
|
+ obj->last_read_seqno = 0;
|
|
|
+ obj->last_write_seqno = 0;
|
|
|
+ obj->base.write_domain = 0;
|
|
|
+
|
|
|
+ obj->last_fenced_seqno = 0;
|
|
|
obj->fenced_gpu_access = false;
|
|
|
|
|
|
obj->active = 0;
|
|
@@ -1694,7 +1680,6 @@ static void i915_gem_reset_ring_lists(struct drm_i915_private *dev_priv,
|
|
|
struct drm_i915_gem_object,
|
|
|
ring_list);
|
|
|
|
|
|
- obj->base.write_domain = 0;
|
|
|
list_del_init(&obj->gpu_write_list);
|
|
|
i915_gem_object_move_to_inactive(obj);
|
|
|
}
|
|
@@ -1731,20 +1716,6 @@ void i915_gem_reset(struct drm_device *dev)
|
|
|
for_each_ring(ring, dev_priv, i)
|
|
|
i915_gem_reset_ring_lists(dev_priv, ring);
|
|
|
|
|
|
- /* Remove anything from the flushing lists. The GPU cache is likely
|
|
|
- * to be lost on reset along with the data, so simply move the
|
|
|
- * lost bo to the inactive list.
|
|
|
- */
|
|
|
- while (!list_empty(&dev_priv->mm.flushing_list)) {
|
|
|
- obj = list_first_entry(&dev_priv->mm.flushing_list,
|
|
|
- struct drm_i915_gem_object,
|
|
|
- mm_list);
|
|
|
-
|
|
|
- obj->base.write_domain = 0;
|
|
|
- list_del_init(&obj->gpu_write_list);
|
|
|
- i915_gem_object_move_to_inactive(obj);
|
|
|
- }
|
|
|
-
|
|
|
/* Move everything out of the GPU domains to ensure we do any
|
|
|
* necessary invalidation upon reuse.
|
|
|
*/
|
|
@@ -1815,10 +1786,7 @@ i915_gem_retire_requests_ring(struct intel_ring_buffer *ring)
|
|
|
if (!i915_seqno_passed(seqno, obj->last_read_seqno))
|
|
|
break;
|
|
|
|
|
|
- if (obj->base.write_domain != 0)
|
|
|
- i915_gem_object_move_to_flushing(obj);
|
|
|
- else
|
|
|
- i915_gem_object_move_to_inactive(obj);
|
|
|
+ i915_gem_object_move_to_inactive(obj);
|
|
|
}
|
|
|
|
|
|
if (unlikely(ring->trace_irq_seqno &&
|
|
@@ -3897,7 +3865,6 @@ i915_gem_entervt_ioctl(struct drm_device *dev, void *data,
|
|
|
}
|
|
|
|
|
|
BUG_ON(!list_empty(&dev_priv->mm.active_list));
|
|
|
- BUG_ON(!list_empty(&dev_priv->mm.flushing_list));
|
|
|
BUG_ON(!list_empty(&dev_priv->mm.inactive_list));
|
|
|
mutex_unlock(&dev->struct_mutex);
|
|
|
|
|
@@ -3955,7 +3922,6 @@ i915_gem_load(struct drm_device *dev)
|
|
|
drm_i915_private_t *dev_priv = dev->dev_private;
|
|
|
|
|
|
INIT_LIST_HEAD(&dev_priv->mm.active_list);
|
|
|
- INIT_LIST_HEAD(&dev_priv->mm.flushing_list);
|
|
|
INIT_LIST_HEAD(&dev_priv->mm.inactive_list);
|
|
|
INIT_LIST_HEAD(&dev_priv->mm.fence_list);
|
|
|
INIT_LIST_HEAD(&dev_priv->mm.gtt_list);
|
|
@@ -4206,12 +4172,7 @@ static int
|
|
|
i915_gpu_is_active(struct drm_device *dev)
|
|
|
{
|
|
|
drm_i915_private_t *dev_priv = dev->dev_private;
|
|
|
- int lists_empty;
|
|
|
-
|
|
|
- lists_empty = list_empty(&dev_priv->mm.flushing_list) &&
|
|
|
- list_empty(&dev_priv->mm.active_list);
|
|
|
-
|
|
|
- return !lists_empty;
|
|
|
+ return !list_empty(&dev_priv->mm.active_list);
|
|
|
}
|
|
|
|
|
|
static int
|