drm/amdgpu: get xgmi info before ip_init
authorVictor Skvortsov <victor.skvortsov@amd.com>
Wed, 15 Dec 2021 18:42:44 +0000 (18:42 +0000)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 28 Dec 2021 21:02:17 +0000 (16:02 -0500)
Driver needs to call get_xgmi_info() before ip_init
to determine whether it needs to handle a pending hive reset.

Signed-off-by: Victor Skvortsov <victor.skvortsov@amd.com>
Reviewed-by: David Nieto <david.nieto@amd.com>
Reviewed by: shaoyun.liu <Shaoyun.lui@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c

index 0cd2404ca63cb380c4599cc0497b9c0c3f8005dd..ce820ee2e2e6f9cac7a2fe04f41e180dc7fcc7c5 100644 (file)
@@ -3577,6 +3577,13 @@ int amdgpu_device_init(struct amdgpu_device *adev,
        if (r)
                return r;
 
+       /* Need to get xgmi info early to decide the reset behavior*/
+       if (adev->gmc.xgmi.supported) {
+               r = adev->gfxhub.funcs->get_xgmi_info(adev);
+               if (r)
+                       return r;
+       }
+
        /* enable PCIE atomic ops */
        if (amdgpu_sriov_vf(adev))
                adev->have_atomics_support = ((struct amd_sriov_msg_pf2vf_info *)
index ae46eb35b3d7c04e3c0c747da085d4ee259bcf09..3d5d47a799e3bfcfead1fbce50cd2c5cee667574 100644 (file)
@@ -914,12 +914,6 @@ static int gmc_v10_0_sw_init(void *handle)
                return r;
        }
 
-       if (adev->gmc.xgmi.supported) {
-               r = adev->gfxhub.funcs->get_xgmi_info(adev);
-               if (r)
-                       return r;
-       }
-
        r = gmc_v10_0_mc_init(adev);
        if (r)
                return r;
index 2b86c63b032ab5a9d46c55f66df36ba6b0c77400..57f2729a7bd00079bd13c4cafd7fe5f8bc539204 100644 (file)
@@ -1628,12 +1628,6 @@ static int gmc_v9_0_sw_init(void *handle)
        }
        adev->need_swiotlb = drm_need_swiotlb(44);
 
-       if (adev->gmc.xgmi.supported) {
-               r = adev->gfxhub.funcs->get_xgmi_info(adev);
-               if (r)
-                       return r;
-       }
-
        r = gmc_v9_0_mc_init(adev);
        if (r)
                return r;