diff options
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.patch | 49 |
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 + |