<div dir="ltr"><div dir="ltr">Hi Tvrtko,</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Dec 11, 2018 at 6:06 PM Tvrtko Ursulin <<a href="mailto:tvrtko.ursulin@linux.intel.com">tvrtko.ursulin@linux.intel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
On 11/12/2018 10:14, Ankit Navik wrote:<br>
> From: Praveen Diwakar <<a href="mailto:praveen.diwakar@intel.com" target="_blank">praveen.diwakar@intel.com</a>><br>
> <br>
> This patch will update power clock state register at runtime base on the<br>
> flag which can set by any governor which computes load and want to update<br>
> rpcs register.<br>
> subsequent patches will have a timer based governor which computes pending<br>
> load/request.<br>
> <br>
> V2:<br>
> * Reuse make_rpcs to get rpcs config. (Tvrtko Ursulin)<br>
> <br>
> V3:<br>
> * Rebase.<br>
> <br>
> Cc: Aravindan Muthukumar <<a href="mailto:aravindan.muthukumar@intel.com" target="_blank">aravindan.muthukumar@intel.com</a>><br>
> Cc: Kedar J Karanje <<a href="mailto:kedar.j.karanje@intel.com" target="_blank">kedar.j.karanje@intel.com</a>><br>
> Cc: Yogesh Marathe <<a href="mailto:yogesh.marathe@intel.com" target="_blank">yogesh.marathe@intel.com</a>><br>
> Reviewed-by: Tvrtko Ursulin <<a href="mailto:tvrtko.ursulin@linux.intel.com" target="_blank">tvrtko.ursulin@linux.intel.com</a>><br>
<br>
Again, I did not give an r-b for this!<br>
<br>
> Signed-off-by: Praveen Diwakar <<a href="mailto:praveen.diwakar@intel.com" target="_blank">praveen.diwakar@intel.com</a>><br>
> Signed-off-by: Ankit Navik <<a href="mailto:ankit.p.navik@intel.com" target="_blank">ankit.p.navik@intel.com</a>><br>
> ---<br>
> drivers/gpu/drm/i915/i915_gem_context.c | 4 ++++<br>
> drivers/gpu/drm/i915/i915_gem_context.h | 9 +++++++++<br>
> drivers/gpu/drm/i915/intel_lrc.c | 12 +++++++++++-<br>
> 3 files changed, 24 insertions(+), 1 deletion(-)<br>
> <br>
> diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c<br>
> index 0bcbe32..d040858 100644<br>
> --- a/drivers/gpu/drm/i915/i915_gem_context.c<br>
> +++ b/drivers/gpu/drm/i915/i915_gem_context.c<br>
> @@ -388,6 +388,10 @@ i915_gem_create_context(struct drm_i915_private *dev_priv,<br>
> <br>
> trace_i915_context_create(ctx);<br>
> atomic_set(&ctx->req_cnt, 0);<br>
> + ctx->slice_cnt = hweight8(INTEL_INFO(dev_priv)->sseu.slice_mask);<br>
> + ctx->subslice_cnt = hweight8(<br>
> + INTEL_INFO(dev_priv)->sseu.subslice_mask[0]);<br>
> + ctx->eu_cnt = INTEL_INFO(dev_priv)->sseu.eu_per_subslice;<br>
> <br>
> return ctx;<br>
> }<br>
> diff --git a/drivers/gpu/drm/i915/i915_gem_context.h b/drivers/gpu/drm/i915/i915_gem_context.h<br>
> index e824b15..e000530 100644<br>
> --- a/drivers/gpu/drm/i915/i915_gem_context.h<br>
> +++ b/drivers/gpu/drm/i915/i915_gem_context.h<br>
> @@ -199,6 +199,15 @@ struct i915_gem_context {<br>
> * go for low/medium/high load configuration of the GPU.<br>
> */<br>
> atomic_t req_cnt;<br>
> +<br>
> + /** slice_cnt: used to set the # of slices to be enabled. */<br>
> + u8 slice_cnt;<br>
> +<br>
> + /** subslice_cnt: used to set the # of subslices to be enabled. */<br>
> + u8 subslice_cnt;<br>
> +<br>
> + /** eu_cnt: used to set the # of eu to be enabled. */<br>
> + u8 eu_cnt;<br>
> };<br>
> <br>
> static inline bool i915_gem_context_is_closed(const struct i915_gem_context *ctx)<br>
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c<br>
> index d33f5ac..a17f676 100644<br>
> --- a/drivers/gpu/drm/i915/intel_lrc.c<br>
> +++ b/drivers/gpu/drm/i915/intel_lrc.c<br>
> @@ -171,6 +171,7 @@ static void execlists_init_reg_state(u32 *reg_state,<br>
> struct i915_gem_context *ctx,<br>
> struct intel_engine_cs *engine,<br>
> struct intel_ring *ring);<br>
> +static u32 make_rpcs(struct drm_i915_private *dev_priv);<br>
> <br>
> static inline struct i915_priolist *to_priolist(struct rb_node *rb)<br>
> {<br>
> @@ -417,12 +418,21 @@ execlists_update_context_pdps(struct i915_hw_ppgtt *ppgtt, u32 *reg_state)<br>
> <br>
> static u64 execlists_update_context(struct i915_request *rq)<br>
> {<br>
> + u32 rpcs_config = 0;<br>
<br>
Move to if block where it is used.<br>
<br>
> struct intel_context *ce = rq->hw_context;<br>
> + u32 *reg_state = ce->lrc_reg_state;<br>
<br>
No need to touch this.<br>
<br>
> + struct i915_gem_context *ctx = rq->gem_context;<br>
<br>
Can go under the if block as well.<br>
<br>
> struct i915_hw_ppgtt *ppgtt =<br>
> rq->gem_context->ppgtt ?: rq->i915->mm.aliasing_ppgtt;<br>
> - u32 *reg_state = ce->lrc_reg_state;<br>
> <br>
> reg_state[CTX_RING_TAIL+1] = intel_ring_set_tail(rq->ring, rq->tail);<br>
> + /* FIXME: To avoid stale rpcs config, move it to context_pin */<br>
<br>
This FIXME remains unresolved by the whole series, so that really cannot <br>
be like that.<br>
<br>
I suggest you add <a href="https://patchwork.freedesktop.org/patch/261560/" rel="noreferrer" target="_blank">https://patchwork.freedesktop.org/patch/261560/</a> to <br>
your series and rebase this on top.<br>
<br>
Which would actually make this patch not do very much and you should <br>
probably squash it with the one which actually uses the added fields.<br></blockquote><div><br></div><div>submitted v4 patch and reverted to previous function</div><div>i.e., get_context_rpcs_config as make_rpcs is changed in mainline. </div><div><br></div><div>Regards, Ankit </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
> + if (ctx->pid && ctx->name && (rq->engine->id == RCS)) {<br>
<br>
Why name and pid? You are using them as proxy for something.. but for <br>
what and why? The answer may hold a hint to the proper solution.<br>
<br>
> + rpcs_config = make_rpcs(ctx->i915);<br>
> + reg_state[CTX_LRI_HEADER_2] = MI_LOAD_REGISTER_IMM(1);<br>
> + CTX_REG(reg_state, CTX_R_PWR_CLK_STATE, GEN8_R_PWR_CLK_STATE,<br>
> + rpcs_config);<br>
> + }<br>
> <br>
> /* True 32b PPGTT with dynamic page allocation: update PDP<br>
> * registers and point the unallocated PDPs to scratch page.<br>
> <br>
<br>
Regards,<br>
<br>
Tvrtko<br>
_______________________________________________<br>
Intel-gfx mailing list<br>
<a href="mailto:Intel-gfx@lists.freedesktop.org" target="_blank">Intel-gfx@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/intel-gfx" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/intel-gfx</a><br>
</blockquote></div></div>