v1: Support gfx ras feature enablement for gfx v11_0_3.
v2: Update function name and error message.

Signed-off-by: Candice Li <candice...@amd.com>
Reviewed-by: Hawking Zhang <hawking.zh...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
index 5eefba2948a552..443ce664b6630f 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
@@ -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;
 }
 
-- 
2.17.1

Reply via email to