]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
net: bgmac: Fix return value check for fixed_phy_register()
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_ras.c
index 4769a18304d7a4435403ffce859902b25e70f816..8aaa427f8c0f63cfe824eb3c2f360737bfe7933a 100644 (file)
@@ -2065,6 +2065,14 @@ static void amdgpu_ras_do_recovery(struct work_struct *work)
                                ras->gpu_reset_flags &= ~AMDGPU_RAS_GPU_RESET_MODE2_RESET;
                                reset_context.method = AMD_RESET_METHOD_MODE2;
                        }
+
+                       /* Fatal error occurs in poison mode, mode1 reset is used to
+                        * recover gpu.
+                        */
+                       if (ras->gpu_reset_flags & AMDGPU_RAS_GPU_RESET_MODE1_RESET) {
+                               ras->gpu_reset_flags &= ~AMDGPU_RAS_GPU_RESET_MODE1_RESET;
+                               set_bit(AMDGPU_NEED_FULL_RESET, &reset_context.flags);
+                       }
                }
 
                amdgpu_device_gpu_recover(ras->adev, NULL, &reset_context);
@@ -2955,9 +2963,12 @@ void amdgpu_ras_global_ras_isr(struct amdgpu_device *adev)
                return;
 
        if (atomic_cmpxchg(&amdgpu_ras_in_intr, 0, 1) == 0) {
+               struct amdgpu_ras *ras = amdgpu_ras_get_context(adev);
+
                dev_info(adev->dev, "uncorrectable hardware error"
                        "(ERREVENT_ATHUB_INTERRUPT) detected!\n");
 
+               ras->gpu_reset_flags |= AMDGPU_RAS_GPU_RESET_MODE1_RESET;
                amdgpu_ras_reset_gpu(adev);
        }
 }
This page took 0.04202 seconds and 4 git commands to generate.