diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2016-10-21 15:30:36 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-10-25 14:38:55 -0400 |
commit | a76ed485c57e37d22c7f47eb63120b3618930297 (patch) | |
tree | 97fc4a268b011f8a63da778250d109ca6bb4b138 /drivers | |
parent | 986147018171dc5eecf263d06920e043f7aca27d (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.c | 37 |
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, | |||
443 | static void amdgpu_wb_fini(struct amdgpu_device *adev) | 443 | static 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)); |