[Intel-gfx] [PATCH 07/16] drm/i915: Move intel_lrc_context_pin() to avoid the forward declaration
Chris Wilson
chris at chris-wilson.co.uk
Thu Dec 8 20:55:18 UTC 2016
On Thu, Dec 08, 2016 at 05:45:23PM +0000, Tvrtko Ursulin wrote:
>
> On 07/12/2016 13:58, Chris Wilson wrote:
> >Just a simple move to avoid a forward declaration.
>
> Patch subject is wrong - you are moving
> intel_logical_ring_alloc_request_extras.
I moved what I said, what diff shows is the opposite motion!
> >Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> >---
> > drivers/gpu/drm/i915/intel_lrc.c | 132 +++++++++++++++++++--------------------
> > 1 file changed, 65 insertions(+), 67 deletions(-)
> >
> >diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> >index 8b412880e88c..5cabe4e9d22f 100644
> >--- a/drivers/gpu/drm/i915/intel_lrc.c
> >+++ b/drivers/gpu/drm/i915/intel_lrc.c
> >@@ -230,8 +230,6 @@ enum {
> >
> > static int execlists_context_deferred_alloc(struct i915_gem_context *ctx,
> > struct intel_engine_cs *engine);
> >-static int intel_lr_context_pin(struct i915_gem_context *ctx,
> >- struct intel_engine_cs *engine);
> > static void execlists_init_reg_state(u32 *reg_state,
> > struct i915_gem_context *ctx,
> > struct intel_engine_cs *engine,
> >@@ -774,71 +772,6 @@ static void execlists_schedule(struct drm_i915_gem_request *request, int prio)
> > /* XXX Do we need to preempt to make room for us and our deps? */
> > }
> >
> >-int intel_logical_ring_alloc_request_extras(struct drm_i915_gem_request *request)
> >-{
> >- struct intel_engine_cs *engine = request->engine;
> >- struct intel_context *ce = &request->ctx->engine[engine->id];
> >- int ret;
> >-
> >- /* Flush enough space to reduce the likelihood of waiting after
> >- * we start building the request - in which case we will just
> >- * have to repeat work.
> >- */
> >- request->reserved_space += EXECLISTS_REQUEST_SIZE;
> >-
> >- if (!ce->state) {
> >- ret = execlists_context_deferred_alloc(request->ctx, engine);
> >- if (ret)
> >- return ret;
> >- }
> >-
> >- request->ring = ce->ring;
> >-
> >- ret = intel_lr_context_pin(request->ctx, engine);
> >- if (ret)
> >- return ret;
> >-
> >- if (i915.enable_guc_submission) {
> >- /*
> >- * Check that the GuC has space for the request before
> >- * going any further, as the i915_add_request() call
> >- * later on mustn't fail ...
> >- */
> >- ret = i915_guc_wq_reserve(request);
> >- if (ret)
> >- goto err_unpin;
> >- }
> >-
> >- ret = intel_ring_begin(request, 0);
> >- if (ret)
> >- goto err_unreserve;
> >-
> >- if (!ce->initialised) {
> >- ret = engine->init_context(request);
> >- if (ret)
> >- goto err_unreserve;
> >-
> >- ce->initialised = true;
> >- }
> >-
> >- /* Note that after this point, we have committed to using
> >- * this request as it is being used to both track the
> >- * state of engine initialisation and liveness of the
> >- * golden renderstate above. Think twice before you try
> >- * to cancel/unwind this request now.
> >- */
> >-
> >- request->reserved_space -= EXECLISTS_REQUEST_SIZE;
> >- return 0;
> >-
> >-err_unreserve:
> >- if (i915.enable_guc_submission)
> >- i915_guc_wq_unreserve(request);
> >-err_unpin:
> >- intel_lr_context_unpin(request->ctx, engine);
> >- return ret;
> >-}
> >-
> > static int intel_lr_context_pin(struct i915_gem_context *ctx,
> > struct intel_engine_cs *engine)
> > {
> >@@ -911,6 +844,71 @@ void intel_lr_context_unpin(struct i915_gem_context *ctx,
> > i915_gem_context_put(ctx);
> > }
> >
> >+int intel_logical_ring_alloc_request_extras(struct drm_i915_gem_request *request)
> >+{
> >+ struct intel_engine_cs *engine = request->engine;
> >+ struct intel_context *ce = &request->ctx->engine[engine->id];
> >+ int ret;
> >+
> >+ /* Flush enough space to reduce the likelihood of waiting after
> >+ * we start building the request - in which case we will just
> >+ * have to repeat work.
> >+ */
> >+ request->reserved_space += EXECLISTS_REQUEST_SIZE;
> >+
> >+ if (!ce->state) {
> >+ ret = execlists_context_deferred_alloc(request->ctx, engine);
> >+ if (ret)
> >+ return ret;
> >+ }
> >+
> >+ request->ring = ce->ring;
> >+
> >+ ret = intel_lr_context_pin(request->ctx, engine);
> >+ if (ret)
> >+ return ret;
> >+
> >+ if (i915.enable_guc_submission) {
> >+ /*
> >+ * Check that the GuC has space for the request before
> >+ * going any further, as the i915_add_request() call
> >+ * later on mustn't fail ...
> >+ */
> >+ ret = i915_guc_wq_reserve(request);
> >+ if (ret)
> >+ goto err_unpin;
> >+ }
> >+
> >+ ret = intel_ring_begin(request, 0);
> >+ if (ret)
> >+ goto err_unreserve;
> >+
> >+ if (!ce->initialised) {
> >+ ret = engine->init_context(request);
> >+ if (ret)
> >+ goto err_unreserve;
> >+
> >+ ce->initialised = true;
> >+ }
> >+
> >+ /* Note that after this point, we have committed to using
> >+ * this request as it is being used to both track the
> >+ * state of engine initialisation and liveness of the
> >+ * golden renderstate above. Think twice before you try
> >+ * to cancel/unwind this request now.
> >+ */
> >+
> >+ request->reserved_space -= EXECLISTS_REQUEST_SIZE;
> >+ return 0;
> >+
> >+err_unreserve:
> >+ if (i915.enable_guc_submission)
> >+ i915_guc_wq_unreserve(request);
> >+err_unpin:
> >+ intel_lr_context_unpin(request->ctx, engine);
> >+ return ret;
> >+}
> >+
> > static int intel_logical_ring_workarounds_emit(struct drm_i915_gem_request *req)
> > {
> > int ret, i;
> >
>
> Poor man's split view shows proper use of cut and paste. With the
> subject fixed:
Pfiffle! I standby the cut'n'paste as I performed it!
All motion is relative and whatnot.
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the Intel-gfx
mailing list