When sram ecc is disabled by vbios, ras initialization
process in the corrresponding IPs that suppport sram ecc
needs to be skipped. So update ras support capability
accordingly on top of this configuration. This capability
will block further ras operations to the unsupported IPs.

Signed-off-by: Guchun Chen <guchun.c...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
index 69b02b9d4131..79be004378fa 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
@@ -1748,8 +1748,23 @@ static void amdgpu_ras_check_supported(struct 
amdgpu_device *adev,
                         amdgpu_atomfirmware_sram_ecc_supported(adev)))
                *hw_supported = AMDGPU_RAS_BLOCK_MASK;
 
-       *supported = amdgpu_ras_enable == 0 ?
-                               0 : *hw_supported & amdgpu_ras_mask;
+       if (amdgpu_ras_enable == 0)
+               *supported = 0;
+       else {
+               *supported = *hw_supported;
+               /*
+                * When sram ecc is disabled in vbios, bypass those IP
+                * blocks that support sram ecc, and only hold UMC and DF.
+                */
+               if (!amdgpu_atomfirmware_sram_ecc_supported(adev)) {
+                       DRM_INFO("Bypass IPs that support sram ecc.\n");
+                       *supported &= (1 << AMDGPU_RAS_BLOCK__UMC |
+                                       1 << AMDGPU_RAS_BLOCK__DF);
+               }
+
+               /* ras support needs to align with module parmeter */
+               *supported &= amdgpu_ras_mask;
+       }
 }
 
 int amdgpu_ras_init(struct amdgpu_device *adev)
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to