Commit 73d8e5fb authored by Chris Wilson's avatar Chris Wilson

drm/i915/selftests: Detect unknown swizzling correctly

i915_gem_detect_bit_6_swizzle() tries to hide unknown swizzling from
userspace (and ourselves) leaving us with the only clue inside
i915->quirks & QUIRK_PIN_SWIZZLED_PAGES. If we see this bit set, it
means that we really have no clue as to what the swizzle pattern is
being used in any one page and so cannot compute what the reference
value should be in our tiling selftests. We have to skip the test.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107133Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180705171523.18462-1-chris@chris-wilson.co.uk
parent 9757973f
...@@ -347,6 +347,14 @@ static int igt_partial_tiling(void *arg) ...@@ -347,6 +347,14 @@ static int igt_partial_tiling(void *arg)
unsigned int pitch; unsigned int pitch;
struct tile tile; struct tile tile;
if (i915->quirks & QUIRK_PIN_SWIZZLED_PAGES)
/*
* The swizzling pattern is actually unknown as it
* varies based on physical address of each page.
* See i915_gem_detect_bit_6_swizzle().
*/
break;
tile.tiling = tiling; tile.tiling = tiling;
switch (tiling) { switch (tiling) {
case I915_TILING_X: case I915_TILING_X:
...@@ -357,8 +365,8 @@ static int igt_partial_tiling(void *arg) ...@@ -357,8 +365,8 @@ static int igt_partial_tiling(void *arg)
break; break;
} }
if (tile.swizzle == I915_BIT_6_SWIZZLE_UNKNOWN || GEM_BUG_ON(tile.swizzle == I915_BIT_6_SWIZZLE_UNKNOWN);
tile.swizzle == I915_BIT_6_SWIZZLE_9_10_17) if (tile.swizzle == I915_BIT_6_SWIZZLE_9_10_17)
continue; continue;
if (INTEL_GEN(i915) <= 2) { if (INTEL_GEN(i915) <= 2) {
......
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