]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/etnaviv: flush shader L1 cache after user commandstream
authorLucas Stach <l.stach@pengutronix.de>
Fri, 25 Oct 2024 15:14:46 +0000 (17:14 +0200)
committerLucas Stach <l.stach@pengutronix.de>
Mon, 28 Oct 2024 15:49:09 +0000 (16:49 +0100)
The shader L1 cache is a writeback cache for shader loads/stores
and thus must be flushed before any BOs backing the shader buffers
are potentially freed.

Cc: stable@vger.kernel.org
Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
drivers/gpu/drm/etnaviv/etnaviv_buffer.c

index 384df1659be60d00910161c3c3b07711dc265c38..b13a17276d07cdb4266425d0f6ab8f2c2afc6a22 100644 (file)
@@ -482,7 +482,8 @@ void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, u32 exec_state,
        } else {
                CMD_LOAD_STATE(buffer, VIVS_GL_FLUSH_CACHE,
                                       VIVS_GL_FLUSH_CACHE_DEPTH |
-                                      VIVS_GL_FLUSH_CACHE_COLOR);
+                                      VIVS_GL_FLUSH_CACHE_COLOR |
+                                      VIVS_GL_FLUSH_CACHE_SHADER_L1);
                if (has_blt) {
                        CMD_LOAD_STATE(buffer, VIVS_BLT_ENABLE, 0x1);
                        CMD_LOAD_STATE(buffer, VIVS_BLT_SET_COMMAND, 0x1);