Commit a76ed485 authored by Alex Deucher's avatar Alex Deucher

drm/amdgpu: use amdgpu_bo_[create|free]_kernel for wb

Rather than open coding it.
Acked-by: default avatarEdward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 98614701
...@@ -443,13 +443,9 @@ void amdgpu_doorbell_get_kfd_info(struct amdgpu_device *adev, ...@@ -443,13 +443,9 @@ void amdgpu_doorbell_get_kfd_info(struct amdgpu_device *adev,
static void amdgpu_wb_fini(struct amdgpu_device *adev) static void amdgpu_wb_fini(struct amdgpu_device *adev)
{ {
if (adev->wb.wb_obj) { if (adev->wb.wb_obj) {
if (!amdgpu_bo_reserve(adev->wb.wb_obj, false)) { amdgpu_bo_free_kernel(&adev->wb.wb_obj,
amdgpu_bo_kunmap(adev->wb.wb_obj); &adev->wb.gpu_addr,
amdgpu_bo_unpin(adev->wb.wb_obj); (void **)&adev->wb.wb);
amdgpu_bo_unreserve(adev->wb.wb_obj);
}
amdgpu_bo_unref(&adev->wb.wb_obj);
adev->wb.wb = NULL;
adev->wb.wb_obj = NULL; adev->wb.wb_obj = NULL;
} }
} }
...@@ -468,33 +464,14 @@ static int amdgpu_wb_init(struct amdgpu_device *adev) ...@@ -468,33 +464,14 @@ static int amdgpu_wb_init(struct amdgpu_device *adev)
int r; int r;
if (adev->wb.wb_obj == NULL) { if (adev->wb.wb_obj == NULL) {
r = amdgpu_bo_create(adev, AMDGPU_MAX_WB * 4, PAGE_SIZE, true, r = amdgpu_bo_create_kernel(adev, AMDGPU_MAX_WB * 4,
AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, PAGE_SIZE, AMDGPU_GEM_DOMAIN_GTT,
&adev->wb.wb_obj); &adev->wb.wb_obj, &adev->wb.gpu_addr,
(void **)&adev->wb.wb);
if (r) { if (r) {
dev_warn(adev->dev, "(%d) create WB bo failed\n", r); dev_warn(adev->dev, "(%d) create WB bo failed\n", r);
return r; return r;
} }
r = amdgpu_bo_reserve(adev->wb.wb_obj, false);
if (unlikely(r != 0)) {
amdgpu_wb_fini(adev);
return r;
}
r = amdgpu_bo_pin(adev->wb.wb_obj, AMDGPU_GEM_DOMAIN_GTT,
&adev->wb.gpu_addr);
if (r) {
amdgpu_bo_unreserve(adev->wb.wb_obj);
dev_warn(adev->dev, "(%d) pin WB bo failed\n", r);
amdgpu_wb_fini(adev);
return r;
}
r = amdgpu_bo_kmap(adev->wb.wb_obj, (void **)&adev->wb.wb);
amdgpu_bo_unreserve(adev->wb.wb_obj);
if (r) {
dev_warn(adev->dev, "(%d) map WB bo failed\n", r);
amdgpu_wb_fini(adev);
return r;
}
adev->wb.num_wb = AMDGPU_MAX_WB; adev->wb.num_wb = AMDGPU_MAX_WB;
memset(&adev->wb.used, 0, sizeof(adev->wb.used)); memset(&adev->wb.used, 0, sizeof(adev->wb.used));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment