aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1862-drm-amdgpu-Update-latest-xgmi-topology-info-after-ea.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1862-drm-amdgpu-Update-latest-xgmi-topology-info-after-ea.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1862-drm-amdgpu-Update-latest-xgmi-topology-info-after-ea.patch84
1 files changed, 84 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1862-drm-amdgpu-Update-latest-xgmi-topology-info-after-ea.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1862-drm-amdgpu-Update-latest-xgmi-topology-info-after-ea.patch
new file mode 100644
index 00000000..e0f17304
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1862-drm-amdgpu-Update-latest-xgmi-topology-info-after-ea.patch
@@ -0,0 +1,84 @@
+From 603045b5d4c9e29fc275aa5fdfa287fbfeb2d223 Mon Sep 17 00:00:00 2001
+From: shaoyunl <shaoyun.liu@amd.com>
+Date: Mon, 29 Apr 2019 15:15:41 -0400
+Subject: [PATCH 1862/2940] drm/amdgpu: Update latest xgmi topology info after
+ each device is enumulated
+
+Adjust the sequence of set/get xgmi topology, so driver can have the latest
+XGMI topology info for future usage
+
+Change-Id: I627814f82459a6c9c3d72469f81309488b2a9133
+Signed-off-by: shaoyunl <shaoyun.liu@amd.com>
+Acked-by: Evan Quan <evan.quan@amd.com>
+Signed-off-by: Chaudhary Amit Kumar <Chaudharyamit.Kumar@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 31 +++++++++++++++---------
+ 1 file changed, 19 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
+index a48c84c51775..05d4246a5a73 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
+@@ -288,30 +288,40 @@ int amdgpu_xgmi_add_device(struct amdgpu_device *adev)
+ list_add_tail(&adev->gmc.xgmi.head, &hive->device_list);
+ list_for_each_entry(entry, &hive->device_list, head)
+ hive_topology->nodes[count++].node_id = entry->node_id;
++ top_info->num_nodes = count;
+ hive->number_devices = count;
+
+- /* Each psp need to get the latest topology */
+ list_for_each_entry(tmp_adev, &hive->device_list, gmc.xgmi.head) {
+- ret = psp_xgmi_get_topology_info(&tmp_adev->psp, count, hive_topology);
++ /* update node list for other device in the hive */
++ if (tmp_adev != adev) {
++ top_info = &tmp_adev->psp.xgmi_context.top_info;
++ top_info->nodes[count - 1].node_id = adev->gmc.xgmi.node_id;
++ top_info->num_nodes = count;
++ }
++ ret = amdgpu_xgmi_update_topology(hive, tmp_adev);
++ if (ret)
++ goto exit;
++ }
++
++ /* get latest topology info for each device from psp */
++ list_for_each_entry(tmp_adev, &hive->device_list, gmc.xgmi.head) {
++ ret = psp_xgmi_get_topology_info(&tmp_adev->psp, count,
++ &tmp_adev->psp.xgmi_context.top_info);
+ if (ret) {
+ dev_err(tmp_adev->dev,
+ "XGMI: Get topology failure on device %llx, hive %llx, ret %d",
+ tmp_adev->gmc.xgmi.node_id,
+ tmp_adev->gmc.xgmi.hive_id, ret);
+ /* To do : continue with some node failed or disable the whole hive */
+- break;
++ goto exit;
+ }
+ }
+
+- list_for_each_entry(tmp_adev, &hive->device_list, gmc.xgmi.head) {
+- ret = amdgpu_xgmi_update_topology(hive, tmp_adev);
+- if (ret)
+- break;
+- }
+-
+ if (!ret)
+ ret = amdgpu_xgmi_sysfs_add_dev_info(adev, hive);
+
++ mutex_unlock(&hive->hive_lock);
++exit:
+ if (!ret)
+ dev_info(adev->dev, "XGMI: Add node %d, hive 0x%llx.\n",
+ adev->gmc.xgmi.physical_node_id, adev->gmc.xgmi.hive_id);
+@@ -320,9 +330,6 @@ int amdgpu_xgmi_add_device(struct amdgpu_device *adev)
+ adev->gmc.xgmi.physical_node_id, adev->gmc.xgmi.hive_id,
+ ret);
+
+-
+- mutex_unlock(&hive->hive_lock);
+-exit:
+ return ret;
+ }
+
+--
+2.17.1
+