drm/amdgpu: remove the check of init status in psp_ras_initialize
authorTao Zhou <tao.zhou1@amd.com>
Thu, 10 Nov 2022 06:37:08 +0000 (14:37 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 10 Nov 2022 20:29:32 +0000 (15:29 -0500)
The initialized status indicates RAS TA is loaded, but in some cases
(such as RAS fatal error) RAS TA could be destroyed although it's not
unloaded. Hence we load RAS TA unconditionally here.

Signed-off-by: Tao Zhou <tao.zhou1@amd.com>
Reviewed-by: Candice Li <candice.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c

index 2fcb5bfbef89b0256566dab61924fd6fcd788f22..0a8c30475dda0f89d567fb0c7abcacf1c09407e9 100644 (file)
@@ -1526,11 +1526,6 @@ int psp_ras_initialize(struct psp_context *psp)
        if (amdgpu_sriov_vf(adev))
                return 0;
 
-       if (psp->ras_context.context.initialized) {
-               dev_warn(adev->dev, "RAS WARN: TA has already been loaded\n");
-               return 0;
-       }
-
        if (!adev->psp.ras_context.context.bin_desc.size_bytes ||
            !adev->psp.ras_context.context.bin_desc.start_addr) {
                dev_info(adev->dev, "RAS: optional ras ta ucode is not available\n");
@@ -1602,6 +1597,9 @@ int psp_ras_initialize(struct psp_context *psp)
        else {
                if (ras_cmd->ras_status)
                        dev_warn(psp->adev->dev, "RAS Init Status: 0x%X\n", ras_cmd->ras_status);
+
+               /* fail to load RAS TA */
+               psp->ras_context.context.initialized = false;
        }
 
        return ret;