[Intel-gfx] [PATCH 2/2] drm/i915: Dampen RPS slow start
Chris Wilson
chris at chris-wilson.co.uk
Wed Aug 1 20:28:47 UTC 2018
Quoting Chris Wilson (2018-08-01 18:04:19)
> Currently, we note congestion for the slow start ramping up of RPS only
> when we overshoot the target workload and have to reverse direction for
> our reclocking. That is, if we have a period where the current GPU
> frequency is enough to sustain the workload within our target
> utilisation, we should not trigger any RPS EI interrupts, and then may
> continue again with the previous last_adj after multiple periods causing
> us to dramatically overreact. To prevent us not noticing a period where
> the system is behaving correctly, we can schedule an extra interrupt
> that will not be associated with either an up or down event causing to
> reset last_adj back to zero, cancelling the slow start due to the
> congestion.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala at intel.com>
> ---
> drivers/gpu/drm/i915/i915_irq.c | 13 +++++++++----
> drivers/gpu/drm/i915/intel_pm.c | 15 +++++++++++----
> 2 files changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 90628a47ae17..e2ee1e13cec7 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1297,6 +1297,7 @@ static void gen6_pm_rps_work(struct work_struct *work)
> goto out;
>
> mutex_lock(&dev_priv->pcu_lock);
> + dev_priv->pm_rps_events &= ~GEN6_PM_RP_DOWN_EI_EXPIRED;
>
> pm_iir |= vlv_wa_c0_ei(dev_priv, pm_iir);
>
> @@ -1310,10 +1311,12 @@ static void gen6_pm_rps_work(struct work_struct *work)
> new_delay = rps->boost_freq;
> adj = 0;
> } else if (pm_iir & GEN6_PM_RP_UP_THRESHOLD) {
> - if (adj > 0)
> + if (adj > 0) {
> + dev_priv->pm_rps_events |= GEN6_PM_RP_DOWN_EI_EXPIRED;
> adj *= 2;
The original plan was to use UP/DOWN EI as the danger is that the two
evaluation intervals are not aligned and so not we may falsely detect
congestion in the middle of the ramp. The reason I didn't was we do use
UP_EI_EXPIRED for the manual calcs for vlv.
Hmm, still it would be better not to mix the wrong EI.
-Chris
More information about the Intel-gfx
mailing list