diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 27 |
1 files changed, 5 insertions, 22 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c index 85aeb0a804bb..242ba04bfde6 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | |||
@@ -222,33 +222,16 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring, | |||
222 | 222 | ||
223 | /* Allocate ring buffer */ | 223 | /* Allocate ring buffer */ |
224 | if (ring->ring_obj == NULL) { | 224 | if (ring->ring_obj == NULL) { |
225 | r = amdgpu_bo_create(adev, ring->ring_size, PAGE_SIZE, true, | 225 | r = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE, |
226 | AMDGPU_GEM_DOMAIN_GTT, 0, | 226 | AMDGPU_GEM_DOMAIN_GTT, |
227 | NULL, NULL, &ring->ring_obj); | 227 | &ring->ring_obj, |
228 | &ring->gpu_addr, | ||
229 | (void **)&ring->ring); | ||
228 | if (r) { | 230 | if (r) { |
229 | dev_err(adev->dev, "(%d) ring create failed\n", r); | 231 | dev_err(adev->dev, "(%d) ring create failed\n", r); |
230 | return r; | 232 | return r; |
231 | } | 233 | } |
232 | r = amdgpu_bo_reserve(ring->ring_obj, false); | ||
233 | if (unlikely(r != 0)) | ||
234 | return r; | ||
235 | r = amdgpu_bo_pin(ring->ring_obj, AMDGPU_GEM_DOMAIN_GTT, | ||
236 | &ring->gpu_addr); | ||
237 | if (r) { | ||
238 | amdgpu_bo_unreserve(ring->ring_obj); | ||
239 | dev_err(adev->dev, "(%d) ring pin failed\n", r); | ||
240 | return r; | ||
241 | } | ||
242 | r = amdgpu_bo_kmap(ring->ring_obj, | ||
243 | (void **)&ring->ring); | ||
244 | |||
245 | memset((void *)ring->ring, 0, ring->ring_size); | 234 | memset((void *)ring->ring, 0, ring->ring_size); |
246 | |||
247 | amdgpu_bo_unreserve(ring->ring_obj); | ||
248 | if (r) { | ||
249 | dev_err(adev->dev, "(%d) ring map failed\n", r); | ||
250 | return r; | ||
251 | } | ||
252 | } | 235 | } |
253 | ring->ptr_mask = (ring->ring_size / 4) - 1; | 236 | ring->ptr_mask = (ring->ring_size / 4) - 1; |
254 | ring->max_dw = max_dw; | 237 | ring->max_dw = max_dw; |