[PATCH] drm/amdkfd: surface xgmi physical node id in the kfd topology

Jonathan Kim jonathan.kim at amd.com
Mon Jun 6 15:30:50 UTC 2022


Add the xgmi node's physical node id to the kfd topology node properties.

The physical node id is a 0-indexed, monotonically increasing id that is
statically assigned based on the node's frame buffer position within the
hive.

This is useful because the id is also used by the DF for xGMI peer to peer
routing purposes, giving more transparency to xGMI IO linkage.

Signed-off-by: Jonathan Kim <jonathan.kim at amd.com>
---
 drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 4 ++++
 drivers/gpu/drm/amd/amdkfd/kfd_topology.h | 1 +
 2 files changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
index 8d50d207cf66..615a4f586edb 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
@@ -503,6 +503,8 @@ static ssize_t node_show(struct kobject *kobj, struct attribute *attr,
 			      dev->node_props.drm_render_minor);
 	sysfs_show_64bit_prop(buffer, offs, "hive_id",
 			      dev->node_props.hive_id);
+	sysfs_show_32bit_prop(buffer, offs, "hive_node_phy_id",
+			      dev->node_props.hive_node_phy_id);
 	sysfs_show_32bit_prop(buffer, offs, "num_sdma_engines",
 			      dev->node_props.num_sdma_engines);
 	sysfs_show_32bit_prop(buffer, offs, "num_sdma_xgmi_engines",
@@ -1398,6 +1400,8 @@ int kfd_topology_add_device(struct kfd_dev *gpu)
 		gpu->shared_resources.drm_render_minor;
 
 	dev->node_props.hive_id = gpu->hive_id;
+	dev->node_props.hive_node_phy_id = gpu->hive_id ?
+				gpu->adev->gmc.xgmi.physical_node_id : 0;
 	dev->node_props.num_sdma_engines = kfd_get_num_sdma_engines(gpu);
 	dev->node_props.num_sdma_xgmi_engines =
 					kfd_get_num_xgmi_sdma_engines(gpu);
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.h b/drivers/gpu/drm/amd/amdkfd/kfd_topology.h
index c838863f1fe8..a49267928b55 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.h
@@ -33,6 +33,7 @@
 
 struct kfd_node_properties {
 	uint64_t hive_id;
+	uint32_t hive_node_phy_id;
 	uint32_t cpu_cores_count;
 	uint32_t simd_count;
 	uint32_t mem_banks_count;
-- 
2.25.1



More information about the amd-gfx mailing list