diff options
author | Felix Kuehling <Felix.Kuehling@amd.com> | 2017-08-15 23:00:02 -0400 |
---|---|---|
committer | Oded Gabbay <oded.gabbay@gmail.com> | 2017-08-15 23:00:02 -0400 |
commit | 86194cf8cfdb2709d98babafd301c1559b853aec (patch) | |
tree | 3039502fbe7478e0c8809232e03b2f0f58290600 /drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | |
parent | c76cf869669eff8fa73bc0f56c87cd4d6d2e66df (diff) | |
download | talos-obmc-linux-86194cf8cfdb2709d98babafd301c1559b853aec.tar.gz talos-obmc-linux-86194cf8cfdb2709d98babafd301c1559b853aec.zip |
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>
Diffstat (limited to 'drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 12 |
1 files 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 42de22bbe14c..9d2796b89d54 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c @@ -513,7 +513,7 @@ static int init_scheduler(struct device_queue_manager *dqm) static int initialize_nocpsch(struct device_queue_manager *dqm) { - int i; + int pipe, queue; BUG_ON(!dqm); @@ -531,8 +531,14 @@ static int initialize_nocpsch(struct device_queue_manager *dqm) return -ENOMEM; } - 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 << VMID_PER_DEVICE) - 1; dqm->sdma_bitmap = (1 << CIK_SDMA_QUEUES) - 1; |