diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_queue_mgr.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_queue_mgr.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_queue_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_queue_mgr.c index 4073f072f6c4..9a14c27d99d7 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_queue_mgr.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_queue_mgr.c | |||
@@ -124,10 +124,22 @@ static int amdgpu_lru_map(struct amdgpu_device *adev, | |||
124 | int user_ring, | 124 | int user_ring, |
125 | struct amdgpu_ring **out_ring) | 125 | struct amdgpu_ring **out_ring) |
126 | { | 126 | { |
127 | int r; | 127 | int r, i, j; |
128 | int ring_type = amdgpu_hw_ip_to_ring_type(mapper->hw_ip); | 128 | int ring_type = amdgpu_hw_ip_to_ring_type(mapper->hw_ip); |
129 | int ring_blacklist[AMDGPU_MAX_RINGS]; | ||
130 | struct amdgpu_ring *ring; | ||
129 | 131 | ||
130 | r = amdgpu_ring_lru_get(adev, ring_type, out_ring); | 132 | /* 0 is a valid ring index, so initialize to -1 */ |
133 | memset(ring_blacklist, 0xff, sizeof(ring_blacklist)); | ||
134 | |||
135 | for (i = 0, j = 0; i < AMDGPU_MAX_RINGS; i++) { | ||
136 | ring = mapper->queue_map[i]; | ||
137 | if (ring) | ||
138 | ring_blacklist[j++] = ring->idx; | ||
139 | } | ||
140 | |||
141 | r = amdgpu_ring_lru_get(adev, ring_type, ring_blacklist, | ||
142 | j, out_ring); | ||
131 | if (r) | 143 | if (r) |
132 | return r; | 144 | return r; |
133 | 145 | ||