diff mbox series

[3/7] drm/i915/icl: Apply recommended rc6 idle hysteresis

Message ID 20190409161310.20382-3-mika.kuoppala@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series [1/7] drm/i915: Use dedicated rc6 enabling sequence for gen11 | expand

Commit Message

Mika Kuoppala April 9, 2019, 4:13 p.m. UTC
Use a recommended idle hysteresis for media and render powergates.

References: bspec#52070
Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_pm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Chris Wilson April 9, 2019, 4:16 p.m. UTC | #1
Quoting Mika Kuoppala (2019-04-09 17:13:06)
> Use a recommended idle hysteresis for media and render powergates.
> 
> References: bspec#52070
> Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_pm.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 30ef507b88a4..b9be9ea5fc18 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -7170,8 +7170,8 @@ static void gen11_enable_rc6(struct drm_i915_private *dev_priv)
>          * conservative, we have to factor in a context switch on top (due
>          * to ksoftirqd).
>          */
> -       I915_WRITE(GEN9_MEDIA_PG_IDLE_HYSTERESIS, 250);
> -       I915_WRITE(GEN9_RENDER_PG_IDLE_HYSTERESIS, 250);
> +       I915_WRITE(GEN9_MEDIA_PG_IDLE_HYSTERESIS, 25);
> +       I915_WRITE(GEN9_RENDER_PG_IDLE_HYSTERESIS, 25);

We were using higher than recommended for the simple reason of not
allowing it to powergate while signaling between engines. We are much
faster now (though be sure to disable semaphores to put us in worse
case) and since we use one value, we need to measure on the slow
platform.

Anyway, just pointing out there was a reason for a relatively large
hysteresis.
-Chris
Mika Kuoppala April 10, 2019, 8:04 a.m. UTC | #2
Chris Wilson <chris@chris-wilson.co.uk> writes:

> Quoting Mika Kuoppala (2019-04-09 17:13:06)
>> Use a recommended idle hysteresis for media and render powergates.
>> 
>> References: bspec#52070
>> Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
>> ---
>>  drivers/gpu/drm/i915/intel_pm.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
>> index 30ef507b88a4..b9be9ea5fc18 100644
>> --- a/drivers/gpu/drm/i915/intel_pm.c
>> +++ b/drivers/gpu/drm/i915/intel_pm.c
>> @@ -7170,8 +7170,8 @@ static void gen11_enable_rc6(struct drm_i915_private *dev_priv)
>>          * conservative, we have to factor in a context switch on top (due
>>          * to ksoftirqd).
>>          */
>> -       I915_WRITE(GEN9_MEDIA_PG_IDLE_HYSTERESIS, 250);
>> -       I915_WRITE(GEN9_RENDER_PG_IDLE_HYSTERESIS, 250);
>> +       I915_WRITE(GEN9_MEDIA_PG_IDLE_HYSTERESIS, 25);
>> +       I915_WRITE(GEN9_RENDER_PG_IDLE_HYSTERESIS, 25);
>
> We were using higher than recommended for the simple reason of not
> allowing it to powergate while signaling between engines. We are much
> faster now (though be sure to disable semaphores to put us in worse
> case) and since we use one value, we need to measure on the slow
> platform.
>
> Anyway, just pointing out there was a reason for a relatively large
> hysteresis.

Then we should just drop this patch. Ta for pointing out the
reasoning.
-Mika
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 30ef507b88a4..b9be9ea5fc18 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -7170,8 +7170,8 @@  static void gen11_enable_rc6(struct drm_i915_private *dev_priv)
 	 * conservative, we have to factor in a context switch on top (due
 	 * to ksoftirqd).
 	 */
-	I915_WRITE(GEN9_MEDIA_PG_IDLE_HYSTERESIS, 250);
-	I915_WRITE(GEN9_RENDER_PG_IDLE_HYSTERESIS, 250);
+	I915_WRITE(GEN9_MEDIA_PG_IDLE_HYSTERESIS, 25);
+	I915_WRITE(GEN9_RENDER_PG_IDLE_HYSTERESIS, 25);
 
 	/* 3a: Enable RC6 */
 	I915_WRITE(GEN6_RC6_THRESHOLD, 50000); /* 50/125ms per EI */