[Intel-gfx] [PATCH] drm/i915/pmu: Report frequency as zero while GPU is sleeping
Chris Wilson
chris at chris-wilson.co.uk
Thu Nov 28 16:19:49 UTC 2019
Quoting Tvrtko Ursulin (2019-11-28 16:10:51)
> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
>
> We used to report the minimum possible frequency as both requested and
> active while GPU was in sleep state. This was a consequence of sampling
> the value from the "current frequency" field in our software tracking.
>
> This was strictly speaking wrong, but given that until recently the
> current frequency in sleeping state used to be equal to minimum, it did
> not stand out sufficiently to be noticed as such.
>
> After some recent changes have made the current frequency be reported
> as last active before GPU went to sleep, meaning both requested and active
> frequencies could end up being reported at their maximum values for the
> duration of the GPU idle state, it became much more obvious that this does
> not make sense.
>
> To fix this we will now sample the frequency counters only when the GPU is
> awake. As a consequence reported frequencies could be reported as below
> the GPU reported minimum but that should be much less confusing that the
> current situation.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Hmm. 0/0 while off, that will be a bit of a shock.
Idea/codewise
Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
I'll dogfood it a bit to see how much getting used to it will take :)
> ---
> drivers/gpu/drm/i915/i915_pmu.c | 44 +++++++++++++++++----------------
> 1 file changed, 23 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_pmu.c b/drivers/gpu/drm/i915/i915_pmu.c
> index 95e824a78d4d..b576a2be9f81 100644
> --- a/drivers/gpu/drm/i915/i915_pmu.c
> +++ b/drivers/gpu/drm/i915/i915_pmu.c
> @@ -378,32 +378,32 @@ frequency_sample(struct intel_gt *gt, unsigned int period_ns)
> struct i915_pmu *pmu = &i915->pmu;
> struct intel_rps *rps = >->rps;
>
> + if (!(pmu->enable &
> + (config_enabled_mask(I915_PMU_ACTUAL_FREQUENCY) |
> + config_enabled_mask(I915_PMU_REQUESTED_FREQUENCY))) ||
> + !intel_gt_pm_get_if_awake(gt))
> + return;
Fwiw, I'd put this as two if()s since the multiline flags makes it
harder to read. Any chance we could do a
if (!frequency_sample_enabled(pmu))
return;
/* Report 0/0 (actual/requested) frequency while parked */
if (!intel_gt_pm_get_if_awake(gt))
return;
-Chris
More information about the Intel-gfx
mailing list