public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Imre Deak <imre.deak@intel.com>
To: Nick Hoath <nicholas.hoath@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915/bxt: Enable existing gen9 harware workarounds for Broxton
Date: Wed, 29 Apr 2015 17:23:11 +0300	[thread overview]
Message-ID: <1430317391.1811.32.camel@intel.com> (raw)
In-Reply-To: <1428403540-27040-1-git-send-email-nicholas.hoath@intel.com>

On ti, 2015-04-07 at 11:45 +0100, Nick Hoath wrote:
> Signed-off-by: Nick Hoath <nicholas.hoath@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_reg.h         |  8 +++++
>  drivers/gpu/drm/i915/intel_pm.c         |  2 ++
>  drivers/gpu/drm/i915/intel_ringbuffer.c | 53 +++++++++++++++++++--------------
>  3 files changed, 41 insertions(+), 22 deletions(-)

The patch needs to be rebased on the latest -nightly and your
"[PATCH 0/3] drm/i915/bxt: add workarounds" patchset. It'd be best to
resend it as part of that patchset.

> 
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 7e1a0fd9..91eef06 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -5339,6 +5339,7 @@ enum skl_disp_power_wells {
>  
>  #define GEN8_L3SQCREG4				0xb118
>  #define  GEN8_LQSC_RO_PERF_DIS			(1<<27)
> +#define  GEN8_PIPELINE_FLUSH_COHERENT_LINES	(1<<21)
>  
>  /* GEN8 chicken */
>  #define HDC_CHICKEN0				0x7300
> @@ -7324,4 +7325,11 @@ enum skl_disp_power_wells {
>  #define _PALETTE_A (dev_priv->info.display_mmio_offset + 0xa000)
>  #define _PALETTE_B (dev_priv->info.display_mmio_offset + 0xa800)
>  
> +/*
> + * Chicken Registers for LLC/eLLC Hot Spotting Avoidance Mode for
> + * 3D/Media Compressed Resources
> + */
> +#define GEN9_CHICKEN_MISC1_REG				0x42080
> +#define GEN9_CHICKEN_MISC1_NEW_HASH_ENABLE		(1<<15)

Please move this next to CHICKEN_PAR1_1 and use the standard two space
indent before the flag name. Also no need for the comment, it doesn't
fully describe the register and we don't have similar comments for other
registers either.

> +
>  #endif /* _I915_REG_H_ */
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index c3c473d..bbb5d64 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -96,6 +96,8 @@ static void skl_init_clock_gating(struct drm_device *dev)
>  
>  static void bxt_init_clock_gating(struct drm_device *dev)
>  {
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +
>  	gen9_init_clock_gating(dev);
>  
>  	/* WaVSRefCountFullforceMissDisable:bxt */
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> index 44c7b99..741bdfa 100644
> --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> @@ -916,7 +916,7 @@ static int gen9_init_workarounds(struct intel_engine_cs *ring)
>  	struct drm_device *dev = ring->dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  
> -	/* WaDisablePartialInstShootdown:skl */
> +	/* WaDisablePartialInstShootdown:skl,bxt */

It would be better to split out all the parts that only update the WA
comments into one separate patch.

>  	WA_SET_BIT_MASKED(GEN8_ROW_CHICKEN,
>  			  PARTIAL_INSTRUCTION_SHOOTDOWN_DISABLE);
>  
> @@ -924,45 +924,43 @@ static int gen9_init_workarounds(struct intel_engine_cs *ring)
>  	WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN3,
>  			  GEN9_DISABLE_OCL_OOB_SUPPRESS_LOGIC);
>  
> -	if (INTEL_REVID(dev) == SKL_REVID_A0 ||
> -	    INTEL_REVID(dev) == SKL_REVID_B0) {
> -		/* WaDisableDgMirrorFixInHalfSliceChicken5:skl */
> +	if (
> +	    (IS_SKYLAKE(dev) && (INTEL_REVID(dev) == SKL_REVID_A0 ||
> +	    INTEL_REVID(dev) == SKL_REVID_B0)) ||
> +	    (IS_BROXTON(dev) && INTEL_REVID(dev) == BXT_REVID_A0)
> +	    ) {

To align with the coding style please remove the whitespace after the
opening '(' and before the closing ')'.

I assume we should use the GT/Display device stepping, not the SOC
stepping. Accordingly the above check should be '< BXT_REVID_B0', since
steppings 0,1,2 all map to A0 GT/Display device stepping.

Please split out the enabling for each workaround into a separate patch.

> +		/* WaDisableDgMirrorFixInHalfSliceChicken5:skl,bxt */
>  		WA_CLR_BIT_MASKED(GEN9_HALF_SLICE_CHICKEN5,
>  				  GEN9_DG_MIRROR_FIX_ENABLE);
>  	}
>  
> -	if (IS_SKYLAKE(dev) && INTEL_REVID(dev) <= SKL_REVID_B0) {
> -		/* WaSetDisablePixMaskCammingAndRhwoInCommonSliceChicken:skl */
> +	if (
> +	    (IS_SKYLAKE(dev) && INTEL_REVID(dev) <= SKL_REVID_B0) ||
> +	    (IS_BROXTON(dev) && INTEL_REVID(dev) == BXT_REVID_A0)

As above '< BXT_REVID_B0'

> +	   ) {
> +		/* WaSetDisablePixMaskCammingAndRhwoInCommonSliceChicken:skl,bxt */
>  		WA_SET_BIT_MASKED(GEN7_COMMON_SLICE_CHICKEN1,
>  				  GEN9_RHWO_OPTIMIZATION_DISABLE);
>  		WA_SET_BIT_MASKED(GEN9_SLICE_COMMON_ECO_CHICKEN0,
>  				  DISABLE_PIXEL_MASK_CAMMING);
>  	}
>  
> -	if (INTEL_REVID(dev) >= SKL_REVID_C0) {
> -		/* WaEnableYV12BugFixInHalfSliceChicken7:skl */
> +	if (
> +	    (IS_SKYLAKE(dev) && INTEL_REVID(dev) >= SKL_REVID_C0) ||
> +	    (IS_BROXTON(dev))
> +	   ) {
> +		/* WaEnableYV12BugFixInHalfSliceChicken7:skl,bxt */
>  		WA_SET_BIT_MASKED(GEN9_HALF_SLICE_CHICKEN7,
>  				  GEN9_ENABLE_YV12_BUGFIX);
>  	}
>  
> -	if (INTEL_REVID(dev) <= SKL_REVID_D0) {
> -		/*
> -		 *Use Force Non-Coherent whenever executing a 3D context. This
> -		 * is a workaround for a possible hang in the unlikely event
> -		 * a TLB invalidation occurs during a PSD flush.
> -		 */
> -		/* WaForceEnableNonCoherent:skl */
> -		WA_SET_BIT_MASKED(HDC_CHICKEN0,
> -				  HDC_FORCE_NON_COHERENT);
> -	}

This should also be in a separate patch.

> -
> -	/* Wa4x4STCOptimizationDisable:skl */
> +	/* Wa4x4STCOptimizationDisable:skl,bxt */
>  	WA_SET_BIT_MASKED(CACHE_MODE_1, GEN8_4x4_STC_OPTIMIZATION_DISABLE);
>  
> -	/* WaDisablePartialResolveInVc:skl */
> +	/* WaDisablePartialResolveInVc:skl,bxt */
>  	WA_SET_BIT_MASKED(CACHE_MODE_1, GEN9_PARTIAL_RESOLVE_IN_VC_DISABLE);
>  
> -	/* WaCcsTlbPrefetchDisable:skl */
> +	/* WaCcsTlbPrefetchDisable:skl,bxt */
>  	WA_CLR_BIT_MASKED(GEN9_HALF_SLICE_CHICKEN5,
>  			  GEN9_CCS_TLB_PREFETCH_ENABLE);
>  
> @@ -1024,6 +1022,17 @@ static int skl_init_workarounds(struct intel_engine_cs *ring)
>  		WA_SET_BIT_MASKED(HIZ_CHICKEN,
>  				  BDW_HIZ_POWER_COMPILER_CLOCK_GATING_DISABLE);
>  
> +	if (INTEL_REVID(dev) <= SKL_REVID_D0) {
> +		/*
> +		 *Use Force Non-Coherent whenever executing a 3D context. This
> +		 * is a workaround for a possible hang in the unlikely event
> +		 * a TLB invalidation occurs during a PSD flush.
> +		 */
> +		/* WaForceEnableNonCoherent:skl */
> +		WA_SET_BIT_MASKED(HDC_CHICKEN0,
> +				  HDC_FORCE_NON_COHERENT);
> +	}
> +
>  	return skl_tune_iz_hashing(ring);
>  }
>  


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

      parent reply	other threads:[~2015-04-29 14:23 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-07 10:45 [PATCH] drm/i915/bxt: Enable existing gen9 harware workarounds for Broxton Nick Hoath
2015-04-09 19:08 ` shuang.he
2015-04-29 14:23 ` Imre Deak [this message]

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=1430317391.1811.32.camel@intel.com \
    --to=imre.deak@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=nicholas.hoath@intel.com \
    /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