* [PATCH] drm/i915: Add PM interrupt details and RPS thresholds to debugfs
@ 2014-03-27 9:06 Chris Wilson
2014-03-27 13:54 ` Daniel Vetter
2014-03-27 14:56 ` Deepak S
0 siblings, 2 replies; 3+ messages in thread
From: Chris Wilson @ 2014-03-27 9:06 UTC (permalink / raw)
To: intel-gfx
When trying to determine whether RPS is working as intended, more
information is better. In particular, what interrupts are being
generated and the various thresholds for generating them.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
drivers/gpu/drm/i915/i915_debugfs.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index e0c991122dd2..4a2bcadadaf8 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -1095,6 +1095,7 @@ static int i915_cur_delayinfo(struct seq_file *m, void *unused)
u32 gt_perf_status = I915_READ(GEN6_GT_PERF_STATUS);
u32 rp_state_limits = I915_READ(GEN6_RP_STATE_LIMITS);
u32 rp_state_cap = I915_READ(GEN6_RP_STATE_CAP);
+ u32 rpmodectl, rpinclimit, rpdeclimit;
u32 rpstat, cagf, reqf;
u32 rpupei, rpcurup, rpprevup;
u32 rpdownei, rpcurdown, rpprevdown;
@@ -1115,6 +1116,10 @@ static int i915_cur_delayinfo(struct seq_file *m, void *unused)
reqf >>= 25;
reqf *= GT_FREQUENCY_MULTIPLIER;
+ rpmodectl = I915_READ(GEN6_RP_CONTROL);
+ rpinclimit = I915_READ(GEN6_RP_UP_THRESHOLD);
+ rpdeclimit = I915_READ(GEN6_RP_DOWN_THRESHOLD);
+
rpstat = I915_READ(GEN6_RPSTAT1);
rpupei = I915_READ(GEN6_RP_CUR_UP_EI);
rpcurup = I915_READ(GEN6_RP_CUR_UP);
@@ -1131,14 +1136,23 @@ static int i915_cur_delayinfo(struct seq_file *m, void *unused)
gen6_gt_force_wake_put(dev_priv, FORCEWAKE_ALL);
mutex_unlock(&dev->struct_mutex);
+ seq_printf(m, "PM IER=0x%08x IMR=0x%08x ISR=0x%08x IIR=0x%08x, MASK=0x%08x\n",
+ I915_READ(GEN6_PMIER),
+ I915_READ(GEN6_PMIMR),
+ I915_READ(GEN6_PMISR),
+ I915_READ(GEN6_PMIIR),
+ I915_READ(GEN6_PMINTRMSK));
seq_printf(m, "GT_PERF_STATUS: 0x%08x\n", gt_perf_status);
- seq_printf(m, "RPSTAT1: 0x%08x\n", rpstat);
seq_printf(m, "Render p-state ratio: %d\n",
(gt_perf_status & 0xff00) >> 8);
seq_printf(m, "Render p-state VID: %d\n",
gt_perf_status & 0xff);
seq_printf(m, "Render p-state limit: %d\n",
rp_state_limits & 0xff);
+ seq_printf(m, "RPSTAT1: 0x%08x\n", rpstat);
+ seq_printf(m, "RPMODECTL: 0x%08x\n", rpmodectl);
+ seq_printf(m, "RPINCLIMIT: 0x%08x\n", rpinclimit);
+ seq_printf(m, "RPDECLIMIT: 0x%08x\n", rpdeclimit);
seq_printf(m, "RPNSWREQ: %dMHz\n", reqf);
seq_printf(m, "CAGF: %dMHz\n", cagf);
seq_printf(m, "RP CUR UP EI: %dus\n", rpupei &
--
1.9.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] drm/i915: Add PM interrupt details and RPS thresholds to debugfs
2014-03-27 9:06 [PATCH] drm/i915: Add PM interrupt details and RPS thresholds to debugfs Chris Wilson
@ 2014-03-27 13:54 ` Daniel Vetter
2014-03-27 14:56 ` Deepak S
1 sibling, 0 replies; 3+ messages in thread
From: Daniel Vetter @ 2014-03-27 13:54 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx
On Thu, Mar 27, 2014 at 09:06:14AM +0000, Chris Wilson wrote:
> When trying to determine whether RPS is working as intended, more
> information is better. In particular, what interrupts are being
> generated and the various thresholds for generating them.
>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Queued for -next, thanks for the patch.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] drm/i915: Add PM interrupt details and RPS thresholds to debugfs
2014-03-27 9:06 [PATCH] drm/i915: Add PM interrupt details and RPS thresholds to debugfs Chris Wilson
2014-03-27 13:54 ` Daniel Vetter
@ 2014-03-27 14:56 ` Deepak S
1 sibling, 0 replies; 3+ messages in thread
From: Deepak S @ 2014-03-27 14:56 UTC (permalink / raw)
To: Chris Wilson, intel-gfx
On Thursday 27 March 2014 02:36 PM, Chris Wilson wrote:
> When trying to determine whether RPS is working as intended, more
> information is better. In particular, what interrupts are being
> generated and the various thresholds for generating them.
>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/i915_debugfs.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index e0c991122dd2..4a2bcadadaf8 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -1095,6 +1095,7 @@ static int i915_cur_delayinfo(struct seq_file *m, void *unused)
> u32 gt_perf_status = I915_READ(GEN6_GT_PERF_STATUS);
> u32 rp_state_limits = I915_READ(GEN6_RP_STATE_LIMITS);
> u32 rp_state_cap = I915_READ(GEN6_RP_STATE_CAP);
> + u32 rpmodectl, rpinclimit, rpdeclimit;
> u32 rpstat, cagf, reqf;
> u32 rpupei, rpcurup, rpprevup;
> u32 rpdownei, rpcurdown, rpprevdown;
> @@ -1115,6 +1116,10 @@ static int i915_cur_delayinfo(struct seq_file *m, void *unused)
> reqf >>= 25;
> reqf *= GT_FREQUENCY_MULTIPLIER;
>
> + rpmodectl = I915_READ(GEN6_RP_CONTROL);
> + rpinclimit = I915_READ(GEN6_RP_UP_THRESHOLD);
> + rpdeclimit = I915_READ(GEN6_RP_DOWN_THRESHOLD);
> +
> rpstat = I915_READ(GEN6_RPSTAT1);
> rpupei = I915_READ(GEN6_RP_CUR_UP_EI);
> rpcurup = I915_READ(GEN6_RP_CUR_UP);
> @@ -1131,14 +1136,23 @@ static int i915_cur_delayinfo(struct seq_file *m, void *unused)
> gen6_gt_force_wake_put(dev_priv, FORCEWAKE_ALL);
> mutex_unlock(&dev->struct_mutex);
>
> + seq_printf(m, "PM IER=0x%08x IMR=0x%08x ISR=0x%08x IIR=0x%08x, MASK=0x%08x\n",
> + I915_READ(GEN6_PMIER),
> + I915_READ(GEN6_PMIMR),
> + I915_READ(GEN6_PMISR),
> + I915_READ(GEN6_PMIIR),
> + I915_READ(GEN6_PMINTRMSK));
> seq_printf(m, "GT_PERF_STATUS: 0x%08x\n", gt_perf_status);
> - seq_printf(m, "RPSTAT1: 0x%08x\n", rpstat);
> seq_printf(m, "Render p-state ratio: %d\n",
> (gt_perf_status & 0xff00) >> 8);
> seq_printf(m, "Render p-state VID: %d\n",
> gt_perf_status & 0xff);
> seq_printf(m, "Render p-state limit: %d\n",
> rp_state_limits & 0xff);
> + seq_printf(m, "RPSTAT1: 0x%08x\n", rpstat);
> + seq_printf(m, "RPMODECTL: 0x%08x\n", rpmodectl);
> + seq_printf(m, "RPINCLIMIT: 0x%08x\n", rpinclimit);
> + seq_printf(m, "RPDECLIMIT: 0x%08x\n", rpdeclimit);
> seq_printf(m, "RPNSWREQ: %dMHz\n", reqf);
> seq_printf(m, "CAGF: %dMHz\n", cagf);
> seq_printf(m, "RP CUR UP EI: %dus\n", rpupei &
Agreed more information better for debugging :)
Reviewed-by: Deepak S <deepak.s@linux.intel.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-03-27 14:56 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-27 9:06 [PATCH] drm/i915: Add PM interrupt details and RPS thresholds to debugfs Chris Wilson
2014-03-27 13:54 ` Daniel Vetter
2014-03-27 14:56 ` Deepak S
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox