From: Rajneesh Bhardwaj <[email protected]>

GFXIP 9.4.3 could be in APU or carveout mode but we cannot use the
xgmi.connected_to_cpu flag to identify the iolinks type. Use appropriate
APU or Carveout mode based condition to report xgmi connection in kfd
topology.

Reviewed-by: Felix Kuehling <[email protected]>
Signed-off-by: Rajneesh Bhardwaj <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdkfd/kfd_crat.c     | 5 ++++-
 drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 5 ++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
index dc93a67257e1..16475921587b 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
@@ -2005,7 +2005,10 @@ static int kfd_fill_gpu_direct_io_link_to_cpu(int 
*avail_size,
        /* Fill in IOLINK subtype.
         * TODO: Fill-in other fields of iolink subtype
         */
-       if (kdev->adev->gmc.xgmi.connected_to_cpu) {
+       if (kdev->adev->gmc.xgmi.connected_to_cpu ||
+           (KFD_GC_VERSION(kdev) == IP_VERSION(9, 4, 3) &&
+            kdev->adev->smuio.funcs->get_pkg_type(kdev->adev) ==
+            AMDGPU_PKG_TYPE_APU)) {
                bool ext_cpu = KFD_GC_VERSION(kdev) != IP_VERSION(9, 4, 3);
                int mem_bw = 819200, weight = ext_cpu ? KFD_CRAT_XGMI_WEIGHT :
                                                        
KFD_CRAT_INTRA_SOCKET_WEIGHT;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
index d3e70341dfad..5373a79ac6a1 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
@@ -1327,9 +1327,8 @@ static void kfd_fill_iolink_non_crat_info(struct 
kfd_topology_device *dev)
                        continue;
 
                /* Include the CPU peer in GPU hive if connected over xGMI. */
-               if (!peer_dev->gpu && !peer_dev->node_props.hive_id &&
-                               dev->node_props.hive_id &&
-                               dev->gpu->adev->gmc.xgmi.connected_to_cpu)
+               if (!peer_dev->gpu &&
+                   link->iolink_type == CRAT_IOLINK_TYPE_XGMI)
                        peer_dev->node_props.hive_id = dev->node_props.hive_id;
 
                list_for_each_entry(inbound_link, &peer_dev->io_link_props,
-- 
2.39.2

Reply via email to