Message ID | 20210423223131.879208-13-jason@jlekstrand.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915/gem: ioctl clean-ups | expand |
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@ffwll.ch> > Signed-off-by: Jason Ekstrand <jason@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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
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;
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net> --- drivers/gpu/drm/i915/gem/i915_gem_context.c | 42 +++++++++++++-------- 1 file changed, 27 insertions(+), 15 deletions(-)