From: Mika Kuoppala <mika.kuoppala@linux.intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH 6/7] drm/i915: Use coarse grained residency counter with byt
Date: Tue, 14 Mar 2017 15:17:28 +0200 [thread overview]
Message-ID: <1489497449-31640-6-git-send-email-mika.kuoppala@intel.com> (raw)
In-Reply-To: <1489497449-31640-1-git-send-email-mika.kuoppala@intel.com>
Set byt rc residency counters high level as chv does by
default. We lose some accuracy on byt but we can do the calculation
without extra hw read on both platforms, as now they behave
identically in this respect.
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
---
drivers/gpu/drm/i915/i915_irq.c | 9 ++-------
drivers/gpu/drm/i915/intel_pm.c | 9 +++------
2 files changed, 5 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 00e7875..5ec12cf 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1100,14 +1100,9 @@ static u32 vlv_wa_c0_ei(struct drm_i915_private *dev_priv, u32 pm_iir)
if (prev->cpu_clock) {
u64 time, c0;
u32 render, media;
- unsigned int mul;
-
- mul = 1000 * 1000 * 100; /* scale to threshold% */
- if (I915_READ(VLV_COUNTER_CONTROL) & VLV_COUNT_RANGE_HIGH)
- mul <<= 8;
time = now.cpu_clock - prev->cpu_clock;
- time *= dev_priv->czclk_freq;
+ time *= dev_priv->czclk_freq >> 8;
/* Workload can be split between render + media,
* e.g. SwapBuffers being blitted in X after being rendered in
@@ -1117,7 +1112,7 @@ static u32 vlv_wa_c0_ei(struct drm_i915_private *dev_priv, u32 pm_iir)
render = now.render_c0 - prev->render_c0;
media = now.media_c0 - prev->media_c0;
c0 = max(render, media);
- c0 *= mul;
+ c0 *= 1000 * 1000 * 100; /* scale to threshold% */
if (c0 > time * dev_priv->rps.up_threshold)
events = GEN6_PM_RP_UP_THRESHOLD;
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 7e7a8d9..f1a4234 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -6392,7 +6392,8 @@ static void valleyview_enable_rps(struct drm_i915_private *dev_priv)
/* allows RC6 residency counter to work */
I915_WRITE(VLV_COUNTER_CONTROL,
- _MASKED_BIT_ENABLE(VLV_MEDIA_RC0_COUNT_EN |
+ _MASKED_BIT_ENABLE(VLV_COUNT_RANGE_HIGH |
+ VLV_MEDIA_RC0_COUNT_EN |
VLV_RENDER_RC0_COUNT_EN |
VLV_MEDIA_RC6_COUNT_EN |
VLV_RENDER_RC6_COUNT_EN));
@@ -8361,7 +8362,7 @@ static u64 vlv_residency_raw(struct drm_i915_private *dev_priv,
spin_lock_irq(&dev_priv->uncore.lock);
saved_ctl = I915_READ_FW(VLV_COUNTER_CONTROL);
- if (!(saved_ctl & VLV_COUNT_RANGE_HIGH))
+ if (WARN_ON(!(saved_ctl & VLV_COUNT_RANGE_HIGH)))
I915_WRITE_FW(VLV_COUNTER_CONTROL,
_MASKED_BIT_ENABLE(VLV_COUNT_RANGE_HIGH));
@@ -8379,10 +8380,6 @@ static u64 vlv_residency_raw(struct drm_i915_private *dev_priv,
tmp = I915_READ_FW(reg);
} while (upper != tmp);
- if (!(saved_ctl & VLV_COUNT_RANGE_HIGH))
- I915_WRITE_FW(VLV_COUNTER_CONTROL,
- _MASKED_BIT_DISABLE(VLV_COUNT_RANGE_HIGH));
-
spin_unlock_irq(&dev_priv->uncore.lock);
return lower | (u64)upper << 8;
--
2.7.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2017-03-14 13:18 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-14 13:17 [PATCH 1/7] drm/i915: Move residency calculation into intel_pm.c Mika Kuoppala
2017-03-14 13:17 ` [PATCH 2/7] drm/i915: Return residency as microseconds Mika Kuoppala
2017-03-14 14:18 ` Chris Wilson
2017-03-14 13:17 ` [PATCH 3/7] drm/i915: Extend vlv/chv residency resolution Mika Kuoppala
2017-03-14 14:16 ` Chris Wilson
2017-03-14 13:17 ` [PATCH 4/7] drm/i915: Convert debugfs to use generic residency calculator Mika Kuoppala
2017-03-14 14:19 ` Chris Wilson
2017-03-14 13:17 ` [PATCH 5/7] drm/i915: Use cpu clock to calculate rc0 residency Mika Kuoppala
2017-03-14 13:30 ` Chris Wilson
2017-03-14 13:48 ` Ville Syrjälä
2017-03-14 13:17 ` Mika Kuoppala [this message]
2017-03-14 13:17 ` [PATCH 7/7] drm/i915: Upclock on the first residency calculation Mika Kuoppala
2017-03-14 13:34 ` Chris Wilson
2017-03-14 13:36 ` Mika Kuoppala
2017-03-14 18:46 ` ✗ Fi.CI.BAT: warning for series starting with [1/7] drm/i915: Move residency calculation into intel_pm.c Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1489497449-31640-6-git-send-email-mika.kuoppala@intel.com \
--to=mika.kuoppala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox