Skip to content

Commit 8563616

Browse files
johnharr-inteljnikula
authored andcommitted
drm/i915: Don't use BAR mappings for ring buffers with LLC
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 <[email protected]> Fixes: 9d80841 ("drm/i915: Allow ringbuffers to be bound anywhere") Cc: Chris Wilson <[email protected]> Cc: Joonas Lahtinen <[email protected]> Cc: Jani Nikula <[email protected]> Cc: Rodrigo Vivi <[email protected]> Cc: Tvrtko Ursulin <[email protected]> Cc: [email protected] Cc: <[email protected]> # v4.9+ Tested-by: Jouni Högander <[email protected]> Reviewed-by: Daniele Ceraolo Spurio <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] (cherry picked from commit 65c0833) Signed-off-by: Jani Nikula <[email protected]>
1 parent 690e0ec commit 8563616

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/gpu/drm/i915/gt/intel_ring.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ int intel_ring_pin(struct intel_ring *ring, struct i915_gem_ww_ctx *ww)
5353
if (unlikely(ret))
5454
goto err_unpin;
5555

56-
if (i915_vma_is_map_and_fenceable(vma)) {
56+
if (i915_vma_is_map_and_fenceable(vma) && !HAS_LLC(vma->vm->i915)) {
5757
addr = (void __force *)i915_vma_pin_iomap(vma);
5858
} else {
5959
int type = i915_coherent_map_type(vma->vm->i915, vma->obj, false);
@@ -98,7 +98,7 @@ void intel_ring_unpin(struct intel_ring *ring)
9898
return;
9999

100100
i915_vma_unset_ggtt_write(vma);
101-
if (i915_vma_is_map_and_fenceable(vma))
101+
if (i915_vma_is_map_and_fenceable(vma) && !HAS_LLC(vma->vm->i915))
102102
i915_vma_unpin_iomap(vma);
103103
else
104104
i915_gem_object_unpin_map(vma->obj);

0 commit comments

Comments
 (0)