aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c27
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;