]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
drm/amdgpu/sdma6: set sdma hang watchdog
authorJack Xiao <Jack.Xiao@amd.com>
Tue, 9 Apr 2024 09:31:01 +0000 (17:31 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 12 Apr 2024 04:33:43 +0000 (00:33 -0400)
Set SDMAx_WATCHDOG_CNTL.QUEUE_HANG_COUNT registers
to improve SDMA reliability.

Signed-off-by: Jack Xiao <Jack.Xiao@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c

index 361835a61f2e66b37045430dfab0e038f5e62283..67a4d8b1512be2e5197a0fc22fddb1e5ab95dd09 100644 (file)
@@ -507,6 +507,13 @@ static int sdma_v6_0_gfx_resume(struct amdgpu_device *adev)
                /* set minor_ptr_update to 0 after wptr programed */
                WREG32_SOC15_IP(GC, sdma_v6_0_get_reg_offset(adev, i, regSDMA0_QUEUE0_MINOR_PTR_UPDATE), 0);
 
+               /* Set up sdma hang watchdog */
+               temp = RREG32_SOC15_IP(GC, sdma_v6_0_get_reg_offset(adev, i, regSDMA0_WATCHDOG_CNTL));
+               /* 100ms per unit */
+               temp = REG_SET_FIELD(temp, SDMA0_WATCHDOG_CNTL, QUEUE_HANG_COUNT,
+                                    max(adev->usec_timeout/100000, 1));
+               WREG32_SOC15_IP(GC, sdma_v6_0_get_reg_offset(adev, i, regSDMA0_WATCHDOG_CNTL), temp);
+
                /* Set up RESP_MODE to non-copy addresses */
                temp = RREG32_SOC15_IP(GC, sdma_v6_0_get_reg_offset(adev, i, regSDMA0_UTCL1_CNTL));
                temp = REG_SET_FIELD(temp, SDMA0_UTCL1_CNTL, RESP_MODE, 3);