From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepak S Subject: Re: [PATCH] drm/i915: Add PM interrupt details and RPS thresholds to debugfs Date: Thu, 27 Mar 2014 20:26:40 +0530 Message-ID: <53343C28.5000103@linux.intel.com> References: <1395911174-8563-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id EEF316E971 for ; Thu, 27 Mar 2014 07:56:43 -0700 (PDT) In-Reply-To: <1395911174-8563-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org 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 > --- > 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