]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdkfd: disable shader message vgpr deallocation on gc 12.1
authorJonathan Kim <jonathan.kim@amd.com>
Mon, 26 May 2025 19:39:45 +0000 (15:39 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 10 Dec 2025 22:34:44 +0000 (17:34 -0500)
Shader messages to deallocate VGPRs prior to shader end can prevent
the trap handler from saving context, making debugging and core dumps
unreliable.

VGPR deallocations for performance gain is negligible.
GC 12.1 will NOP shader VGPR deallocation messages via HW
settings on driver boot.

Signed-off-by: Jonathan Kim <jonathan.kim@amd.com>
Acked-by: Harish Kasiviswanathan <harish.kasiviswanathan@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c

index 447395d36a3ebf1a80bdc2790d00a658e326986f..2ef0fce100676ecdd2dee3b47aab11afbe75a13b 100644 (file)
@@ -1362,6 +1362,11 @@ static void gfx_v12_1_xcc_init_compute_vmid(struct amdgpu_device *adev,
                data = RREG32_SOC15(GC, GET_INST(GC, xcc_id), regSPI_GDBG_PER_VMID_CNTL);
                data = REG_SET_FIELD(data, SPI_GDBG_PER_VMID_CNTL, TRAP_EN, 1);
                WREG32_SOC15(GC, GET_INST(GC, xcc_id), regSPI_GDBG_PER_VMID_CNTL, data);
+
+               /* Disable VGPR deallocation instruction for each KFD vmid. */
+               data = RREG32_SOC15(GC, GET_INST(GC, xcc_id), regSQ_DEBUG);
+               data = REG_SET_FIELD(data, SQ_DEBUG, DISABLE_VGPR_DEALLOC, 1);
+               WREG32_SOC15(GC, GET_INST(GC, xcc_id), regSQ_DEBUG, data);
        }
        soc_v1_0_grbm_select(adev, 0, 0, 0, 0, GET_INST(GC, xcc_id));
        mutex_unlock(&adev->srbm_mutex);