]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915/gtt: Skip clearing the GGTT under gen6+ full-ppgtt
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 19 Apr 2019 20:12:07 +0000 (21:12 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 19 Apr 2019 20:29:29 +0000 (21:29 +0100)
If we know that the user cannot access the GGTT, by virtue of having a
segregated memory area, we can skip clearing the unused entries as they
cannot be accessed.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Matthew Auld <matthew.william.auld@gmail.com>
Reviewed-by: Matthew Auld <matthew.william.auld@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190419201207.5477-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem_gtt.c

index 8f460cc4cc1f6170e49dfa0fc06fd5f89e4318bc..10558bc8bf901d45da1cf9e5d41f71d3a819fbcf 100644 (file)
@@ -3280,7 +3280,9 @@ static int gen6_gmch_probe(struct i915_ggtt *ggtt)
        size = gen6_get_total_gtt_size(snb_gmch_ctl);
        ggtt->vm.total = (size / sizeof(gen6_pte_t)) * I915_GTT_PAGE_SIZE;
 
-       ggtt->vm.clear_range = gen6_ggtt_clear_range;
+       ggtt->vm.clear_range = nop_clear_range;
+       if (!HAS_FULL_PPGTT(dev_priv) || intel_scanout_needs_vtd_wa(dev_priv))
+               ggtt->vm.clear_range = gen6_ggtt_clear_range;
        ggtt->vm.insert_page = gen6_ggtt_insert_page;
        ggtt->vm.insert_entries = gen6_ggtt_insert_entries;
        ggtt->vm.cleanup = gen6_gmch_remove;