From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [Intel-gfx] [PATCH 3/4] drm/i915: implement another plane WM workaround for HSW Date: Wed, 9 Oct 2013 13:11:01 +0300 Message-ID: <20131009101101.GC13047@intel.com> References: <1381176948-2754-1-git-send-email-rodrigo.vivi@gmail.com> <1381176948-2754-4-git-send-email-rodrigo.vivi@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: Content-Disposition: inline In-Reply-To: <1381176948-2754-4-git-send-email-rodrigo.vivi@gmail.com> Sender: stable-owner@vger.kernel.org To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org, Paulo Zanoni , stable@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org On Mon, Oct 07, 2013 at 05:15:47PM -0300, Rodrigo Vivi wrote: > From: Paulo Zanoni >=20 > In some Haswell machines we're seeing a full system hang while callin= g > haswell_crtc_enable. Ville bisected the problem to the following > commit: > commit 90a8864320b2a9f91e5b5d561924a4bb70b90dcc > Author: Paulo Zanoni > Date: Fri May 3 17:23:45 2013 -0300 > drm/i915: set FORCE_ARB_IDLE_PLANES workaround >=20 > After some BSpec-digging I discovered that we don't implement one of > the workarounds mentioned in the description of bit 31 of PRI_CTL, > SPR_CTL and CUR_CTL. This patch implements the workaround, which make= s > the problem go away on my machine. Also notice that the workaround > implementation is almost a revert of the commit mentioned above, but > it still allows LP watermarks to be used. >=20 > Thanks to Ville for the help debugging the issue and for doing the > bisect. You can drop this patch. It's not needed anymore. >=20 > Cc: stable@vger.kernel.org > Credits-to: Ville Syrj=E4l=E4 > Signed-off-by: Paulo Zanoni > Signed-off-by: Rodrigo Vivi > --- > drivers/gpu/drm/i915/intel_display.c | 9 +++++++++ > 1 file changed, 9 insertions(+) >=20 > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i= 915/intel_display.c > index bc47f1e..8069bff 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -3565,6 +3565,7 @@ static void haswell_crtc_enable(struct drm_crtc= *crtc) > struct intel_crtc *intel_crtc =3D to_intel_crtc(crtc); > struct intel_encoder *encoder; > int pipe =3D intel_crtc->pipe; > + uint32_t wm_dbg_val; > =20 > WARN_ON(!crtc->enabled); > =20 > @@ -3597,6 +3598,11 @@ static void haswell_crtc_enable(struct drm_crt= c *crtc) > intel_ddi_set_pipe_settings(crtc); > intel_ddi_enable_transcoder_func(crtc); > =20 > + /* Workaround described in PRI_CTL, CUR_CTL and SPR_CTL bit 31. */ > + wm_dbg_val =3D I915_READ(WM_DBG); > + I915_WRITE(WM_DBG, wm_dbg_val | WM_DBG_DISALLOW_MULTIPLE_LP | > + WM_DBG_DISALLOW_MAXFIFO | WM_DBG_DISALLOW_SPRITE); > + > intel_update_watermarks(crtc); > intel_enable_pipe(dev_priv, pipe, > intel_crtc->config.has_pch_encoder, false); > @@ -3623,6 +3629,9 @@ static void haswell_crtc_enable(struct drm_crtc= *crtc) > * happening. > */ > intel_wait_for_vblank(dev, intel_crtc->pipe); > + > + /* Second part of the WM_DBG workaround. */ > + I915_WRITE(WM_DBG, wm_dbg_val); > } > =20 > static void ironlake_pfit_disable(struct intel_crtc *crtc) > --=20 > 1.8.1.4 >=20 > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx --=20 Ville Syrj=E4l=E4 Intel OTC