drm/amdgpu: Fix wait for RLCG command completion
authorVictor Skvortsov <victor.skvortsov@amd.com>
Thu, 3 Feb 2022 21:13:40 +0000 (21:13 +0000)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 16 Feb 2022 22:30:02 +0000 (17:30 -0500)
if (!(tmp & flag)) condition will always evaluate to true
when the flag is 0x0 (AMDGPU_RLCG_GC_WRITE). Instead check
that address bits are cleared to determine whether
the command is complete.

Signed-off-by: Victor Skvortsov <victor.skvortsov@amd.com>
Tested-by: Bokun Zhang <bokun.zhang@amd.com>
Reviewed by: Shaoyun.liu <Shaoyun.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h

index 6668d7f..5656bf7 100644 (file)
@@ -902,7 +902,7 @@ static u32 amdgpu_virt_rlcg_reg_rw(struct amdgpu_device *adev, u32 offset, u32 v
 
                for (i = 0; i < timeout; i++) {
                        tmp = readl(scratch_reg1);
-                       if (!(tmp & flag))
+                       if (!(tmp & AMDGPU_RLCG_SCRATCH1_ADDRESS_MASK))
                                break;
                        udelay(10);
                }
index 6450936..239f232 100644 (file)
@@ -43,6 +43,8 @@
 #define AMDGPU_RLCG_WRONG_OPERATION_TYPE       0x2000000
 #define AMDGPU_RLCG_REG_NOT_IN_RANGE           0x1000000
 
+#define AMDGPU_RLCG_SCRATCH1_ADDRESS_MASK      0xFFFFF
+
 /* all asic after AI use this offset */
 #define mmRCC_IOV_FUNC_IDENTIFIER 0xDE5
 /* tonga/fiji use this offset */