diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0774-drm-amdgpu-fix-frame-size-of-amdgpu_xgmi_add_devices.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/0774-drm-amdgpu-fix-frame-size-of-amdgpu_xgmi_add_devices.patch | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0774-drm-amdgpu-fix-frame-size-of-amdgpu_xgmi_add_devices.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0774-drm-amdgpu-fix-frame-size-of-amdgpu_xgmi_add_devices.patch new file mode 100644 index 00000000..eeb30e1c --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0774-drm-amdgpu-fix-frame-size-of-amdgpu_xgmi_add_devices.patch @@ -0,0 +1,72 @@ +From 8466b33249afa189e5bdb4ed42ae481c7043ef0a Mon Sep 17 00:00:00 2001 +From: Hawking Zhang <Hawking.Zhang@amd.com> +Date: Wed, 7 Nov 2018 12:00:50 +0800 +Subject: [PATCH 0774/2940] drm/amdgpu: fix frame size of + amdgpu_xgmi_add_devices excceed 1024 bytes + +Instead of stack-allocated psp_xgmi_topology_info in function +amdgpu_xgmi_add_device, dynamically allocated this structure to +avoid the frame size of this function excceed 1024 bytes + +Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com> +Reviewed-by: Xiaojie Yuan <xiaojie.yuan@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c +index e92b4548db49..56acdeab3812 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c +@@ -63,7 +63,7 @@ static struct amdgpu_hive_info *amdgpu_get_xgmi_hive(struct amdgpu_device *adev) + + int amdgpu_xgmi_add_device(struct amdgpu_device *adev) + { +- struct psp_xgmi_topology_info tmp_topology; ++ struct psp_xgmi_topology_info *tmp_topology; + struct amdgpu_hive_info *hive; + struct amdgpu_xgmi *entry; + struct amdgpu_device *tmp_adev; +@@ -76,7 +76,9 @@ int amdgpu_xgmi_add_device(struct amdgpu_device *adev) + adev->gmc.xgmi.node_id = psp_xgmi_get_node_id(&adev->psp); + adev->gmc.xgmi.hive_id = psp_xgmi_get_hive_id(&adev->psp); + +- memset(&tmp_topology, 0, sizeof(tmp_topology)); ++ tmp_topology = kzalloc(sizeof(struct psp_xgmi_topology_info), GFP_KERNEL); ++ if (!tmp_topology) ++ return -ENOMEM; + mutex_lock(&xgmi_mutex); + hive = amdgpu_get_xgmi_hive(adev); + if (!hive) +@@ -84,9 +86,9 @@ 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) +- tmp_topology.nodes[count++].node_id = entry->node_id; ++ tmp_topology->nodes[count++].node_id = entry->node_id; + +- ret = psp_xgmi_get_topology_info(&adev->psp, count, &tmp_topology); ++ ret = psp_xgmi_get_topology_info(&adev->psp, count, tmp_topology); + if (ret) { + dev_err(adev->dev, + "XGMI: Get topology failure on device %llx, hive %llx, ret %d", +@@ -96,7 +98,7 @@ int amdgpu_xgmi_add_device(struct amdgpu_device *adev) + } + /* Each psp need to set the latest topology */ + list_for_each_entry(tmp_adev, &hive->device_list, gmc.xgmi.head) { +- ret = psp_xgmi_set_topology_info(&tmp_adev->psp, count, &tmp_topology); ++ ret = psp_xgmi_set_topology_info(&tmp_adev->psp, count, tmp_topology); + if (ret) { + dev_err(tmp_adev->dev, + "XGMI: Set topology failure on device %llx, hive %llx, ret %d", +@@ -113,5 +115,6 @@ int amdgpu_xgmi_add_device(struct amdgpu_device *adev) + + exit: + mutex_unlock(&xgmi_mutex); ++ kfree(tmp_topology); + return ret; + } +-- +2.17.1 + |