aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2016-10-21 15:30:36 -0400
committerAlex Deucher <alexander.deucher@amd.com>2016-10-25 14:38:55 -0400
commita76ed485c57e37d22c7f47eb63120b3618930297 (patch)
tree97fc4a268b011f8a63da778250d109ca6bb4b138 /drivers
parent986147018171dc5eecf263d06920e043f7aca27d (diff)
drm/amdgpu: use amdgpu_bo_[create|free]_kernel for wb
Rather than open coding it. Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_device.c37
1 files changed, 7 insertions, 30 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index b0c7cb797300..3b9b58debabd 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -443,13 +443,9 @@ void amdgpu_doorbell_get_kfd_info(struct amdgpu_device *adev,
443static void amdgpu_wb_fini(struct amdgpu_device *adev) 443static void amdgpu_wb_fini(struct amdgpu_device *adev)
444{ 444{
445 if (adev->wb.wb_obj) { 445 if (adev->wb.wb_obj) {
446 if (!amdgpu_bo_reserve(adev->wb.wb_obj, false)) { 446 amdgpu_bo_free_kernel(&adev->wb.wb_obj,
447 amdgpu_bo_kunmap(adev->wb.wb_obj); 447 &adev->wb.gpu_addr,
448 amdgpu_bo_unpin(adev->wb.wb_obj); 448 (void **)&adev->wb.wb);
449 amdgpu_bo_unreserve(adev->wb.wb_obj);
450 }
451 amdgpu_bo_unref(&adev->wb.wb_obj);
452 adev->wb.wb = NULL;
453 adev->wb.wb_obj = NULL; 449 adev->wb.wb_obj = NULL;
454 } 450 }
455} 451}
@@ -468,33 +464,14 @@ static int amdgpu_wb_init(struct amdgpu_device *adev)
468 int r; 464 int r;
469 465
470 if (adev->wb.wb_obj == NULL) { 466 if (adev->wb.wb_obj == NULL) {
471 r = amdgpu_bo_create(adev, AMDGPU_MAX_WB * 4, PAGE_SIZE, true, 467 r = amdgpu_bo_create_kernel(adev, AMDGPU_MAX_WB * 4,
472 AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, 468 PAGE_SIZE, AMDGPU_GEM_DOMAIN_GTT,
473 &adev->wb.wb_obj); 469 &adev->wb.wb_obj, &adev->wb.gpu_addr,
470 (void **)&adev->wb.wb);
474 if (r) { 471 if (r) {
475 dev_warn(adev->dev, "(%d) create WB bo failed\n", r); 472 dev_warn(adev->dev, "(%d) create WB bo failed\n", r);
476 return r; 473 return r;
477 } 474 }
478 r = amdgpu_bo_reserve(adev->wb.wb_obj, false);
479 if (unlikely(r != 0)) {
480 amdgpu_wb_fini(adev);
481 return r;
482 }
483 r = amdgpu_bo_pin(adev->wb.wb_obj, AMDGPU_GEM_DOMAIN_GTT,
484 &adev->wb.gpu_addr);
485 if (r) {
486 amdgpu_bo_unreserve(adev->wb.wb_obj);
487 dev_warn(adev->dev, "(%d) pin WB bo failed\n", r);
488 amdgpu_wb_fini(adev);
489 return r;
490 }
491 r = amdgpu_bo_kmap(adev->wb.wb_obj, (void **)&adev->wb.wb);
492 amdgpu_bo_unreserve(adev->wb.wb_obj);
493 if (r) {
494 dev_warn(adev->dev, "(%d) map WB bo failed\n", r);
495 amdgpu_wb_fini(adev);
496 return r;
497 }
498 475
499 adev->wb.num_wb = AMDGPU_MAX_WB; 476 adev->wb.num_wb = AMDGPU_MAX_WB;
500 memset(&adev->wb.used, 0, sizeof(adev->wb.used)); 477 memset(&adev->wb.used, 0, sizeof(adev->wb.used));