drm/i915: Align the retire_requests worker to the nearest second
By using round_jiffies() we can align the wakeup of our worker to the nearest second in order to batch wakeups and reduce system load, which is useful for unimportant coarse tasks like our retire_requests. v2: round_jiffies_relative() already returns the relative timeout value, so no need to incorrectly perform the subtraction twice. The timer interface still leaves the possibility for the value of jiffies to change be we program the timer. Suggested-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Arjan van de Ven <arjan@linux.intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
cecc21fea9
commit
bcb4508616
|
@ -2019,7 +2019,8 @@ i915_add_request(struct intel_ring_buffer *ring,
|
||||||
}
|
}
|
||||||
if (was_empty) {
|
if (was_empty) {
|
||||||
queue_delayed_work(dev_priv->wq,
|
queue_delayed_work(dev_priv->wq,
|
||||||
&dev_priv->mm.retire_work, HZ);
|
&dev_priv->mm.retire_work,
|
||||||
|
round_jiffies_up_relative(HZ));
|
||||||
intel_mark_busy(dev_priv->dev);
|
intel_mark_busy(dev_priv->dev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2208,7 +2209,8 @@ i915_gem_retire_work_handler(struct work_struct *work)
|
||||||
|
|
||||||
/* Come back later if the device is busy... */
|
/* Come back later if the device is busy... */
|
||||||
if (!mutex_trylock(&dev->struct_mutex)) {
|
if (!mutex_trylock(&dev->struct_mutex)) {
|
||||||
queue_delayed_work(dev_priv->wq, &dev_priv->mm.retire_work, HZ);
|
queue_delayed_work(dev_priv->wq, &dev_priv->mm.retire_work,
|
||||||
|
round_jiffies_up_relative(HZ));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2226,7 +2228,8 @@ i915_gem_retire_work_handler(struct work_struct *work)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!dev_priv->mm.suspended && !idle)
|
if (!dev_priv->mm.suspended && !idle)
|
||||||
queue_delayed_work(dev_priv->wq, &dev_priv->mm.retire_work, HZ);
|
queue_delayed_work(dev_priv->wq, &dev_priv->mm.retire_work,
|
||||||
|
round_jiffies_up_relative(HZ));
|
||||||
if (idle)
|
if (idle)
|
||||||
intel_mark_idle(dev);
|
intel_mark_idle(dev);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue