]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915/gtt: add some flushing for the 64K GTT path
authorMatthew Auld <matthew.auld@intel.com>
Fri, 3 Sep 2021 15:53:17 +0000 (16:53 +0100)
committerMatthew Auld <matthew.auld@intel.com>
Wed, 8 Sep 2021 08:35:37 +0000 (09:35 +0100)
If we need to mark the PDE as operating in 64K GTT mode, we should be
paranoid and flush the extra writes, like we already do for the PTEs. On
some platforms the clflush can apparently add the just the right amount
of magical delay to force the GPU to see the updated entry.

Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210903155317.1854012-1-matthew.auld@intel.com
drivers/gpu/drm/i915/gt/gen8_ppgtt.c

index 6e0e52eeb87a69e922063099695678bd749e91d7..6a5af995f5b1631c31dc05029bee2f4260110299 100644 (file)
@@ -548,6 +548,7 @@ static void gen8_ppgtt_insert_huge(struct i915_vma *vma,
                                              I915_GTT_PAGE_SIZE_2M)))) {
                        vaddr = px_vaddr(pd);
                        vaddr[maybe_64K] |= GEN8_PDE_IPS_64K;
+                       clflush_cache_range(vaddr, PAGE_SIZE);
                        page_size = I915_GTT_PAGE_SIZE_64K;
 
                        /*
@@ -568,6 +569,7 @@ static void gen8_ppgtt_insert_huge(struct i915_vma *vma,
                                for (i = 1; i < index; i += 16)
                                        memset64(vaddr + i, encode, 15);
 
+                               clflush_cache_range(vaddr, PAGE_SIZE);
                        }
                }