[PATCH] drm/i915: Verify engine workarounds immediately after initialization

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Wed Dec 5 13:56:58 UTC 2018


From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

...

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c          | 1 +
 drivers/gpu/drm/i915/i915_gem.c          | 1 +
 drivers/gpu/drm/i915/intel_engine_cs.c   | 1 +
 drivers/gpu/drm/i915/intel_workarounds.c | 6 +++---
 drivers/gpu/drm/i915/intel_workarounds.h | 2 ++
 5 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index b310a897a4ad..55ed0379b3a2 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -2393,6 +2393,7 @@ int i915_reset_engine(struct intel_engine_cs *engine, const char *msg)
 	if (ret)
 		goto out;
 
+	intel_engine_verify_workarounds(engine, "reset");
 out:
 	intel_engine_cancel_stop_cs(engine);
 	i915_gem_reset_finish_engine(engine);
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index d36a9755ad91..e8467a3507ff 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -5279,6 +5279,7 @@ static int __i915_gem_restart_engines(void *data)
 				  engine->name, err);
 			return err;
 		}
+		intel_engine_verify_workarounds(engine, "restart");
 	}
 
 	return 0;
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index af2873403009..aa73093449e4 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -27,6 +27,7 @@
 #include "i915_drv.h"
 #include "intel_ringbuffer.h"
 #include "intel_lrc.h"
+#include "intel_workarounds.h"
 
 /* Haswell does have the CXT_SIZE register however it does not appear to be
  * valid. Now, docs explain in dwords what is in the context object. The full
diff --git a/drivers/gpu/drm/i915/intel_workarounds.c b/drivers/gpu/drm/i915/intel_workarounds.c
index 6bcac78a9c36..4f678c502daf 100644
--- a/drivers/gpu/drm/i915/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/intel_workarounds.c
@@ -1268,12 +1268,12 @@ void intel_engine_apply_workarounds(struct intel_engine_cs *engine)
 	wa_list_apply(engine->i915, &engine->wa_list);
 }
 
-#if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
-static bool intel_engine_verify_workarounds(struct intel_engine_cs *engine,
-					    const char *from)
+bool intel_engine_verify_workarounds(struct intel_engine_cs *engine,
+				     const char *from)
 {
 	return wa_list_verify(engine->i915, &engine->wa_list, from);
 }
 
+#if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
 #include "selftests/intel_workarounds.c"
 #endif
diff --git a/drivers/gpu/drm/i915/intel_workarounds.h b/drivers/gpu/drm/i915/intel_workarounds.h
index 7c734714b05e..04c0714d8c26 100644
--- a/drivers/gpu/drm/i915/intel_workarounds.h
+++ b/drivers/gpu/drm/i915/intel_workarounds.h
@@ -38,6 +38,8 @@ bool intel_gt_verify_workarounds(struct drm_i915_private *dev_priv,
 
 void intel_engine_init_whitelist(struct intel_engine_cs *engine);
 void intel_engine_apply_whitelist(struct intel_engine_cs *engine);
+bool intel_engine_verify_workarounds(struct intel_engine_cs *engine,
+				     const char *from);
 
 void intel_engine_init_workarounds(struct intel_engine_cs *engine);
 void intel_engine_apply_workarounds(struct intel_engine_cs *engine);
-- 
2.19.1



More information about the Intel-gfx-trybot mailing list