aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/1342-drm-amdkfd-Fix-allocated_queues-bitmap-initializatio.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/1342-drm-amdkfd-Fix-allocated_queues-bitmap-initializatio.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/1342-drm-amdkfd-Fix-allocated_queues-bitmap-initializatio.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/1342-drm-amdkfd-Fix-allocated_queues-bitmap-initializatio.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/1342-drm-amdkfd-Fix-allocated_queues-bitmap-initializatio.patch
new file mode 100644
index 00000000..e45c68d8
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/1342-drm-amdkfd-Fix-allocated_queues-bitmap-initializatio.patch
@@ -0,0 +1,49 @@
+From 44afb9b8346777e465efae701ad3af79f553c59c Mon Sep 17 00:00:00 2001
+From: Felix Kuehling <Felix.Kuehling@amd.com>
+Date: Tue, 15 Aug 2017 23:00:02 -0400
+Subject: [PATCH 1342/4131] drm/amdkfd: Fix allocated_queues bitmap
+ initialization
+
+Use shared_resources.queue_bitmap to determine the queues available
+for KFD in each pipe.
+
+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_device_queue_manager.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+index 2796d9d..56fa027 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+@@ -779,7 +779,7 @@ static int init_scheduler(struct device_queue_manager *dqm)
+
+ static int initialize_nocpsch(struct device_queue_manager *dqm)
+ {
+- int i;
++ int pipe, queue;
+
+ pr_debug("num of pipes: %d\n", get_pipes_per_mec(dqm));
+
+@@ -793,8 +793,14 @@ static int initialize_nocpsch(struct device_queue_manager *dqm)
+ dqm->queue_count = dqm->next_pipe_to_allocate = 0;
+ dqm->sdma_queue_count = 0;
+
+- for (i = 0; i < get_pipes_per_mec(dqm); i++)
+- dqm->allocated_queues[i] = (1 << get_queues_per_pipe(dqm)) - 1;
++ for (pipe = 0; pipe < get_pipes_per_mec(dqm); pipe++) {
++ int pipe_offset = pipe * get_queues_per_pipe(dqm);
++
++ for (queue = 0; queue < get_queues_per_pipe(dqm); queue++)
++ if (test_bit(pipe_offset + queue,
++ dqm->dev->shared_resources.queue_bitmap))
++ dqm->allocated_queues[pipe] |= 1 << queue;
++ }
+
+ dqm->vmid_bitmap = (1 << dqm->dev->vm_info.vmid_num_kfd) - 1;
+ dqm->sdma_bitmap = (1 << CIK_SDMA_QUEUES) - 1;
+--
+2.7.4
+