[Intel-gfx] [PATCH] drm/i915/execlists: Document runtime pm for intel_lrc_irq_handler()

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Wed Apr 12 07:12:17 UTC 2017


On 11/04/2017 18:58, Chris Wilson wrote:
> We indirectly hold the runtime-pm for the intel_lrc_irq_handler() by
> virtue of dev_priv->gt.awake keeping a wakeref whilst the requests are
> busy. As this is not obvious from the code, add a comment.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_lrc.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index 0dc1cc4ad6e7..e16cc28dc783 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -515,6 +515,15 @@ static void intel_lrc_irq_handler(unsigned long data)
>  	struct execlist_port *port = engine->execlist_port;
>  	struct drm_i915_private *dev_priv = engine->i915;
>
> +	/* We can skip acquiring intel_runtime_pm_get() here as it was taken
> +	 * on our behalf by the request (see i915_gem_mark_busy ()) and it will
> +	 * not be relinquished until the device is idle (see
> +	 * i915_gem_idle_work_handler()). As a precaution, we make sure
> +	 * that all ELSP are drained i.e. we have processed the CSB,
> +	 * before allowing ourselves to idle and calling intel_runtime_pm_put().
> +	 */
> +	GEM_BUG_ON(!dev_priv->gt.awake);
> +
>  	intel_uncore_forcewake_get(dev_priv, engine->fw_domains);
>
>  	/* Prefer doing test_and_clear_bit() as a two stage operation to avoid
>

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

It feels a big to c&p, but not sure if it worth putting a comment "see 
comment in intel_lrc_irq_handler on why we don't have to " to 
i915_guc_irq_handler or maybe dequeue?

Regards,

Tvrtko


More information about the Intel-gfx mailing list