mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
9861470181
commit
a76ed485c5
|
@ -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)
|
||||||
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));
|
||||||
|
|
Loading…
Reference in New Issue