From: Yang Wang Date: Tue, 7 May 2024 02:28:04 +0000 (+0800) Subject: drm/amdgpu: fix RAS unload driver issue in SRIOV X-Git-Tag: v6.11-rc1~141^2~25^2~307 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=329cec8f18fc8bed7570b68b18936724af2f5593;p=thirdparty%2Fkernel%2Flinux.git 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 Reviewed-by: Hawking Zhang Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c index 7b30f448eab63..2c5ad9530299c 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) {