From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kenneth Graunke Subject: Re: [PATCH 2/4] drm/i915: gen7: add two more IVB workarounds Date: Fri, 03 Feb 2012 16:48:52 -0800 Message-ID: <4F2C8074.8020704@whitecape.org> References: <1328300538-3472-1-git-send-email-eugeni.dodonov@intel.com> <1328300538-3472-3-git-send-email-eugeni.dodonov@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from homiemail-a5.g.dreamhost.com (caiajhbdcbef.dreamhost.com [208.97.132.145]) by gabe.freedesktop.org (Postfix) with ESMTP id 1956F9E765 for ; Fri, 3 Feb 2012 16:48:54 -0800 (PST) In-Reply-To: <1328300538-3472-3-git-send-email-eugeni.dodonov@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Eugeni Dodonov Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org On 02/03/2012 12:22 PM, Eugeni Dodonov wrote: > This adds two cache-related workarounds for Ivy Bridge which can lead to 3D > ring hangs and corruptions. > > Signed-off-by: Eugeni Dodonov > --- > drivers/gpu/drm/i915/i915_reg.h | 7 +++++++ > drivers/gpu/drm/i915/intel_display.c | 6 ++++++ > 2 files changed, 13 insertions(+), 0 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h > index 80fd6b5..92274b1 100644 > --- a/drivers/gpu/drm/i915/i915_reg.h > +++ b/drivers/gpu/drm/i915/i915_reg.h > @@ -3028,6 +3028,13 @@ > #define DISP_TILE_SURFACE_SWIZZLING (1<<13) > #define DISP_FBC_WM_DIS (1<<15) > > +/* GEN7 chicken */ > +#define GEN7_COMMON_SLICE_CHICKEN1 0x7010 > +#define GEN7_WA_FOR_GEN7_L3_CONTROL 0x3C4FFF8C > + > +#define GEN7_L3_CHICKEN_MODE_REGISTER 0xB030 > +#define GEN7_WA_L3_CHICKEN_MODE 0x20000000 > + > /* PCH */ > > /* south display engine interrupt */ > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index a72100f..49e5870 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -8445,6 +8445,12 @@ static void gen6_init_clock_gating(struct drm_device *dev) > ILK_DPARB_CLK_GATE | > ILK_DPFD_CLK_GATE); > > + /* IVB workarounds */ > + I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1, > + GEN7_WA_FOR_GEN7_L3_CONTROL); > + I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER, > + GEN7_WA_L3_CHICKEN_MODE); > + > for_each_pipe(pipe) { > I915_WRITE(DSPCNTR(pipe), > I915_READ(DSPCNTR(pipe)) | Also, shouldn't these be in the ivybridge_init_clock_gating function, not gen6? These are clearly Gen7 registers.