[AMD Official Use Only]

Reviewed by: shaoyun.liu <shaoyun....@amd.com>

-----Original Message-----
From: Skvortsov, Victor <victor.skvort...@amd.com> 
Sent: Thursday, December 16, 2021 2:43 PM
To: amd-gfx@lists.freedesktop.org; Deng, Emily <emily.d...@amd.com>; Liu, Monk 
<monk....@amd.com>; Ming, Davis <davis.m...@amd.com>; Liu, Shaoyun 
<shaoyun....@amd.com>; Zhou, Peng Ju <pengju.z...@amd.com>; Chen, JingWen 
<jingwen.ch...@amd.com>; Chen, Horace <horace.c...@amd.com>; Nieto, David M 
<david.ni...@amd.com>
Cc: Skvortsov, Victor <victor.skvort...@amd.com>
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 <victor.skvort...@amd.com>
---
 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