diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/2735-drm-amdkfd-Don-t-assign-dGPUs-to-APU-topology-device.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/2735-drm-amdkfd-Don-t-assign-dGPUs-to-APU-topology-device.patch | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/2735-drm-amdkfd-Don-t-assign-dGPUs-to-APU-topology-device.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/2735-drm-amdkfd-Don-t-assign-dGPUs-to-APU-topology-device.patch new file mode 100644 index 00000000..bdc0bd64 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/2735-drm-amdkfd-Don-t-assign-dGPUs-to-APU-topology-device.patch @@ -0,0 +1,56 @@ +From 17f87ce7c63e70314fdb59a37d809564c78f76e3 Mon Sep 17 00:00:00 2001 +From: Felix Kuehling <Felix.Kuehling@amd.com> +Date: Wed, 2 Jan 2019 17:47:39 -0500 +Subject: [PATCH 2735/2940] drm/amdkfd: Don't assign dGPUs to APU topology + devices + +dGPUs need their own topology devices. Don't assign them to APU topology +devices with CPU cores. + +Bug: https://github.com/RadeonOpenCompute/ROCK-Kernel-Driver/issues/66 +Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> +Tested-by: Elias Konstantinidis <ekondis@gmail.com> +Acked-by: Alex Deucher <alexander.deucher@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c +index 4734f1a35516..09da91644f9f 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c +@@ -1093,8 +1093,6 @@ static uint32_t kfd_generate_gpu_id(struct kfd_dev *gpu) + * the GPU device is not already present in the topology device + * list then return NULL. This means a new topology device has to + * be created for this GPU. +- * TODO: Rather than assiging @gpu to first topology device withtout +- * gpu attached, it will better to have more stringent check. + */ + static struct kfd_topology_device *kfd_assign_gpu(struct kfd_dev *gpu) + { +@@ -1102,12 +1100,20 @@ static struct kfd_topology_device *kfd_assign_gpu(struct kfd_dev *gpu) + struct kfd_topology_device *out_dev = NULL; + + down_write(&topology_lock); +- list_for_each_entry(dev, &topology_device_list, list) ++ list_for_each_entry(dev, &topology_device_list, list) { ++ /* Discrete GPUs need their own topology device list ++ * entries. Don't assign them to CPU/APU nodes. ++ */ ++ if (!gpu->device_info->needs_iommu_device && ++ dev->node_props.cpu_cores_count) ++ continue; ++ + if (!dev->gpu && (dev->node_props.simd_count > 0)) { + dev->gpu = gpu; + out_dev = dev; + break; + } ++ } + up_write(&topology_lock); + return out_dev; + } +-- +2.17.1 + |