drm/amdkfd: Ensure consistent barrier state saved in gfx12 trap handler
authorLancelot SIX <lancelot.six@amd.com>
Tue, 28 Jan 2025 19:16:49 +0000 (19:16 +0000)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 13 Feb 2025 00:47:15 +0000 (19:47 -0500)
commitd584198a6fe4c51f4aa88ad72f258f8961a0f11c
tree653ba967937093d338ed8beee6ead9425b5610cd
parenta0a455b4bc7483ad60e8b8a50330c1e05bb7bfcf
drm/amdkfd: Ensure consistent barrier state saved in gfx12 trap handler

It is possible for some waves in a workgroup to finish their save
sequence before the group leader has had time to capture the workgroup
barrier state.  When this happens, having those waves exit do impact the
barrier state.  As a consequence, the state captured by the group leader
is invalid, and is eventually incorrectly restored.

This patch proposes to have all waves in a workgroup wait for each other
at the end of their save sequence (just before calling s_endpgm_saved).

Signed-off-by: Lancelot SIX <lancelot.six@amd.com>
Reviewed-by: Jay Cornwall <jay.cornwall@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org # 6.12.x
drivers/gpu/drm/amd/amdkfd/cwsr_trap_handler.h
drivers/gpu/drm/amd/amdkfd/cwsr_trap_handler_gfx12.asm