Commit c95ebab1 authored by Chris Wilson's avatar Chris Wilson

drm/i915/selftests: Ignore autoincrementing timestamp on verfifying whitelists

As a timestamp will automatically update itself, it will not hold only
contexts we write into it, and will change from the baseline value
making us suspect that our writes are landing. As this confuses us and
we would need more careful treatment to detect invalid stores into the
timestamp, skip it when verifying the whitelists.
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200602154839.6902-1-chris@chris-wilson.co.uk
parent d1613061
...@@ -417,6 +417,20 @@ static bool wo_register(struct intel_engine_cs *engine, u32 reg) ...@@ -417,6 +417,20 @@ static bool wo_register(struct intel_engine_cs *engine, u32 reg)
return false; return false;
} }
static bool timestamp(const struct intel_engine_cs *engine, u32 reg)
{
reg = (reg - engine->mmio_base) & ~RING_FORCE_TO_NONPRIV_ACCESS_MASK;
switch (reg) {
case 0x358:
case 0x35c:
case 0x3a8:
return true;
default:
return false;
}
}
static bool ro_register(u32 reg) static bool ro_register(u32 reg)
{ {
if ((reg & RING_FORCE_TO_NONPRIV_ACCESS_MASK) == if ((reg & RING_FORCE_TO_NONPRIV_ACCESS_MASK) ==
...@@ -497,6 +511,9 @@ static int check_dirty_whitelist(struct intel_context *ce) ...@@ -497,6 +511,9 @@ static int check_dirty_whitelist(struct intel_context *ce)
if (wo_register(engine, reg)) if (wo_register(engine, reg))
continue; continue;
if (timestamp(engine, reg))
continue; /* timestamps are expected to autoincrement */
ro_reg = ro_register(reg); ro_reg = ro_register(reg);
/* Clear non priv flags */ /* Clear non priv flags */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment