Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Felix Kuehling and committed by
Oded Gabbay
86194cf8 c76cf869

+9 -3
+9 -3
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
··· 513 513 514 514 static int initialize_nocpsch(struct device_queue_manager *dqm) 515 515 { 516 - int i; 516 + int pipe, queue; 517 517 518 518 BUG_ON(!dqm); 519 519 ··· 531 531 return -ENOMEM; 532 532 } 533 533 534 - for (i = 0; i < get_pipes_per_mec(dqm); i++) 535 - dqm->allocated_queues[i] = (1 << get_queues_per_pipe(dqm)) - 1; 534 + for (pipe = 0; pipe < get_pipes_per_mec(dqm); pipe++) { 535 + int pipe_offset = pipe * get_queues_per_pipe(dqm); 536 + 537 + for (queue = 0; queue < get_queues_per_pipe(dqm); queue++) 538 + if (test_bit(pipe_offset + queue, 539 + dqm->dev->shared_resources.queue_bitmap)) 540 + dqm->allocated_queues[pipe] |= 1 << queue; 541 + } 536 542 537 543 dqm->vmid_bitmap = (1 << VMID_PER_DEVICE) - 1; 538 544 dqm->sdma_bitmap = (1 << CIK_SDMA_QUEUES) - 1;