aboutsummaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
diff options
context:
space:
mode:
authorYang Wang <kevinyang.wang@amd.com>2024-05-07 10:28:04 +0800
committerAlex Deucher <alexander.deucher@amd.com>2024-05-08 15:17:05 -0400
commit329cec8f18fc8bed7570b68b18936724af2f5593 (patch)
treef97ba4e051aea1d57851f40678357e999890119a /drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
parent85a24a3ea09e93c05ff59609fde6c3d825a014c2 (diff)
drm/amdgpu: fix RAS unload driver issue in SRIOV
Fix null pointer issue when unload driver in SRIOV mode. Adjust the function position to ensure that the amdgpu_mca/aca_xxx_init() related functions can be initialized properly. Signed-off-by: Yang Wang <kevinyang.wang@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_ras.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
index 7b30f448eab6..2c5ad9530299 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
@@ -3605,10 +3605,6 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev)
struct amdgpu_ras_block_object *obj;
int r;
- /* Guest side doesn't need init ras feature */
- if (amdgpu_sriov_vf(adev))
- return 0;
-
amdgpu_ras_event_mgr_init(adev);
if (amdgpu_aca_is_enabled(adev)) {
@@ -3619,7 +3615,8 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev)
if (r)
return r;
- amdgpu_ras_set_aca_debug_mode(adev, false);
+ if (!amdgpu_sriov_vf(adev))
+ amdgpu_ras_set_aca_debug_mode(adev, false);
} else {
if (amdgpu_in_reset(adev))
r = amdgpu_mca_reset(adev);
@@ -3628,9 +3625,14 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev)
if (r)
return r;
- amdgpu_ras_set_mca_debug_mode(adev, false);
+ if (!amdgpu_sriov_vf(adev))
+ amdgpu_ras_set_mca_debug_mode(adev, false);
}
+ /* Guest side doesn't need init ras feature */
+ if (amdgpu_sriov_vf(adev))
+ return 0;
+
list_for_each_entry_safe(node, tmp, &adev->ras_list, node) {
obj = node->ras_obj;
if (!obj) {