diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1330-drm-amdkfd-Limit-queue-number-per-process-and-device.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1330-drm-amdkfd-Limit-queue-number-per-process-and-device.patch | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1330-drm-amdkfd-Limit-queue-number-per-process-and-device.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1330-drm-amdkfd-Limit-queue-number-per-process-and-device.patch new file mode 100644 index 00000000..44958a45 --- /dev/null +++ b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1330-drm-amdkfd-Limit-queue-number-per-process-and-device.patch @@ -0,0 +1,47 @@ +From 50facc66eb05bd2563116f7de31a4943b38a544d Mon Sep 17 00:00:00 2001 +From: Felix Kuehling <Felix.Kuehling@amd.com> +Date: Mon, 21 Aug 2017 18:08:45 -0400 +Subject: [PATCH 1330/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. + +Change-Id: Id63dbd8cdcc64ffff38e1c24563b479a6e73e006 +Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.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 c96d59a..a87fcab 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +@@ -148,6 +148,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; +@@ -164,10 +165,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 + |