From: Greg Kroah-Hartman Date: Wed, 15 Mar 2023 08:03:36 +0000 (+0100) Subject: 4.19-stable patches X-Git-Tag: v4.14.310~50 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=dbb635a6596363efe679da73167bda3a565299b9;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: drm-i915-don-t-use-bar-mappings-for-ring-buffers-with-llc.patch --- diff --git a/queue-4.19/drm-i915-don-t-use-bar-mappings-for-ring-buffers-with-llc.patch b/queue-4.19/drm-i915-don-t-use-bar-mappings-for-ring-buffers-with-llc.patch new file mode 100644 index 00000000000..518b684f54f --- /dev/null +++ b/queue-4.19/drm-i915-don-t-use-bar-mappings-for-ring-buffers-with-llc.patch @@ -0,0 +1,57 @@ +From 85636167e3206c3fbd52254fc432991cc4e90194 Mon Sep 17 00:00:00 2001 +From: John Harrison +Date: Wed, 15 Feb 2023 17:11:01 -0800 +Subject: drm/i915: Don't use BAR mappings for ring buffers with LLC +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: John Harrison + +commit 85636167e3206c3fbd52254fc432991cc4e90194 upstream. + +Direction from hardware is that ring buffers should never be mapped +via the BAR on systems with LLC. There are too many caching pitfalls +due to the way BAR accesses are routed. So it is safest to just not +use it. + +Signed-off-by: John Harrison +Fixes: 9d80841ea4c9 ("drm/i915: Allow ringbuffers to be bound anywhere") +Cc: Chris Wilson +Cc: Joonas Lahtinen +Cc: Jani Nikula +Cc: Rodrigo Vivi +Cc: Tvrtko Ursulin +Cc: intel-gfx@lists.freedesktop.org +Cc: # v4.9+ +Tested-by: Jouni Högander +Reviewed-by: Daniele Ceraolo Spurio +Link: https://patchwork.freedesktop.org/patch/msgid/20230216011101.1909009-3-John.C.Harrison@Intel.com +(cherry picked from commit 65c08339db1ada87afd6cfe7db8e60bb4851d919) +Signed-off-by: Jani Nikula +Signed-off-by: John Harrison +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/i915/intel_ringbuffer.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/i915/intel_ringbuffer.c ++++ b/drivers/gpu/drm/i915/intel_ringbuffer.c +@@ -1083,7 +1083,7 @@ int intel_ring_pin(struct intel_ring *ri + if (unlikely(ret)) + return ret; + +- if (i915_vma_is_map_and_fenceable(vma)) ++ if (i915_vma_is_map_and_fenceable(vma) && !HAS_LLC(vma->vm->i915)) + addr = (void __force *)i915_vma_pin_iomap(vma); + else + addr = i915_gem_object_pin_map(vma->obj, map); +@@ -1118,7 +1118,7 @@ void intel_ring_unpin(struct intel_ring + /* Discard any unused bytes beyond that submitted to hw. */ + intel_ring_reset(ring, ring->tail); + +- if (i915_vma_is_map_and_fenceable(ring->vma)) ++ if (i915_vma_is_map_and_fenceable(ring->vma) && !HAS_LLC(ring->vma->vm->i915)) + i915_vma_unpin_iomap(ring->vma); + else + i915_gem_object_unpin_map(ring->vma->obj); diff --git a/queue-4.19/series b/queue-4.19/series index 07241db7bac..fa86bb8b958 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -36,3 +36,4 @@ pci-add-solidrun-vendor-id.patch pci-avoid-flr-for-solidrun-snet-dpu-rev-1.patch media-ov5640-fix-analogue-gain-control.patch tipc-improve-function-tipc_wait_for_cond.patch +drm-i915-don-t-use-bar-mappings-for-ring-buffers-with-llc.patch