[PATCH 2/2] ban-scratch-overwrite
Chris Wilson
chris at chris-wilson.co.uk
Tue Jul 14 13:41:54 UTC 2020
---
drivers/gpu/drm/i915/gt/intel_lrc.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index e0280a672f1d..87b9f76cf80e 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -3305,10 +3305,29 @@ check_redzone(const void *vaddr, const struct intel_engine_cs *engine)
engine->name);
}
+static void check_scratch(struct intel_context *ce)
+{
+ struct i915_page_scratch *scratch = &ce->vm->scratch[0];
+ void *vaddr;
+
+ if (!IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM))
+ return;
+
+ vaddr = kmap(scratch->base.page);
+ if (memchr_inv(vaddr, POISON_FREE, PAGE_SIZE)) {
+ drm_err(&ce->engine->i915->drm,
+ "%s scratch page overwritten!\n",
+ ce->engine->name);
+ intel_context_set_banned(ce);
+ }
+ kunmap(scratch->base.page);
+}
+
static void execlists_context_unpin(struct intel_context *ce)
{
check_redzone((void *)ce->lrc_reg_state - LRC_STATE_OFFSET,
ce->engine);
+ check_scratch(ce);
i915_gem_object_unpin_map(ce->state->obj);
}
--
2.20.1
More information about the Intel-gfx-trybot
mailing list