diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3360-drm-amdkfd-Limit-queue-number-per-process-and-device.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3360-drm-amdkfd-Limit-queue-number-per-process-and-device.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3360-drm-amdkfd-Limit-queue-number-per-process-and-device.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3360-drm-amdkfd-Limit-queue-number-per-process-and-device.patch new file mode 100644 index 00000000..2e25f4f9 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3360-drm-amdkfd-Limit-queue-number-per-process-and-device.patch @@ -0,0 +1,48 @@ +From 9962bcf9bfc58621c7928906ff529ff3a22c16ec Mon Sep 17 00:00:00 2001 +From: Felix Kuehling <Felix.Kuehling@amd.com> +Date: Wed, 27 Sep 2017 00:09:55 -0400 +Subject: [PATCH 3360/4131] drm/amdkfd: Limit queue number per process and + device to 127 + +HWS uses bit 7 in the queue number of the map process packet for an +undocumented feature. Therefore the queue number per process and +device must be 127 or less. + +Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> +Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com> +Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com> +--- + drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +index 492d69a..f9d272c 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +@@ -150,6 +150,7 @@ int pqm_create_queue(struct process_queue_manager *pqm, + struct process_queue_node *pqn; + struct kernel_queue *kq; + enum kfd_queue_type type = properties->type; ++ unsigned int max_queues = 127; /* HWS limit */ + + q = NULL; + kq = NULL; +@@ -166,10 +167,11 @@ int pqm_create_queue(struct process_queue_manager *pqm, + * If we are just about to create DIQ, the is_debug flag is not set yet + * Hence we also check the type as well + */ +- if ((pdd->qpd.is_debug) || (type == KFD_QUEUE_TYPE_DIQ)) { +- if (pdd->qpd.queue_count >= dev->device_info->max_no_of_hqd/2) +- return -ENOSPC; +- } ++ if ((pdd->qpd.is_debug) || (type == KFD_QUEUE_TYPE_DIQ)) ++ max_queues = dev->device_info->max_no_of_hqd/2; ++ ++ if (pdd->qpd.queue_count >= max_queues) ++ return -ENOSPC; + + retval = find_available_queue_slot(pqm, qid); + if (retval != 0) +-- +2.7.4 + |