]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 14 Dec 2024 18:51:25 +0000 (19:51 +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 cf741c5c82d2533747c28590e6591b5bc8d7bcf9..982174af74b1e29cbba2a96af4f34dec1522fa03 100644 (file)
@@ -481,7 +481,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);