Message ID | 20220225000623.1934438-6-John.C.Harrison@Intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Prep work for next GuC release | expand |
On 2/24/2022 4:06 PM, John.C.Harrison@Intel.com wrote: > From: John Harrison <John.C.Harrison@Intel.com> > > The LRC descriptor was being initialised early on in the context > registration sequence. It could then be determined that the actual > registration needs to be delayed and the descriptor would be wiped > out. This is inefficient, so move the setup to later in the process > after the point of no return. > > v2: Move some split changes into the split patch (and do them > correctly). > > Signed-off-by: John Harrison <John.C.Harrison@Intel.com> Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Daniele > --- > drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c > index e41e309b9e7e..d9e1cd3e1db2 100644 > --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c > +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c > @@ -2153,6 +2153,8 @@ static int __guc_action_register_context(struct intel_guc *guc, > 0, loop); > } > > +static void prepare_context_registration_info(struct intel_context *ce); > + > static int register_context(struct intel_context *ce, bool loop) > { > struct intel_guc *guc = ce_to_guc(ce); > @@ -2163,6 +2165,8 @@ static int register_context(struct intel_context *ce, bool loop) > GEM_BUG_ON(intel_context_is_child(ce)); > trace_intel_context_register(ce); > > + prepare_context_registration_info(ce); > + > if (intel_context_is_parent(ce)) > ret = __guc_action_register_multi_lrc(guc, ce, ce->guc_id.id, > offset, loop); > @@ -2317,8 +2321,6 @@ static int try_context_registration(struct intel_context *ce, bool loop) > clr_ctx_id_mapping(guc, desc_idx); > set_ctx_id_mapping(guc, desc_idx, ce); > > - prepare_context_registration_info(ce); > - > /* > * The context_lookup xarray is used to determine if the hardware > * context is currently registered. There are two cases in which it
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c index e41e309b9e7e..d9e1cd3e1db2 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c @@ -2153,6 +2153,8 @@ static int __guc_action_register_context(struct intel_guc *guc, 0, loop); } +static void prepare_context_registration_info(struct intel_context *ce); + static int register_context(struct intel_context *ce, bool loop) { struct intel_guc *guc = ce_to_guc(ce); @@ -2163,6 +2165,8 @@ static int register_context(struct intel_context *ce, bool loop) GEM_BUG_ON(intel_context_is_child(ce)); trace_intel_context_register(ce); + prepare_context_registration_info(ce); + if (intel_context_is_parent(ce)) ret = __guc_action_register_multi_lrc(guc, ce, ce->guc_id.id, offset, loop); @@ -2317,8 +2321,6 @@ static int try_context_registration(struct intel_context *ce, bool loop) clr_ctx_id_mapping(guc, desc_idx); set_ctx_id_mapping(guc, desc_idx, ce); - prepare_context_registration_info(ce); - /* * The context_lookup xarray is used to determine if the hardware * context is currently registered. There are two cases in which it