Re: [PATCH] drm/i915/gen9: Add WaInPlaceDecompressionHang

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 17/06/2016 13:39, Mika Kuoppala wrote:
Add this workaround to prevent hang when in place compression
is used.

References: HSD#2135774
Signed-off-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxx>
---
  drivers/gpu/drm/i915/i915_drv.h         |  2 ++
  drivers/gpu/drm/i915/i915_reg.h         |  3 +++
  drivers/gpu/drm/i915/intel_ringbuffer.c | 14 ++++++++++++++
  3 files changed, 19 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 9fa9698fe247..d6818dcd9930 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2709,6 +2709,8 @@ struct drm_i915_cmd_table {
  #define SKL_REVID_D0		0x3
  #define SKL_REVID_E0		0x4
  #define SKL_REVID_F0		0x5
+#define SKL_REVID_G0		0x6
+#define SKL_REVID_H0		0x7

  #define IS_SKL_REVID(p, since, until) (IS_SKYLAKE(p) && IS_REVID(p, since, until))

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index ff87d0b58d91..aaaba9fc2ed2 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -1686,6 +1686,9 @@ enum skl_disp_power_wells {

  #define GEN7_TLB_RD_ADDR	_MMIO(0x4700)

+#define GEN9_GAMT_ECO_REG_RW_IA _MMIO(0x4ab0)
+#define   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS	(1<<18)
+
  #define GAMT_CHKN_BIT_REG	_MMIO(0x4ab8)
  #define   GAMT_CHKN_DISABLE_DYNAMIC_CREDIT_SHARING	(1<<28)

diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index fedd27049814..c3399be9f917 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1128,6 +1128,11 @@ static int skl_init_workarounds(struct intel_engine_cs *engine)
  	/* WaDisableGafsUnitClkGating:skl */
  	WA_SET_BIT(GEN7_UCGCTL4, GEN8_EU_GAUNIT_CLOCK_GATE_DISABLE);

+	/* WaInPlaceDecompressionHang:skl */
+	if (IS_SKL_REVID(dev_priv, SKL_REVID_H0, REVID_FOREVER))
+	WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
+		   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
+
indentation issue.

  	/* WaDisableLSQCROPERFforOCL:skl */
  	ret = wa_ring_whitelist_reg(engine, GEN8_L3SQCREG4);
  	if (ret)
@@ -1197,6 +1202,11 @@ static int bxt_init_workarounds(struct intel_engine_cs *engine)
  		WA_SET_BIT_MASKED(COMMON_SLICE_CHICKEN2,
  				  GEN8_SBE_DISABLE_REPLAY_BUF_OPTIMIZATION);

+	/* WaInPlaceDecompressionHang:bxt */
+	if (IS_BXT_REVID(dev_priv, BXT_REVID_C0, REVID_FOREVER))
+		WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
+			   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
+
  	return 0;
  }

@@ -1244,6 +1254,10 @@ static int kbl_init_workarounds(struct intel_engine_cs *engine)
  		GEN7_HALF_SLICE_CHICKEN1,
  		GEN7_SBE_SS_CACHE_DISPATCH_PORT_SHARING_DISABLE);

+	/* WaInPlaceDecompressionHang:kbl */
+	WA_SET_BIT(GEN9_GAMT_ECO_REG_RW_IA,
+		   GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
+
  	/* WaDisableLSQCROPERFforOCL:kbl */
  	ret = wa_ring_whitelist_reg(engine, GEN8_L3SQCREG4);
  	if (ret)

with the indentation fixed, it is,
Reviewed-by: Arun Siluvery <arun.siluvery@xxxxxxxxxxxxxxx>

regards
Arun

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




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux