Commit 79c03caa authored by Matthew Auld's avatar Matthew Auld Committed by Chris Wilson

drm/i915/selftest: test aligned offsets for 64K

When using softpin it's not enough to just pad the vma size, we also
need to ensure the vma offset is at the start of the pt boundary, if we
plan to utilize 64K pages. Therefore to improve test coverage we should
use both aligned and unaligned gtt offsets in igt_write_huge.
Suggested-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarMatthew Auld <matthew.auld@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20181029203734.21936-1-matthew.auld@intel.com
parent e5ee4956
...@@ -1135,7 +1135,8 @@ static int igt_write_huge(struct i915_gem_context *ctx, ...@@ -1135,7 +1135,8 @@ static int igt_write_huge(struct i915_gem_context *ctx,
n = 0; n = 0;
for_each_engine(engine, i915, id) { for_each_engine(engine, i915, id) {
if (!intel_engine_can_store_dword(engine)) { if (!intel_engine_can_store_dword(engine)) {
pr_info("store-dword-imm not supported on engine=%u\n", id); pr_info("store-dword-imm not supported on engine=%u\n",
id);
continue; continue;
} }
engines[n++] = engine; engines[n++] = engine;
...@@ -1167,17 +1168,30 @@ static int igt_write_huge(struct i915_gem_context *ctx, ...@@ -1167,17 +1168,30 @@ static int igt_write_huge(struct i915_gem_context *ctx,
engine = engines[order[i] % n]; engine = engines[order[i] % n];
i = (i + 1) % (n * I915_NUM_ENGINES); i = (i + 1) % (n * I915_NUM_ENGINES);
err = __igt_write_huge(ctx, engine, obj, size, offset_low, dword, num + 1); /*
* In order to utilize 64K pages we need to both pad the vma
* size and ensure the vma offset is at the start of the pt
* boundary, however to improve coverage we opt for testing both
* aligned and unaligned offsets.
*/
if (obj->mm.page_sizes.sg & I915_GTT_PAGE_SIZE_64K)
offset_low = round_down(offset_low,
I915_GTT_PAGE_SIZE_2M);
err = __igt_write_huge(ctx, engine, obj, size, offset_low,
dword, num + 1);
if (err) if (err)
break; break;
err = __igt_write_huge(ctx, engine, obj, size, offset_high, dword, num + 1); err = __igt_write_huge(ctx, engine, obj, size, offset_high,
dword, num + 1);
if (err) if (err)
break; break;
if (igt_timeout(end_time, if (igt_timeout(end_time,
"%s timed out on engine=%u, offset_low=%llx offset_high=%llx, max_page_size=%x\n", "%s timed out on engine=%u, offset_low=%llx offset_high=%llx, max_page_size=%x\n",
__func__, engine->id, offset_low, offset_high, max_page_size)) __func__, engine->id, offset_low, offset_high,
max_page_size))
break; break;
} }
......
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