[Intel-gfx] [PATCH 03/12] drm/i915: Switch over to the LLC/eLLC hotspot avoidance hash mode for CCS
Ville Syrjälä
ville.syrjala at linux.intel.com
Fri Aug 25 11:40:00 UTC 2017
On Thu, Aug 24, 2017 at 09:55:54PM -0700, Ben Widawsky wrote:
> On 17-08-24 22:10:51, Ville Syrjälä wrote:
> >From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> >
> >Use the LLC/eLLC hotspot avoidance mode for CCS on LLC machines. This is
> >reported to give better performance.
> >
>
> Not seeing in the diff how this only hits eLLC machines. Am I misreading when
> this is needed.
It's enabled on all LLC machines, not just those that have eLLC.
>
> >Testing has indicated that we don't need to enforce any massive 2 or 4
> >MiB alignment for all compressed resources even though there are still
> >plenty of stale comments in the spec suggesting that we do.
> >
> >We do need to make sure every hardware unit that deals with the
> >compressed data uses the same hash mode.
> >
> >Cc: Ben Widawsky <ben at bwidawsk.net>
> >Cc: Jason Ekstrand <jason at jlekstrand.net>
> >Cc: Daniel Stone <daniels at collabora.com>
> >Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> >---
> > drivers/gpu/drm/i915/i915_reg.h | 8 +++++++-
> > drivers/gpu/drm/i915/intel_engine_cs.c | 13 +++++++++++++
> > drivers/gpu/drm/i915/intel_pm.c | 27 +++++++++++++--------------
> > 3 files changed, 33 insertions(+), 15 deletions(-)
> >
> >diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> >index c59c590e45c4..aa354874c2c1 100644
> >--- a/drivers/gpu/drm/i915/i915_reg.h
> >+++ b/drivers/gpu/drm/i915/i915_reg.h
> >@@ -6909,7 +6909,7 @@ enum {
> > # define CHICKEN3_DGMG_DONE_FIX_DISABLE (1 << 2)
> >
> > #define CHICKEN_PAR1_1 _MMIO(0x42080)
> >-#define SKL_RC_HASH_OUTSIDE (1 << 15)
> >+#define SKL_DE_COMPRESSED_HASH_MODE (1 << 15)
> > #define DPA_MASK_VBLANK_SRD (1 << 15)
> > #define FORCE_ARB_IDLE_PLANES (1 << 14)
> > #define SKL_EDP_PSR_FIX_RDWRAP (1 << 3)
> >@@ -6982,6 +6982,7 @@ enum {
> > # define GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC ((1<<10) | (1<<26))
> > # define GEN9_RHWO_OPTIMIZATION_DISABLE (1<<14)
> > #define COMMON_SLICE_CHICKEN2 _MMIO(0x7014)
> >+# define GEN9_PBE_COMPRESSED_HASH_SELECTION (1<<13)
> > # define GEN9_DISABLE_GATHER_AT_SET_SHADER_COMMON_SLICE (1<<12)
> > # define GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION (1<<8)
> > # define GEN8_CSC2_SBE_VUE_CACHE_CONSERVATIVE (1<<0)
> >@@ -8071,6 +8072,7 @@ enum {
> > #define GEN8_SAMPLER_POWER_BYPASS_DIS (1<<1)
> >
> > #define GEN9_HALF_SLICE_CHICKEN7 _MMIO(0xe194)
> >+#define GEN9_SAMPLER_HASH_COMPRESSED_READ_ADDR (1<<8)
> > #define GEN9_ENABLE_YV12_BUGFIX (1<<4)
> > #define GEN9_ENABLE_GPGPU_PREEMPTION (1<<2)
> >
> >@@ -9371,4 +9373,8 @@ enum skl_power_gate {
> > #define GEN9_L3_LRA_1_GPGPU_DEFAULT_VALUE_SKL 0x67F1427F /* " " */
> > #define GEN9_L3_LRA_1_GPGPU_DEFAULT_VALUE_BXT 0x5FF101FF /* " " */
> >
> >+#define MMCD_MISC_CTRL _MMIO(0x4ddc) /* skl+ */
> >+#define MMCD_PCLA (1 << 31)
> >+#define MMCD_HOTSPOT_EN (1 << 27)
> >+
> > #endif /* _I915_REG_H_ */
> >diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
> >index a6ac9d0a4156..61d9d79452c4 100644
> >--- a/drivers/gpu/drm/i915/intel_engine_cs.c
> >+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
> >@@ -812,6 +812,19 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
> > I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) |
> > ECOCHK_DIS_TLB);
> >
> >+ if (HAS_LLC(dev_priv)) {
> >+ /* WaCompressedResourceSamplerPbeMediaNewHashMode:skl,kbl
> >+ *
> >+ * Must match Display Engine. See
> >+ * WaCompressedResourceDisplayNewHashMode.
> >+ */
> >+ WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
> >+ GEN9_PBE_COMPRESSED_HASH_SELECTION);
> >+ WA_SET_BIT_MASKED(GEN9_HALF_SLICE_CHICKEN7,
> >+ GEN9_SAMPLER_HASH_COMPRESSED_READ_ADDR);
> >+ WA_SET_BIT(MMCD_MISC_CTRL, MMCD_PCLA | MMCD_HOTSPOT_EN);
> >+ }
> >+
> > /* WaClearFlowControlGpgpuContextSave:skl,bxt,kbl,glk,cfl */
> > /* WaDisablePartialInstShootdown:skl,bxt,kbl,glk,cfl */
> > WA_SET_BIT_MASKED(GEN8_ROW_CHICKEN,
> >diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> >index d5ff0b9f999f..45be01ce8e68 100644
> >--- a/drivers/gpu/drm/i915/intel_pm.c
> >+++ b/drivers/gpu/drm/i915/intel_pm.c
> >@@ -58,24 +58,23 @@
> >
> > static void gen9_init_clock_gating(struct drm_i915_private *dev_priv)
> > {
> >+ if (HAS_LLC(dev_priv)) {
> >+ /*
> >+ * WaCompressedResourceDisplayNewHashMode:skl,kbl
> >+ * Display WA#0390: skl,kbl
> >+ *
> >+ * Must match Sampler, Pixel Back End, and Media. See
> >+ * WaCompressedResourceSamplerPbeMediaNewHashMode.
> >+ */
> >+ I915_WRITE(CHICKEN_PAR1_1,
> >+ I915_READ(CHICKEN_PAR1_1) |
> >+ SKL_DE_COMPRESSED_HASH_MODE);
> >+ }
> >+
> > /* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl,cfl */
> > I915_WRITE(CHICKEN_PAR1_1,
> > I915_READ(CHICKEN_PAR1_1) | SKL_EDP_PSR_FIX_RDWRAP);
> >
> >- /*
> >- * Display WA#0390: skl,bxt,kbl,glk
> >- *
> >- * Must match Sampler, Pixel Back End, and Media
> >- * (0xE194 bit 8, 0x7014 bit 13, 0x4DDC bits 27 and 31).
> >- *
> >- * Including bits outside the page in the hash would
> >- * require 2 (or 4?) MiB alignment of resources. Just
> >- * assume the defaul hashing mode which only uses bits
> >- * within the page.
> >- */
> >- I915_WRITE(CHICKEN_PAR1_1,
> >- I915_READ(CHICKEN_PAR1_1) & ~SKL_RC_HASH_OUTSIDE);
> >-
> > I915_WRITE(GEN8_CONFIG0,
> > I915_READ(GEN8_CONFIG0) | GEN9_DEFAULT_FIXES);
> >
> >--
> >2.13.0
> >
>
> --
> Ben Widawsky, Intel Open Source Technology Center
--
Ville Syrjälä
Intel OTC
More information about the Intel-gfx
mailing list