]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/ras: Increase ras switch control range
authorYiPeng Chai <YiPeng.Chai@amd.com>
Fri, 31 Oct 2025 05:37:30 +0000 (13:37 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 4 Nov 2025 16:53:22 +0000 (11:53 -0500)
Increase ras switch control range.

Signed-off-by: YiPeng Chai <YiPeng.Chai@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_ras_mgr.c

index 556cf4d7b5ef886a5ab2bc1c17470dad672ae981..40c0bf85f1d3491693bcdacbae6e18835654b886 100644 (file)
@@ -591,6 +591,9 @@ struct amdgpu_ras {
 
        /* Protect poison injection */
        struct mutex poison_lock;
+
+       /* Disable/Enable uniras switch */
+       bool uniras_enabled;
 };
 
 struct ras_fs_data {
index dc2a4c6c19074ce80a3cd001bcd5bac9e05d18c1..f8ec0f26a9e793355456f7948e57422d8d222bbd 100644 (file)
@@ -283,6 +283,18 @@ static int amdgpu_ras_mgr_sw_init(struct amdgpu_ip_block *ip_block)
        struct amdgpu_ras_mgr *ras_mgr;
        int ret = 0;
 
+       /* Disabled by default */
+       con->uniras_enabled = false;
+
+       /* Enabled only in debug mode */
+       if (adev->debug_enable_ras_aca) {
+               con->uniras_enabled = true;
+               RAS_DEV_INFO(adev, "Debug amdgpu uniras!");
+       }
+
+       if (!con->uniras_enabled)
+               return 0;
+
        ras_mgr = kzalloc(sizeof(*ras_mgr), GFP_KERNEL);
        if (!ras_mgr)
                return -EINVAL;
@@ -315,6 +327,9 @@ static int amdgpu_ras_mgr_sw_fini(struct amdgpu_ip_block *ip_block)
        struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
        struct amdgpu_ras_mgr *ras_mgr = (struct amdgpu_ras_mgr *)con->ras_mgr;
 
+       if (!con->uniras_enabled)
+               return 0;
+
        if (!ras_mgr)
                return 0;
 
@@ -332,12 +347,11 @@ static int amdgpu_ras_mgr_sw_fini(struct amdgpu_ip_block *ip_block)
 static int amdgpu_ras_mgr_hw_init(struct amdgpu_ip_block *ip_block)
 {
        struct amdgpu_device *adev = ip_block->adev;
+       struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
        struct amdgpu_ras_mgr *ras_mgr = amdgpu_ras_mgr_get_context(adev);
        int ret;
 
-       /* Currently only debug mode can enable the ras module
-        */
-       if (!adev->debug_enable_ras_aca)
+       if (!con->uniras_enabled)
                return 0;
 
        if (!ras_mgr || !ras_mgr->ras_core)
@@ -360,11 +374,10 @@ static int amdgpu_ras_mgr_hw_init(struct amdgpu_ip_block *ip_block)
 static int amdgpu_ras_mgr_hw_fini(struct amdgpu_ip_block *ip_block)
 {
        struct amdgpu_device *adev = ip_block->adev;
+       struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
        struct amdgpu_ras_mgr *ras_mgr = amdgpu_ras_mgr_get_context(adev);
 
-       /* Currently only debug mode can enable the ras module
-        */
-       if (!adev->debug_enable_ras_aca)
+       if (!con->uniras_enabled)
                return 0;
 
        if (!ras_mgr || !ras_mgr->ras_core)