From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Imre Deak <imre.deak@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 3/4] drm/i915/chv: Tune L3 SQC credits based on actual latencies
Date: Tue, 26 Apr 2016 19:19:11 +0300 [thread overview]
Message-ID: <20160426161911.GS4329@intel.com> (raw)
In-Reply-To: <20160425131638.GA4329@intel.com>
On Mon, Apr 25, 2016 at 04:16:38PM +0300, Ville Syrjälä wrote:
> On Mon, Apr 25, 2016 at 03:38:07PM +0300, Imre Deak wrote:
> > While browsing BSpec I bumped into a note saying we need to tune these
> > values based on actual measurements done after initial enabling. I've
> > checked that it indeed improves things on BXT. I haven't checked this on
> > CHV, but here it is if someone wants to give it a go.
> >
> > CC: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Signed-off-by: Imre Deak <imre.deak@intel.com>
> > ---
> > drivers/gpu/drm/i915/intel_pm.c | 41 +++++++++++++++++++++++++++++------------
> > 1 file changed, 29 insertions(+), 12 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> > index a9b7626..fcfdb7f 100644
> > --- a/drivers/gpu/drm/i915/intel_pm.c
> > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > @@ -6669,11 +6669,32 @@ static void lpt_suspend_hw(struct drm_device *dev)
> > }
> > }
> >
> > +static void gen8_set_l3sqc_credits(struct drm_i915_private *dev_priv,
> > + int general_prio_credits,
> > + int high_prio_credits)
> > +{
> > + u32 misccpctl;
> > +
> > + misccpctl = I915_READ(GEN7_MISCCPCTL);
> > + I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE);
> > +
> > + I915_WRITE(GEN8_L3SQCREG1,
> > + L3_GENERAL_PRIO_CREDITS(general_prio_credits) |
> > + L3_HIGH_PRIO_CREDITS(high_prio_credits));
> > +
> > + /*
> > + * Wait at least 100 clocks before re-enabling clock gating.
> > + * See the definition of L3SQCREG1 in BSpec.
> > + */
> > + POSTING_READ(GEN8_L3SQCREG1);
> > + udelay(1);
> > + I915_WRITE(GEN7_MISCCPCTL, misccpctl);
> > +}
> > +
> > static void broadwell_init_clock_gating(struct drm_device *dev)
> > {
> > struct drm_i915_private *dev_priv = dev->dev_private;
> > enum pipe pipe;
> > - uint32_t misccpctl;
> >
> > ilk_init_lp_watermarks(dev);
> >
> > @@ -6708,17 +6729,7 @@ static void broadwell_init_clock_gating(struct drm_device *dev)
> > * WaProgramL3SqcReg1Default:bdw
> > * WaTempDisableDOPClkGating:bdw
>
> The w/a note should be moved as well then.
>
> > */
> > - misccpctl = I915_READ(GEN7_MISCCPCTL);
> > - I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE);
> > - I915_WRITE(GEN8_L3SQCREG1, L3_GENERAL_PRIO_CREDITS(30) |
> > - L3_HIGH_PRIO_CREDITS(2));
> > - /*
> > - * Wait at least 100 clocks before re-enabling clock gating. See
> > - * the definition of L3SQCREG1 in BSpec.
> > - */
> > - POSTING_READ(GEN8_L3SQCREG1);
> > - udelay(1);
> > - I915_WRITE(GEN7_MISCCPCTL, misccpctl);
> > + gen8_set_l3sqc_credits(dev_priv, 30, 2);
> >
> > /*
> > * WaGttCachingOffByDefault:bdw
> > @@ -6989,6 +7000,12 @@ static void cherryview_init_clock_gating(struct drm_device *dev)
> > GEN8_SDEUNIT_CLOCK_GATE_DISABLE);
> >
> > /*
> > + * Adjust credits based on actual latencies, see BSpec LSQC Setting
> > + * Recommendations.
> > + */
> > + gen8_set_l3sqc_credits(dev_priv, 38, 2);
>
> Where exactly in Bspec is this? Last I looked CHV was supposed to be
> fine with the defaults.
OK, so the table of recommended values is in the "performance guide".
I don't actually know where the chv numbers came from since there's no
w/a for this, nor could I find a related hsd with any numbers.
Anyway, using these values Harri's membwtester texturing micro benchmark
gained >10% which seems nice. The other numbers seemed unchanged. I also
ran xonotic [1] but didn't see any significant changes in performance.
So based on that I'm fine with adjusting this on CHV.
[1] First I got crap results, but that turned out to be the CPU
side making a mess of things. So it seems we're back to having
to use taskset to pin the process to one core on chv :(
>
> > +
> > + /*
> > * GTT cache may not work with big pages, so if those
> > * are ever enabled GTT cache may need to be disabled.
> > */
> > --
> > 2.5.0
>
> --
> Ville Syrjälä
> Intel OTC
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-04-26 16:19 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-25 12:38 [PATCH 1/4] drm/i915/bdw: Add missing delay during L3 SQC credit programming Imre Deak
2016-04-25 12:38 ` [PATCH 2/4] drm/i915: Clean up L3 SQC register field definitions Imre Deak
2016-04-26 8:11 ` Mika Kuoppala
2016-04-26 9:03 ` Imre Deak
2016-04-26 9:21 ` Imre Deak
2016-04-26 16:55 ` Ville Syrjälä
2016-04-25 12:38 ` [PATCH 3/4] drm/i915/chv: Tune L3 SQC credits based on actual latencies Imre Deak
2016-04-25 13:16 ` Ville Syrjälä
2016-04-26 16:19 ` Ville Syrjälä [this message]
2016-04-26 16:39 ` [PATCH v2 " Imre Deak
2016-04-26 16:51 ` Ville Syrjälä
2016-04-25 12:38 ` [PATCH 4/4] drm/i915/bxt: " Imre Deak
2016-04-26 16:41 ` [PATCH v2 " Imre Deak
2016-04-26 16:53 ` Ville Syrjälä
2016-04-25 14:03 ` ✗ Fi.CI.BAT: failure for series starting with [1/4] drm/i915/bdw: Add missing delay during L3 SQC credit programming Patchwork
2016-04-26 16:55 ` [PATCH 1/4] " Ville Syrjälä
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=20160426161911.GS4329@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=imre.deak@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.