drm/i915: Don't use stolen memory for ring buffers with LLC
authorJohn Harrison <John.C.Harrison@Intel.com>
Thu, 16 Feb 2023 01:11:00 +0000 (17:11 -0800)
committerJani Nikula <jani.nikula@intel.com>
Thu, 23 Feb 2023 11:58:22 +0000 (13:58 +0200)
Direction from hardware is that stolen memory should never be used for
ring buffer allocations on platforms with LLC. There are too many
caching pitfalls due to the way stolen memory accesses are routed. So
it is safest to just not use it.

Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Fixes: c58b735fc762 ("drm/i915: Allocate rings from stolen")
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v4.9+
Tested-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230216011101.1909009-2-John.C.Harrison@Intel.com
(cherry picked from commit f54c1f6c697c4297f7ed94283c184acc338a5cf8)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/gt/intel_ring.c

index 15ec64d881c4464dc062d73cd3b654d6b169ab7f..fb1d2595392ede154c55399de06f2b082a186faa 100644 (file)
@@ -116,7 +116,7 @@ static struct i915_vma *create_ring_vma(struct i915_ggtt *ggtt, int size)
 
        obj = i915_gem_object_create_lmem(i915, size, I915_BO_ALLOC_VOLATILE |
                                          I915_BO_ALLOC_PM_VOLATILE);
-       if (IS_ERR(obj) && i915_ggtt_has_aperture(ggtt))
+       if (IS_ERR(obj) && i915_ggtt_has_aperture(ggtt) && !HAS_LLC(i915))
                obj = i915_gem_object_create_stolen(i915, size);
        if (IS_ERR(obj))
                obj = i915_gem_object_create_internal(i915, size);