drm/amdgpu: Enable GFX RAS feature for gfx v11_0_3
authorCandice Li <candice.li@amd.com>
Fri, 22 Jul 2022 12:39:12 +0000 (20:39 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 1 Nov 2022 15:44:33 +0000 (11:44 -0400)
v1: Support gfx ras feature enablement for gfx v11_0_3.
v2: Update function name and error message.

Signed-off-by: Candice Li <candice.li@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c

index 5eefba2..443ce66 100644 (file)
@@ -4673,6 +4673,26 @@ static int gfx_v11_0_early_init(void *handle)
        return 0;
 }
 
+static int gfx_v11_0_ras_late_init(void *handle)
+{
+       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct ras_common_if *gfx_common_if;
+       int ret;
+
+       gfx_common_if = kzalloc(sizeof(struct ras_common_if), GFP_KERNEL);
+       if (!gfx_common_if)
+               return -ENOMEM;
+
+       gfx_common_if->block = AMDGPU_RAS_BLOCK__GFX;
+
+       ret = amdgpu_ras_feature_enable(adev, gfx_common_if, true);
+       if (ret)
+               dev_err(adev->dev, "Failed to enable gfx11 ras feature\n");
+
+       kfree(gfx_common_if);
+       return ret;
+}
+
 static int gfx_v11_0_late_init(void *handle)
 {
        struct amdgpu_device *adev = (struct amdgpu_device *)handle;
@@ -4686,6 +4706,12 @@ static int gfx_v11_0_late_init(void *handle)
        if (r)
                return r;
 
+       if (adev->ip_versions[GC_HWIP][0] == IP_VERSION(11, 0, 3)) {
+               r = gfx_v11_0_ras_late_init(handle);
+               if (r)
+                       return r;
+       }
+
        return 0;
 }