From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: deepak.s@linux.intel.com
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915: Drop WA to fix Voltage not getting dropped to Vmin when Gfx is power gated.
Date: Fri, 13 Jun 2014 14:57:28 +0300 [thread overview]
Message-ID: <20140613115728.GY27580@intel.com> (raw)
In-Reply-To: <20140613113344.GX27580@intel.com>
On Fri, Jun 13, 2014 at 02:33:44PM +0300, Ville Syrjälä wrote:
> On Fri, Jun 13, 2014 at 03:46:14PM +0530, deepak.s@linux.intel.com wrote:
> > From: Deepak S <deepak.s@linux.intel.com>
> >
> > Workaround fixed in BYT. Forcing Gfx clk up not needed, and Requesting the
> > min freq should bring bring the voltage Vnn.
> >
> > Signed-off-by: Deepak S <deepak.s@linux.intel.com>
> > ---
> > drivers/gpu/drm/i915/intel_pm.c | 40 +---------------------------------------
> > 1 file changed, 1 insertion(+), 39 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> > index 0b088fe..9aee28b 100644
> > --- a/drivers/gpu/drm/i915/intel_pm.c
> > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > @@ -3198,44 +3198,6 @@ void gen6_set_rps(struct drm_device *dev, u8 val)
> > trace_intel_gpu_freq_change(val * 50);
> > }
> >
> > -/* vlv_set_rps_idle: Set the frequency to Rpn if Gfx clocks are down
> > - *
> > - * * If Gfx is Idle, then
> > - * 1. Mask Turbo interrupts
> > - * 2. Bring up Gfx clock
> > - * 3. Change the freq to Rpn and wait till P-Unit updates freq
> > - * 4. Clear the Force GFX CLK ON bit so that Gfx can down
> > - * 5. Unmask Turbo interrupts
> > -*/
> > -static void vlv_set_rps_idle(struct drm_i915_private *dev_priv)
> > -{
> > - /*
> > - * When we are idle. Drop to min voltage state.
> > - */
> > -
> > - if (dev_priv->rps.cur_freq <= dev_priv->rps.min_freq_softlimit)
> > - return;
> > -
> > - /* Mask turbo interrupt so that they will not come in between */
> > - I915_WRITE(GEN6_PMINTRMSK, 0xffffffff);
> > -
> > - vlv_force_gfx_clock(dev_priv, true);
> > -
> > - dev_priv->rps.cur_freq = dev_priv->rps.min_freq_softlimit;
> > -
> > - vlv_punit_write(dev_priv, PUNIT_REG_GPU_FREQ_REQ,
> > - dev_priv->rps.min_freq_softlimit);
> > -
> > - if (wait_for(((vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS))
> > - & GENFREQSTATUS) == 0, 5))
> > - DRM_ERROR("timed out waiting for Punit\n");
> > -
> > - vlv_force_gfx_clock(dev_priv, false);
> > -
> > - I915_WRITE(GEN6_PMINTRMSK,
> > - gen6_rps_pm_mask(dev_priv, dev_priv->rps.cur_freq));
> > -}
> > -
> > void gen6_rps_idle(struct drm_i915_private *dev_priv)
> > {
> > struct drm_device *dev = dev_priv->dev;
> > @@ -3243,7 +3205,7 @@ void gen6_rps_idle(struct drm_i915_private *dev_priv)
> > mutex_lock(&dev_priv->rps.hw_lock);
> > if (dev_priv->rps.enabled) {
> > if (IS_VALLEYVIEW(dev))
> > - vlv_set_rps_idle(dev_priv);
> > + valleyview_set_rps(dev_priv->dev, dev_priv->rps.min_freq_softlimit);
>
> This should take care of https://bugs.freedesktop.org/show_bug.cgi?id=75244
>
> I don't know when the hardware got fixed so I'm hesitant to r-b it, but
> at least my C0 works fine without this stuff, so:
> Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> However to avoid future mishaps I think we should have some kind of a
> comment before the valleyview_set_rps() call to let the reader know that
> we really need this on VLV to drop the voltage.
>
> Also it now occurs to me that we might be leaving the GPU frequency (and
> thus Vnn) high during a system suspend. I think we need an explicit
> rps_idle() call in the suspend path somewhere. Runtime suspend should be
> fine already since it depends on intel_mark_idle() getting called before
> the last rpm reference is dropped.
Maybe this is all we need?
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 3768199..fabd852 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -4530,7 +4530,7 @@ i915_gem_suspend(struct drm_device *dev)
del_timer_sync(&dev_priv->gpu_error.hangcheck_timer);
cancel_delayed_work_sync(&dev_priv->mm.retire_work);
- cancel_delayed_work_sync(&dev_priv->mm.idle_work);
+ flush_delayed_work(&dev_priv->mm.idle_work);
return 0;
--
Ville Syrjälä
Intel OTC
next prev parent reply other threads:[~2014-06-13 11:57 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-13 10:16 [PATCH] drm/i915: Drop WA to fix Voltage not getting dropped to Vmin when Gfx is power gated deepak.s
2014-06-13 11:33 ` Ville Syrjälä
2014-06-13 11:57 ` Ville Syrjälä [this message]
2014-06-13 12:26 ` Deepak S
2014-06-13 13:54 ` Daniel Vetter
2014-06-16 14:24 ` Deepak S
2014-06-28 5:56 ` [PATCH v2] drm/i915: Drop WA to fix Voltage not getting dropped to Vmin when Gfx is power gated for latest VLV revision deepak.s
2014-06-27 8:08 ` Jani Nikula
2014-06-30 10:20 ` Jani Nikula
2014-06-27 10:10 ` Ville Syrjälä
2014-07-02 11:12 ` Jani Nikula
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=20140613115728.GY27580@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=deepak.s@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