On 24/10/2025 13:53, Tvrtko Ursulin wrote:

On 24/10/2025 12:04, Jocelyn Falempe wrote:
On a lenovo se100 server, when using i915 GPU for rendering, and the
ast driver for display, the graphic output is corrupted, and almost
unusable.

Adding a clflush call in the vmap function fixes this issue
completely.

AST is importing i915 allocated buffer in this use case, or how exactly is the relationship?

I think it's mutter/gnome-shell who copy the buffer from i915 to ast, here is the logs:

gnome-shell[2079]: Failed to initialize accelerated iGPU/dGPU framebuffer sharing: Do not want to use software renderer (llvmpipe (LLVM 19.1.7, 256 bits)), falling back to CPU copy path
gnome-shell[1533]: Created gbm renderer for '/dev/dri/card0'
gnome-shell[1533]: GPU /dev/dri/card1 selected as primary

card0 is ast and card1 is i915

Do you think there is something missing in mutter?

(Added Michel Dänzer that may know more about mutter).

--

Jocelyn



Wondering if some path is not calling dma_buf_begin/end_cpu_access().

Regards,

Tvrtko


Signed-off-by: Jocelyn Falempe <[email protected]>
---
  drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c | 1 +
  1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c b/drivers/gpu/ drm/i915/gem/i915_gem_dmabuf.c
index f4f1c979d1b9..f6a8c1cbe4d1 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c
@@ -77,6 +77,7 @@ static int i915_gem_dmabuf_vmap(struct dma_buf *dma_buf,
          return PTR_ERR(vaddr);
      iosys_map_set_vaddr(map, vaddr);
+    drm_clflush_virt_range(vaddr, dma_buf->size);
      return 0;
  }

base-commit: 0790925dadad0997580df6e32cdccd54316807f2


Reply via email to