From: Jonathan Kim <[email protected]>

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 <[email protected]>
Acked-by: Harish Kasiviswanathan <[email protected]>
Reviewed-by: Felix Kuehling <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
index 447395d36a3eb..2ef0fce100676 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
@@ -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);
-- 
2.51.1

Reply via email to