]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915/selftests: Switch 4k kmalloc to use get_free_page for alignment
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 23 Sep 2020 11:41:56 +0000 (12:41 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 5 Jan 2021 13:06:02 +0000 (13:06 +0000)
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: "Gote, Nitin R" <nitin.r.gote@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: "Gote, Nitin R" <nitin.r.gote@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200923114156.17749-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/selftest_lrc.c

index ba6c2be5c8ffb7209435a90cff3916a9d7d8ca70..3485cb7c431d084a2848a306ca8c541e96bb5d68 100644 (file)
@@ -139,9 +139,10 @@ static int live_lrc_layout(void *arg)
         * match the layout saved by HW.
         */
 
-       lrc = kmalloc(PAGE_SIZE, GFP_KERNEL);
+       lrc = (u32 *)__get_free_page(GFP_KERNEL); /* requires page alignment */
        if (!lrc)
                return -ENOMEM;
+       GEM_BUG_ON(offset_in_page(lrc));
 
        err = 0;
        for_each_engine(engine, gt, id) {
@@ -225,7 +226,7 @@ static int live_lrc_layout(void *arg)
                        break;
        }
 
-       kfree(lrc);
+       free_page((unsigned long)lrc);
        return err;
 }