drm/i915/gen9: add WaClearFlowControlGpgpuContextSave
authorTim Gore <tim.gore@intel.com>
Wed, 16 Mar 2016 16:13:46 +0000 (16:13 +0000)
committerTvrtko Ursulin <tvrtko.ursulin@intel.com>
Fri, 18 Mar 2016 11:12:29 +0000 (11:12 +0000)
This allows writes to EU flow control registers. Together
with SIP code from the user-mode driver this resolves a
hang seen in some pre-emption scenarios. Note that this
patch is just the kernel mode part of this workaround.

v2. Oops, add FLOW_CONTROL_ENABLE macro to i915_reg.h.

Signed-off-by: Tim Gore <tim.gore@intel.com>
Reviewed-by: Arun Siluvery <arun.siluvery@linux.intel.com>
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1458144826-17269-1-git-send-email-tim.gore@intel.com
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_ringbuffer.c

index 07e04495cd9ae38ce65c8e97f80f9a71ec17838f..264885fc245d346214fd1f90b2f2ac26c6daf86f 100644 (file)
@@ -7105,6 +7105,7 @@ enum skl_disp_power_wells {
 #define   GEN9_CCS_TLB_PREFETCH_ENABLE (1<<3)
 
 #define GEN8_ROW_CHICKEN               _MMIO(0xe4f0)
+#define   FLOW_CONTROL_ENABLE          (1<<15)
 #define   PARTIAL_INSTRUCTION_SHOOTDOWN_DISABLE        (1<<8)
 #define   STALL_DOP_GATING_DISABLE             (1<<5)
 
index b7c8fc1a73a3811dfb73012f44a0a80c901305f9..9c59ede5dd9a9fe5e203dff1de341997b772d794 100644 (file)
@@ -925,8 +925,10 @@ static int gen9_init_workarounds(struct intel_engine_cs *engine)
        I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) |
                   ECOCHK_DIS_TLB);
 
+       /* WaClearFlowControlGpgpuContextSave:skl,bxt */
        /* WaDisablePartialInstShootdown:skl,bxt */
        WA_SET_BIT_MASKED(GEN8_ROW_CHICKEN,
+                         FLOW_CONTROL_ENABLE |
                          PARTIAL_INSTRUCTION_SHOOTDOWN_DISABLE);
 
        /* Syncing dependencies between camera and graphics:skl,bxt */