Re: [Intel-gfx] [PATCH] drm/i915/guc/slpc: Apply min softlimit correctly
On Fri, 09 Jun 2023 15:02:52 -0700, Vinay Belgaumkar wrote: > Hi Vinay, > We were skipping when min_softlimit was equal to RPn. We need to apply > it rergardless as efficient frequency will push the SLPC min to RPe. regardless > This will break scenarios where user sets a min softlimit < RPe before > reset and then performs a GT reset. Can you explain the reason for the patch clearly in terms of variables in the code, what variable has what value and what is the bug. I am not following from the above description. Thanks. -- Ashutosh > > Fixes: 95ccf312a1e4 ("drm/i915/guc/slpc: Allow SLPC to use efficient > frequency") > > Signed-off-by: Vinay Belgaumkar > --- > drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c > b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c > index 01b75529311c..ee9f83af7cf6 100644 > --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c > +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c > @@ -606,7 +606,7 @@ static int slpc_set_softlimits(struct intel_guc_slpc > *slpc) > if (unlikely(ret)) > return ret; > slpc_to_gt(slpc)->defaults.min_freq = slpc->min_freq_softlimit; > - } else if (slpc->min_freq_softlimit != slpc->min_freq) { > + } else { > return intel_guc_slpc_set_min_freq(slpc, > slpc->min_freq_softlimit); > } > -- > 2.38.1 >
Re: [Intel-gfx] [PATCH] drm/i915/guc/slpc: Apply min softlimit correctly
On 6/13/2023 7:25 PM, Dixit, Ashutosh wrote: On Fri, 09 Jun 2023 15:02:52 -0700, Vinay Belgaumkar wrote: Hi Vinay, We were skipping when min_softlimit was equal to RPn. We need to apply it rergardless as efficient frequency will push the SLPC min to RPe. regardless This will break scenarios where user sets a min softlimit < RPe before reset and then performs a GT reset. Can you explain the reason for the patch clearly in terms of variables in the code, what variable has what value and what is the bug. I am not following from the above description. Hi Ashutosh, Scenario being fixed here is exactly the one in i915_pm_freq_api reset/suspend subtests (currently in review). Test sets min freq to RPn and then performs a reset. It then checks if cur_freq is RPn. Here's the sequence that shows the problem- RPLS:/home/gta# modprobe i915 RPLS:/home/gta# echo 1 > /sys/class/drm/card0/gt/gt0/slpc_ignore_eff_freq RPLS:/home/gta# echo 300 > /sys/class/drm/card0/gt_min_freq_mhz (RPn) RPLS:/home/gta# cat /sys/class/drm/card0/gt_cur_freq_mhz --> cur == RPn as expected 300 RPLS:/home/gta# echo 1 > /sys/kernel/debug/dri/0/gt0/reset --> reset RPLS:/home/gta# cat /sys/class/drm/card0/gt_min_freq_mhz --> shows the internal cached variable correctly 300 RPLS:/home/gta# cat /sys/class/drm/card0/gt_cur_freq_mhz --> actual freq being requested by SLPC (it's not RPn!!) 700 We need to sync up driver min freq value and SLPC min after a reset/suspend. Currently, we skip if the user had manually set min to RPn (this was an optimization we had before we enabled efficient freq usage). Thanks, Vinay. Thanks. -- Ashutosh Fixes: 95ccf312a1e4 ("drm/i915/guc/slpc: Allow SLPC to use efficient frequency") Signed-off-by: Vinay Belgaumkar --- drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c index 01b75529311c..ee9f83af7cf6 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c @@ -606,7 +606,7 @@ static int slpc_set_softlimits(struct intel_guc_slpc *slpc) if (unlikely(ret)) return ret; slpc_to_gt(slpc)->defaults.min_freq = slpc->min_freq_softlimit; - } else if (slpc->min_freq_softlimit != slpc->min_freq) { + } else { return intel_guc_slpc_set_min_freq(slpc, slpc->min_freq_softlimit); } -- 2.38.1
Re: [Intel-gfx] [PATCH] drm/i915/guc/slpc: Apply min softlimit correctly
On Fri, 09 Jun 2023 15:02:52 -0700, Vinay Belgaumkar wrote: > Hi Vinay, > We were skipping when min_softlimit was equal to RPn. We need to apply > it rergardless as efficient frequency will push the SLPC min to RPe. > This will break scenarios where user sets a min softlimit < RPe before > reset and then performs a GT reset. > > Fixes: 95ccf312a1e4 ("drm/i915/guc/slpc: Allow SLPC to use efficient > frequency") > > Signed-off-by: Vinay Belgaumkar > --- > drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c > b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c > index 01b75529311c..ee9f83af7cf6 100644 > --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c > +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c > @@ -606,7 +606,7 @@ static int slpc_set_softlimits(struct intel_guc_slpc > *slpc) > if (unlikely(ret)) > return ret; > slpc_to_gt(slpc)->defaults.min_freq = slpc->min_freq_softlimit; > - } else if (slpc->min_freq_softlimit != slpc->min_freq) { > + } else { > return intel_guc_slpc_set_min_freq(slpc, > slpc->min_freq_softlimit); IMO the current code is unnecessarily complicated and confusing and similar changes (with a little tweaking) should be made for max_freq too. But at least this is a step in the right direction so: Reviewed-by: Ashutosh Dixit > } > -- > 2.38.1 >