[PATCH 12/21] drm/i915/gem: Add a separate validate_priority helper

Daniel Vetter daniel at ffwll.ch
Wed Apr 28 14:37:05 UTC 2021


On Fri, Apr 23, 2021 at 05:31:22PM -0500, Jason Ekstrand wrote:

Maybe explain that you pull this out since with the proto context there
will be two paths to set this, one for proto context, the other for
context already finalized and executing patches?

With that: Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>

> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
> ---
>  drivers/gpu/drm/i915/gem/i915_gem_context.c | 42 +++++++++++++--------
>  1 file changed, 27 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> index 941fbf78267b4..e5efd22c89ba2 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> @@ -169,6 +169,28 @@ lookup_user_engine(struct i915_gem_context *ctx,
>  	return i915_gem_context_get_engine(ctx, idx);
>  }
>  
> +static int validate_priority(struct drm_i915_private *i915,
> +			     const struct drm_i915_gem_context_param *args)
> +{
> +	s64 priority = args->value;
> +
> +	if (args->size)
> +		return -EINVAL;
> +
> +	if (!(i915->caps.scheduler & I915_SCHEDULER_CAP_PRIORITY))
> +		return -ENODEV;
> +
> +	if (priority > I915_CONTEXT_MAX_USER_PRIORITY ||
> +	    priority < I915_CONTEXT_MIN_USER_PRIORITY)
> +		return -EINVAL;
> +
> +	if (priority > I915_CONTEXT_DEFAULT_PRIORITY &&
> +	    !capable(CAP_SYS_NICE))
> +		return -EPERM;
> +
> +	return 0;
> +}
> +
>  static struct i915_address_space *
>  context_get_vm_rcu(struct i915_gem_context *ctx)
>  {
> @@ -1744,23 +1766,13 @@ static void __apply_priority(struct intel_context *ce, void *arg)
>  static int set_priority(struct i915_gem_context *ctx,
>  			const struct drm_i915_gem_context_param *args)
>  {
> -	s64 priority = args->value;
> -
> -	if (args->size)
> -		return -EINVAL;
> -
> -	if (!(ctx->i915->caps.scheduler & I915_SCHEDULER_CAP_PRIORITY))
> -		return -ENODEV;
> -
> -	if (priority > I915_CONTEXT_MAX_USER_PRIORITY ||
> -	    priority < I915_CONTEXT_MIN_USER_PRIORITY)
> -		return -EINVAL;
> +	int err;
>  
> -	if (priority > I915_CONTEXT_DEFAULT_PRIORITY &&
> -	    !capable(CAP_SYS_NICE))
> -		return -EPERM;
> +	err = validate_priority(ctx->i915, args);
> +	if (err)
> +		return err;
>  
> -	ctx->sched.priority = priority;
> +	ctx->sched.priority = args->value;
>  	context_apply_all(ctx, __apply_priority, ctx);
>  
>  	return 0;
> -- 
> 2.31.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list