From 1c3e7e4ca00de56bbf8dc8bfe20063865ffb5897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 21 Nov 2025 17:41:01 -0500 Subject: [PATCH] ac: document RELEASE_MEM limitation with PS_DONE/CS_DONE on gfx6-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Timur Kristóf Reviewed-by: Samuel Pitoiset Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/amd/common/ac_cmdbuf_cp.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/amd/common/ac_cmdbuf_cp.c b/src/amd/common/ac_cmdbuf_cp.c index 8b5f6e14230..74d23f268cb 100644 --- a/src/amd/common/ac_cmdbuf_cp.c +++ b/src/amd/common/ac_cmdbuf_cp.c @@ -191,6 +191,9 @@ ac_emit_cp_release_mem_pws(struct ac_cmdbuf *cs, ASSERTED enum amd_gfx_level gfx uint32_t gcr_cntl) { assert(gfx_level >= GFX11 && ip_type == AMD_IP_GFX); + /* Only GFX12+ supports GCR ops with PS_DONE & CS_DONE in RELEASE_MEM. */ + assert(gfx_level >= GFX12 || !gcr_cntl || (event_type != V_028A90_PS_DONE && + event_type != V_028A90_CS_DONE)); /* Extract GCR_CNTL fields because the encoding is different in RELEASE_MEM. */ assert(G_586_GLI_INV(gcr_cntl) == 0); @@ -445,6 +448,10 @@ ac_emit_cp_release_mem(struct ac_cmdbuf *cs, enum amd_gfx_level gfx_level, uint32_t int_sel, uint32_t data_sel, uint64_t va, uint32_t new_fence, uint64_t eop_bug_va) { + /* Only GFX12+ supports GCR ops with PS_DONE & CS_DONE in RELEASE_MEM. */ + assert(gfx_level >= GFX12 || !event_flags || (event != V_028A90_PS_DONE && + event != V_028A90_CS_DONE)); + const bool is_mec = gfx_level >= GFX7 && ip_type == AMD_IP_COMPUTE; /* GFX7 CP DMA: any use of CP_DMA.DST_SEL=TC must be avoided when EOS packets are used.