Commit 8d03344b authored by Chris Wilson's avatar Chris Wilson

drm/i915/selftests: Switch 4k kmalloc to use get_free_page for alignment

In generating the reference LRC, we want a page-aligned address for
simplicity in computing the offsets within. This then shares the
computation for the HW LRC which is mapped and so page aligned, making
the comparison straightforward. It seems that kmalloc(4k) is not always
returning from a 4k-aligned slab cache (which would give us a page aligned
address) so force alignment by explicitly allocating a page.
Reported-by: default avatar"Gote, Nitin R" <nitin.r.gote@intel.com>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: "Gote, Nitin R" <nitin.r.gote@intel.com>
Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200923114156.17749-1-chris@chris-wilson.co.uk
parent 0e58de9f
...@@ -139,9 +139,10 @@ static int live_lrc_layout(void *arg) ...@@ -139,9 +139,10 @@ static int live_lrc_layout(void *arg)
* match the layout saved by HW. * match the layout saved by HW.
*/ */
lrc = kmalloc(PAGE_SIZE, GFP_KERNEL); lrc = (u32 *)__get_free_page(GFP_KERNEL); /* requires page alignment */
if (!lrc) if (!lrc)
return -ENOMEM; return -ENOMEM;
GEM_BUG_ON(offset_in_page(lrc));
err = 0; err = 0;
for_each_engine(engine, gt, id) { for_each_engine(engine, gt, id) {
...@@ -225,7 +226,7 @@ static int live_lrc_layout(void *arg) ...@@ -225,7 +226,7 @@ static int live_lrc_layout(void *arg)
break; break;
} }
kfree(lrc); free_page((unsigned long)lrc);
return err; return err;
} }
......
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