Skip to content

Commit

Permalink
drm/i915: Introduce struct class_instance for engines across the uAPI
Browse files Browse the repository at this point in the history
SSEU reprogramming of the context introduced the notion of engine class
and instance for a forwards compatible method of describing any engine
beyond the old execbuf interface. We wish to adopt this class:instance
description for more interfaces, so pull it out into a separate type for
userspace convenience.

Fixes: e46c2e9 ("drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only)")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com>
Cc: Tony Ye <tony.ye@intel.com>
Cc: Andi Shyti <andi@etezian.org>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Acked-by: Tony Ye <tony.ye@intel.com>
Reviewed-by: Andi Shyti <andi@etezian.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20190412071416.30097-1-chris@chris-wilson.co.uk
  • Loading branch information
Chris Wilson committed Apr 17, 2019
1 parent b16b2a2 commit d1172ab
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 6 deletions.
8 changes: 4 additions & 4 deletions drivers/gpu/drm/i915/i915_gem_context.c
Original file line number Diff line number Diff line change
Expand Up @@ -1386,8 +1386,8 @@ static int set_sseu(struct i915_gem_context *ctx,
return -EINVAL;

engine = intel_engine_lookup_user(i915,
user_sseu.engine_class,
user_sseu.engine_instance);
user_sseu.engine.engine_class,
user_sseu.engine.engine_instance);
if (!engine)
return -EINVAL;

Expand Down Expand Up @@ -1626,8 +1626,8 @@ static int get_sseu(struct i915_gem_context *ctx,
return -EINVAL;

engine = intel_engine_lookup_user(ctx->i915,
user_sseu.engine_class,
user_sseu.engine_instance);
user_sseu.engine.engine_class,
user_sseu.engine.engine_instance);
if (!engine)
return -EINVAL;

Expand Down
15 changes: 13 additions & 2 deletions include/uapi/drm/i915_drm.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,18 @@ enum drm_i915_gem_engine_class {
I915_ENGINE_CLASS_INVALID = -1
};

/*
* There may be more than one engine fulfilling any role within the system.
* Each engine of a class is given a unique instance number and therefore
* any engine can be specified by its class:instance tuplet. APIs that allow
* access to any engine in the system will use struct i915_engine_class_instance
* for this identification.
*/
struct i915_engine_class_instance {
__u16 engine_class; /* see enum drm_i915_gem_engine_class */
__u16 engine_instance;
};

/**
* DOC: perf_events exposed by i915 through /sys/bus/event_sources/drivers/i915
*
Expand Down Expand Up @@ -1525,8 +1537,7 @@ struct drm_i915_gem_context_param_sseu {
/*
* Engine class & instance to be configured or queried.
*/
__u16 engine_class;
__u16 engine_instance;
struct i915_engine_class_instance engine;

/*
* Unused for now. Must be cleared to zero.
Expand Down

0 comments on commit d1172ab

Please sign in to comment.