diff options
| author | Nirmoy Das <nirmoy.das@amd.com> | 2020-11-09 17:04:51 +0100 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2020-11-13 00:13:59 -0500 | 
| commit | 3f66bf401e9fde1c35bb8b02dd7975659c40411d (patch) | |
| tree | 2e871786e9e2353dbf99d47d9108151fd13577c8 /drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | |
| parent | 3617e579eba427ed1f6b86050fe678623184db74 (diff) | |
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: 33abcb1f5a1719b1c (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>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c index e584f48f3b54..97a8f786cf85 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c @@ -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);  } | 
