drm/amdgpu: fix compute queue priority if num_kcq is less than 4

Compute queues are configurable with module param, num_kcq.
amdgpu_gfx_is_high_priority_compute_queue was setting 1st 4 queues to
high priority queue leaving a null drm scheduler in
adev->gpu_sched[hw_ip]["normal_prio"].sched if num_kcq < 5.

This patch tries to fix it by alternating compute queue priority between
normal and high priority.

Fixes: 33abcb1f5a (drm/amdgpu: set compute queue priority at mqd_init)
Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Nirmoy Das
2020-11-09 17:04:51 +01:00
committed by Alex Deucher
parent 3617e579eb
commit 3f66bf401e
5 changed files with 21 additions and 10 deletions

View File

@@ -193,10 +193,14 @@ static bool amdgpu_gfx_is_multipipe_capable(struct amdgpu_device *adev)
}
bool amdgpu_gfx_is_high_priority_compute_queue(struct amdgpu_device *adev,
int queue)
int pipe, int queue)
{
/* Policy: make queue 0 of each pipe as high priority compute queue */
return (queue == 0);
bool multipipe_policy = amdgpu_gfx_is_multipipe_capable(adev);
int cond;
/* Policy: alternate between normal and high priority */
cond = multipipe_policy ? pipe : queue;
return ((cond % 2) != 0);
}