drm/i915: Check workaround status on dfs read time
authorMika Kuoppala <mika.kuoppala@linux.intel.com>
Tue, 7 Oct 2014 14:21:27 +0000 (17:21 +0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 24 Oct 2014 14:34:08 +0000 (16:34 +0200)
As the workaround list has the value as initialization time
constant, we can do the simple checking on the go without
negleting igt.

Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Arun Siluvery <arun.siluvery@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_debugfs.c

index 62c111b1f0d8ba1f2b41808b6663ba44efdea4cd..6f8c9d780632b380e45b8824d4ab4b2d569d2b36 100644 (file)
@@ -2657,16 +2657,16 @@ static int i915_wa_registers(struct seq_file *m, void *unused)
 
        seq_printf(m, "Workarounds applied: %d\n", dev_priv->workarounds.count);
        for (i = 0; i < dev_priv->workarounds.count; ++i) {
-               u32 addr, mask;
+               u32 addr, mask, value, read;
+               bool ok;
 
                addr = dev_priv->workarounds.reg[i].addr;
                mask = dev_priv->workarounds.reg[i].mask;
-               dev_priv->workarounds.reg[i].value = I915_READ(addr) | mask;
-               if (dev_priv->workarounds.reg[i].addr)
-                       seq_printf(m, "0x%X: 0x%08X, mask: 0x%08X\n",
-                                  dev_priv->workarounds.reg[i].addr,
-                                  dev_priv->workarounds.reg[i].value,
-                                  dev_priv->workarounds.reg[i].mask);
+               value = dev_priv->workarounds.reg[i].value;
+               read = I915_READ(addr);
+               ok = (value & mask) == (read & mask);
+               seq_printf(m, "0x%X: 0x%08X, mask: 0x%08X, read: 0x%08x, status: %s\n",
+                          addr, value, mask, read, ok ? "OK" : "FAIL");
        }
 
        intel_runtime_pm_put(dev_priv);