|
@@ -40,32 +40,15 @@ static int amdgpu_ih_ring_alloc(struct amdgpu_device *adev)
|
|
|
|
|
|
/* Allocate ring buffer */
|
|
|
if (adev->irq.ih.ring_obj == NULL) {
|
|
|
- r = amdgpu_bo_create(adev, adev->irq.ih.ring_size,
|
|
|
- PAGE_SIZE, true,
|
|
|
- AMDGPU_GEM_DOMAIN_GTT, 0,
|
|
|
- NULL, NULL, &adev->irq.ih.ring_obj);
|
|
|
+ r = amdgpu_bo_create_kernel(adev, adev->irq.ih.ring_size,
|
|
|
+ PAGE_SIZE, AMDGPU_GEM_DOMAIN_GTT,
|
|
|
+ &adev->irq.ih.ring_obj,
|
|
|
+ &adev->irq.ih.gpu_addr,
|
|
|
+ (void **)&adev->irq.ih.ring);
|
|
|
if (r) {
|
|
|
DRM_ERROR("amdgpu: failed to create ih ring buffer (%d).\n", r);
|
|
|
return r;
|
|
|
}
|
|
|
- r = amdgpu_bo_reserve(adev->irq.ih.ring_obj, false);
|
|
|
- if (unlikely(r != 0))
|
|
|
- return r;
|
|
|
- r = amdgpu_bo_pin(adev->irq.ih.ring_obj,
|
|
|
- AMDGPU_GEM_DOMAIN_GTT,
|
|
|
- &adev->irq.ih.gpu_addr);
|
|
|
- if (r) {
|
|
|
- amdgpu_bo_unreserve(adev->irq.ih.ring_obj);
|
|
|
- DRM_ERROR("amdgpu: failed to pin ih ring buffer (%d).\n", r);
|
|
|
- return r;
|
|
|
- }
|
|
|
- r = amdgpu_bo_kmap(adev->irq.ih.ring_obj,
|
|
|
- (void **)&adev->irq.ih.ring);
|
|
|
- amdgpu_bo_unreserve(adev->irq.ih.ring_obj);
|
|
|
- if (r) {
|
|
|
- DRM_ERROR("amdgpu: failed to map ih ring buffer (%d).\n", r);
|
|
|
- return r;
|
|
|
- }
|
|
|
}
|
|
|
return 0;
|
|
|
}
|