diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2955-drm-amdgpu-skip-get-update-xgmi-topology-info-when-n.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2955-drm-amdgpu-skip-get-update-xgmi-topology-info-when-n.patch | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2955-drm-amdgpu-skip-get-update-xgmi-topology-info-when-n.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2955-drm-amdgpu-skip-get-update-xgmi-topology-info-when-n.patch new file mode 100644 index 00000000..216c3552 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2955-drm-amdgpu-skip-get-update-xgmi-topology-info-when-n.patch @@ -0,0 +1,83 @@ +From 488e98e88d53c8861a5e33b5824a93a8f97d2c19 Mon Sep 17 00:00:00 2001 +From: Le Ma <le.ma@amd.com> +Date: Tue, 4 Jun 2019 14:58:49 +0800 +Subject: [PATCH 2955/4256] drm/amdgpu: skip get/update xgmi topology info when + no psp exists + +Signed-off-by: Le Ma <le.ma@amd.com> +Reviewed-by: Feifei Xu <Feifei.Xu@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 48 +++++++++++++----------- + 1 file changed, 26 insertions(+), 22 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c +index 1725c1ec1536..64940759d8c0 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c +@@ -296,7 +296,7 @@ int amdgpu_xgmi_add_device(struct amdgpu_device *adev) + struct amdgpu_xgmi *entry; + struct amdgpu_device *tmp_adev = NULL; + +- int count = 0, ret = -EINVAL; ++ int count = 0, ret = 0; + + if (!adev->gmc.xgmi.supported) + return 0; +@@ -337,28 +337,32 @@ int amdgpu_xgmi_add_device(struct amdgpu_device *adev) + top_info->num_nodes = count; + hive->number_devices = count; + +- list_for_each_entry(tmp_adev, &hive->device_list, gmc.xgmi.head) { +- /* 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; ++ if (amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_PSP)) { ++ list_for_each_entry(tmp_adev, &hive->device_list, gmc.xgmi.head) { ++ /* 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; + } +- 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, 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 */ +- 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 */ ++ goto exit; ++ } ++ + } + } + +-- +2.17.1 + |