Even eeprom is not functional, other RAS functions can still work,
no need to block the whole driver initialization.

Signed-off-by: Tao Zhou <[email protected]>
---
 drivers/gpu/drm/amd/ras/core/core.c | 31 +++++++++++++----------------
 1 file changed, 14 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/amd/ras/core/core.c 
b/drivers/gpu/drm/amd/ras/core/core.c
index 9d24d3b48d74..6e5503f53bbf 100644
--- a/drivers/gpu/drm/amd/ras/core/core.c
+++ b/drivers/gpu/drm/amd/ras/core/core.c
@@ -408,37 +408,34 @@ int ras_core_hw_init(struct ras_core_context *ras_core)
                ret = ras_fw_eeprom_hw_init(ras_core);
        else
                ret = ras_eeprom_hw_init(ras_core);
-       if (ret)
-               goto init_err6;
 
-       ret = ras_core_eeprom_recovery(ras_core);
-       if (ret) {
-               RAS_DEV_ERR(ras_core->dev,
-                       "Failed to recovery ras core, ret:%d\n", ret);
-               goto init_err6;
+       if (!ret) {
+               ret = ras_core_eeprom_recovery(ras_core);
+               if (ret)
+                       RAS_DEV_ERR(ras_core->dev,
+                               "Failed to recovery ras core, ret:%d\n", ret);
+
+               if (!ret)
+                       if (ras_fw_eeprom_supported(ras_core))
+                               ras_fw_eeprom_check_storage_status(ras_core);
+                       else
+                               ras_eeprom_check_storage_status(ras_core);
        }
 
-       if (ras_fw_eeprom_supported(ras_core))
-               ret = ras_fw_eeprom_check_storage_status(ras_core);
-       else
-               ret = ras_eeprom_check_storage_status(ras_core);
-       if (ret)
-               goto init_err6;
-
        ret = ras_process_init(ras_core);
        if (ret)
-               goto init_err7;
+               goto init_err6;
 
        ras_core->is_initialized = true;
 
        return 0;
 
-init_err7:
+init_err6:
        if (ras_fw_eeprom_supported(ras_core))
                ras_fw_eeprom_hw_fini(ras_core);
        else
                ras_eeprom_hw_fini(ras_core);
-init_err6:
+
        ras_gfx_hw_fini(ras_core);
 init_err5:
        ras_umc_hw_fini(ras_core);
-- 
2.34.1

Reply via email to