[AMD Official Use Only]

Reviewed by: shaoyun.liu <[email protected]>

-----Original Message-----
From: Skvortsov, Victor <[email protected]> 
Sent: Thursday, December 16, 2021 2:43 PM
To: [email protected]; Deng, Emily <[email protected]>; Liu, Monk 
<[email protected]>; Ming, Davis <[email protected]>; Liu, Shaoyun 
<[email protected]>; Zhou, Peng Ju <[email protected]>; Chen, JingWen 
<[email protected]>; Chen, Horace <[email protected]>; Nieto, David M 
<[email protected]>
Cc: Skvortsov, Victor <[email protected]>
Subject: [PATCH v3 4/5] drm/amdgpu: get xgmi info before ip_init

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 <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 7 +++++++
 drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c     | 6 ------
 drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c      | 6 ------
 3 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 5bd785cfc5ca..4fd370016834 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -3576,6 +3576,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 
*) diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c 
b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
index ae46eb35b3d7..3d5d47a799e3 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
@@ -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;
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c 
b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
index 2b86c63b032a..57f2729a7bd0 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
@@ -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;
--
2.25.1

Reply via email to