Commit a1db9c54 authored by Chris Wilson's avatar Chris Wilson

drm/i915: Track rcu_head for our idle worker

While our little rcu worker might be able to be replaced now by the
dedicated rcu_work, in the meantime we should mark up the rcu_head for
correct debugobjects tracking.
Signed-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/20181108092101.27598-2-chris@chris-wilson.co.uk
parent 8811d616
...@@ -3557,6 +3557,8 @@ static void __sleep_rcu(struct rcu_head *rcu) ...@@ -3557,6 +3557,8 @@ static void __sleep_rcu(struct rcu_head *rcu)
struct sleep_rcu_work *s = container_of(rcu, typeof(*s), rcu); struct sleep_rcu_work *s = container_of(rcu, typeof(*s), rcu);
struct drm_i915_private *i915 = s->i915; struct drm_i915_private *i915 = s->i915;
destroy_rcu_head(&s->rcu);
if (same_epoch(i915, s->epoch)) { if (same_epoch(i915, s->epoch)) {
INIT_WORK(&s->work, __sleep_work); INIT_WORK(&s->work, __sleep_work);
queue_work(i915->wq, &s->work); queue_work(i915->wq, &s->work);
...@@ -3673,6 +3675,7 @@ i915_gem_idle_work_handler(struct work_struct *work) ...@@ -3673,6 +3675,7 @@ i915_gem_idle_work_handler(struct work_struct *work)
if (same_epoch(dev_priv, epoch)) { if (same_epoch(dev_priv, epoch)) {
struct sleep_rcu_work *s = kmalloc(sizeof(*s), GFP_KERNEL); struct sleep_rcu_work *s = kmalloc(sizeof(*s), GFP_KERNEL);
if (s) { if (s) {
init_rcu_head(&s->rcu);
s->i915 = dev_priv; s->i915 = dev_priv;
s->epoch = epoch; s->epoch = epoch;
call_rcu(&s->rcu, __sleep_rcu); call_rcu(&s->rcu, __sleep_rcu);
......
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