diff options
author | Tao Zhou <tao.zhou1@amd.com> | 2024-10-18 11:43:44 +0300 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2024-12-10 18:26:46 +0300 |
commit | f44a30583bcf2b9c3846264515d618d349e67485 (patch) | |
tree | 629e046a93b1105025e892cb752170b08562291f /drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c | |
parent | 76723fbc5f8632570c6079a2f497c2f2132bce98 (diff) | |
download | linux-f44a30583bcf2b9c3846264515d618d349e67485.tar.xz |
drm/amdgpu: add return value for convert_ras_err_addr
So upper layer can return failure directly if address conversion fails.
Signed-off-by: Tao Zhou <tao.zhou1@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c index 5dd011a73ace..64e1a3406c99 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c @@ -461,11 +461,14 @@ int amdgpu_umc_lookup_bad_pages_in_a_row(struct amdgpu_device *adev, addr_out.pa.pa = pa_addr; - if (adev->umc.ras && adev->umc.ras->convert_ras_err_addr) - adev->umc.ras->convert_ras_err_addr(adev, &err_data, NULL, + if (adev->umc.ras && adev->umc.ras->convert_ras_err_addr) { + ret = adev->umc.ras->convert_ras_err_addr(adev, &err_data, NULL, &addr_out, false); - else + if (ret) + goto out; + } else { goto out; + } for (i = 0; i < adev->umc.retire_unit; i++) { if (pos >= len) @@ -488,6 +491,7 @@ int amdgpu_umc_mca_to_addr(struct amdgpu_device *adev, { struct ta_ras_query_address_input addr_in; struct ta_ras_query_address_output addr_out; + int ret; memset(&addr_in, 0, sizeof(addr_in)); addr_in.ma.err_addr = err_addr; @@ -496,11 +500,14 @@ int amdgpu_umc_mca_to_addr(struct amdgpu_device *adev, addr_in.ma.node_inst = node; addr_in.ma.socket_id = socket; - if (adev->umc.ras && adev->umc.ras->convert_ras_err_addr) - adev->umc.ras->convert_ras_err_addr(adev, NULL, &addr_in, + if (adev->umc.ras && adev->umc.ras->convert_ras_err_addr) { + ret = adev->umc.ras->convert_ras_err_addr(adev, NULL, &addr_in, &addr_out, dump_addr); - else + if (ret) + return ret; + } else { return 0; + } *addr = addr_out.pa.pa; |