Commit 8811d616 authored by Chris Wilson's avatar Chris Wilson

drm/i915: Initialise the obj->rcu head

Make the rcu_head known to the system, in particular for debugobjects.
And having declared it for debugobjects, we need to tidy up afterwards.

v2: mark the obj->rcu as being destroyed when we reuse its location for
the freed list.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108691Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181109090311.15321-1-chris@chris-wilson.co.uk
parent 58db08a7
...@@ -4739,6 +4739,8 @@ void i915_gem_object_init(struct drm_i915_gem_object *obj, ...@@ -4739,6 +4739,8 @@ void i915_gem_object_init(struct drm_i915_gem_object *obj,
INIT_LIST_HEAD(&obj->lut_list); INIT_LIST_HEAD(&obj->lut_list);
INIT_LIST_HEAD(&obj->batch_pool_link); INIT_LIST_HEAD(&obj->batch_pool_link);
init_rcu_head(&obj->rcu);
obj->ops = ops; obj->ops = ops;
reservation_object_init(&obj->__builtin_resv); reservation_object_init(&obj->__builtin_resv);
...@@ -5005,6 +5007,13 @@ static void __i915_gem_free_object_rcu(struct rcu_head *head) ...@@ -5005,6 +5007,13 @@ static void __i915_gem_free_object_rcu(struct rcu_head *head)
container_of(head, typeof(*obj), rcu); container_of(head, typeof(*obj), rcu);
struct drm_i915_private *i915 = to_i915(obj->base.dev); struct drm_i915_private *i915 = to_i915(obj->base.dev);
/*
* We reuse obj->rcu for the freed list, so we had better not treat
* it like a rcu_head from this point forwards. And we expect all
* objects to be freed via this path.
*/
destroy_rcu_head(&obj->rcu);
/* /*
* Since we require blocking on struct_mutex to unbind the freed * Since we require blocking on struct_mutex to unbind the freed
* object from the GPU before releasing resources back to the * object from the GPU before releasing resources back to the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment