[Intel-gfx] [PATCH v2] drm/i915/vlv: fix RC6 residency time calculation
Rodrigo Vivi
rodrigo.vivi at gmail.com
Mon Jun 1 12:01:57 PDT 2015
On Mon, Jun 1, 2015 at 12:32 AM, Imre Deak <imre.deak at intel.com> wrote:
> The divider value to convert from CZ clock rate to ms needs a +1
> adjustment on VLV just like on CHV. This matches both the spec and
> the accuracy test by pm_rc6_residency.
>
> v2:
> - simplify logic checking for the CHV 320MHz special case (Rodrigo)
>
> Testcase: igt/pm_rc6_residency
> Signed-off-by: Imre Deak <imre.deak at intel.com>
> ---
> drivers/gpu/drm/i915/i915_sysfs.c | 22 +++++++---------------
> 1 file changed, 7 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
> index 2476268..55bd04c 100644
> --- a/drivers/gpu/drm/i915/i915_sysfs.c
> +++ b/drivers/gpu/drm/i915/i915_sysfs.c
> @@ -64,24 +64,16 @@ static u32 calc_residency(struct drm_device *dev, const u32 reg)
> goto out;
> }
>
> - units = 0;
> - div = 1000000ULL;
> -
> - if (IS_CHERRYVIEW(dev)) {
> + if (IS_CHERRYVIEW(dev) && czcount_30ns == 1) {
> /* Special case for 320Mhz */
> - if (czcount_30ns == 1) {
> - div = 10000000ULL;
> - units = 3125ULL;
> - } else {
> - /* chv counts are one less */
> - czcount_30ns += 1;
> - }
> + div = 10000000ULL;
> + units = 3125ULL;
> + } else {
> + czcount_30ns += 1;
> + div = 1000000ULL;
> + units = DIV_ROUND_UP_ULL(30ULL * bias, czcount_30ns);
Is (u64) cast unnecessary?
But reading like this now I wonder if we couldn't just pass
czcount_30ns+1 instead of the increment...
But if we don't need the cast let's please just ignore this bikeshed
and let's move fwd! ;)
More organized than I had suggested, thanks.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> }
>
> - if (units == 0)
> - units = DIV_ROUND_UP_ULL(30ULL * bias,
> - (u64)czcount_30ns);
> -
> if (I915_READ(VLV_COUNTER_CONTROL) & VLV_COUNT_RANGE_HIGH)
> units <<= 8;
>
> --
> 2.1.4
>
--
Rodrigo Vivi
Blog: http://blog.vivi.eng.br
More information about the Intel-gfx
mailing list