drm/amdgpu: check sdma ras funcs pointer before accessing
authorHawking Zhang <Hawking.Zhang@amd.com>
Thu, 9 Jan 2020 11:38:25 +0000 (19:38 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 14 Jan 2020 15:18:09 +0000 (10:18 -0500)
sdma ras funcs are not supported by ASIC prior
to vega20

Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: Le Ma <Le.Ma@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c

index ec9d7873ed42198c3fdd807f59b400032c553498..5d9597f5ac5fc65f5ec0bdfc120910ada5f68630 100644 (file)
@@ -1809,7 +1809,10 @@ static int sdma_v4_0_late_init(void *handle)
                        RREG32_SDMA(i, mmSDMA0_EDC_COUNTER);
        }
 
-       return adev->sdma.funcs->ras_late_init(adev, &ih_info);
+       if (adev->sdma.funcs && adev->sdma.funcs->ras_late_init)
+               return adev->sdma.funcs->ras_late_init(adev, &ih_info);
+       else
+               return 0;
 }
 
 static int sdma_v4_0_sw_init(void *handle)
@@ -1881,7 +1884,8 @@ static int sdma_v4_0_sw_fini(void *handle)
        struct amdgpu_device *adev = (struct amdgpu_device *)handle;
        int i;
 
-       adev->sdma.funcs->ras_fini(adev);
+       if (adev->sdma.funcs && adev->sdma.funcs->ras_fini)
+               adev->sdma.funcs->ras_fini(adev);
 
        for (i = 0; i < adev->sdma.num_instances; i++) {
                amdgpu_ring_fini(&adev->sdma.instance[i].ring);