Re: [CI 4/7] drm/i915: Simplify releasing context reference

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2016.12.18 15:37:21 +0000, Chris Wilson wrote:
> A few users only take the struct_mutex in order to release a reference
> to a context. We can expose a kref_put_mutex() wrapper in order to
> simplify these users, and optimise taking of the mutex to the final
> unref.
> 
> Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx>
> ---
>  drivers/gpu/drm/i915/i915_drv.h  |  7 +++++++
>  drivers/gpu/drm/i915/i915_perf.c | 16 ++++------------
>  2 files changed, 11 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index dec4ddf132f7..6217f01d3c11 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -3518,6 +3518,13 @@ static inline void i915_gem_context_put(struct i915_gem_context *ctx)
>  	kref_put(&ctx->ref, i915_gem_context_free);
>  }
>  
> +static inline void i915_gem_context_put_unlocked(struct i915_gem_context *ctx)
> +{
> +	kref_put_mutex(&ctx->ref,
> +		       i915_gem_context_free,
> +		       &ctx->i915->drm.struct_mutex);
> +}
> +

For kref_put_mutex() in final release func should unlock mutex, but I haven't
seen i915_gem_context_free() to handle that?

gvt context close change in this series breaks VM poweroff when destroy vGPU.


>  static inline struct intel_timeline *
>  i915_gem_context_lookup_timeline(struct i915_gem_context *ctx,
>  				 struct intel_engine_cs *engine)
> diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
> index da8537cb8136..a1b7eec58be2 100644
> --- a/drivers/gpu/drm/i915/i915_perf.c
> +++ b/drivers/gpu/drm/i915/i915_perf.c
> @@ -1555,8 +1555,6 @@ static long i915_perf_ioctl(struct file *file,
>   */
>  static void i915_perf_destroy_locked(struct i915_perf_stream *stream)
>  {
> -	struct drm_i915_private *dev_priv = stream->dev_priv;
> -
>  	if (stream->enabled)
>  		i915_perf_disable_locked(stream);
>  
> @@ -1565,11 +1563,8 @@ static void i915_perf_destroy_locked(struct i915_perf_stream *stream)
>  
>  	list_del(&stream->link);
>  
> -	if (stream->ctx) {
> -		mutex_lock(&dev_priv->drm.struct_mutex);
> -		i915_gem_context_put(stream->ctx);
> -		mutex_unlock(&dev_priv->drm.struct_mutex);
> -	}
> +	if (stream->ctx)
> +		i915_gem_context_put_unlocked(stream->ctx);
>  
>  	kfree(stream);
>  }
> @@ -1738,11 +1733,8 @@ i915_perf_open_ioctl_locked(struct drm_i915_private *dev_priv,
>  err_alloc:
>  	kfree(stream);
>  err_ctx:
> -	if (specific_ctx) {
> -		mutex_lock(&dev_priv->drm.struct_mutex);
> -		i915_gem_context_put(specific_ctx);
> -		mutex_unlock(&dev_priv->drm.struct_mutex);
> -	}
> +	if (specific_ctx)
> +		i915_gem_context_put_unlocked(specific_ctx);
>  err:
>  	return ret;
>  }
> -- 
> 2.11.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Open Source Technology Center, Intel ltd.

$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux