[Intel-gfx] [PATCH 8/8] drm/i915: Expose RPCS (SSEU) configuration to userspace
Chris Wilson
chris at chris-wilson.co.uk
Tue Aug 14 15:22:41 UTC 2018
Quoting Tvrtko Ursulin (2018-08-14 15:40:58)
> +static int
> +i915_gem_context_reconfigure_sseu(struct i915_gem_context *ctx,
> + struct intel_engine_cs *engine,
> + struct intel_sseu sseu)
> +{
> + struct drm_i915_private *i915 = ctx->i915;
> + struct i915_request *rq;
> + struct intel_ring *ring;
> + int ret;
> +
> + lockdep_assert_held(&i915->drm.struct_mutex);
> +
> + /* Submitting requests etc needs the hw awake. */
> + intel_runtime_pm_get(i915);
> +
> + i915_retire_requests(i915);
> +
> + /* Now use the RCS to actually reconfigure. */
> + engine = i915->engine[RCS];
> +
> + rq = i915_request_alloc(engine, i915->kernel_context);
> + if (IS_ERR(rq)) {
> + ret = PTR_ERR(rq);
> + goto out_put;
> + }
> +
> + ret = engine->emit_rpcs_config(rq, ctx, sseu);
> + if (ret)
> + goto out_add;
> +
> + /* Queue this switch after all other activity */
> + list_for_each_entry(ring, &i915->gt.active_rings, active_link) {
> + struct i915_request *prev;
> +
> + prev = last_request_on_engine(ring->timeline, engine);
> + if (prev)
> + i915_sw_fence_await_sw_fence_gfp(&rq->submit,
> + &prev->submit,
> + I915_FENCE_GFP);
> + }
> +
> + i915_gem_set_global_barrier(i915, rq);
> +
> +out_add:
> + i915_request_add(rq);
> +out_put:
> + intel_runtime_pm_put(i915);
> +
> + return ret;
Looks like we should be able to hook this up to a selftest to confirm
the modification does land in the target context image, and a SRM to
confirm it loaded.
-Chris
More information about the Intel-gfx
mailing list