]> git.hungrycats.org Git - linux/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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 Dec 2024 09:33:11 +0000 (10:33 +0100)
commit 4f8dbadef085ab447a01a8d4806a3f629fea05ed upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
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);