Lines Matching refs:wb
426 if (adev->wb.wb_obj) { in amdgpu_wb_fini()
427 if (!amdgpu_bo_reserve(adev->wb.wb_obj, false)) { in amdgpu_wb_fini()
428 amdgpu_bo_kunmap(adev->wb.wb_obj); in amdgpu_wb_fini()
429 amdgpu_bo_unpin(adev->wb.wb_obj); in amdgpu_wb_fini()
430 amdgpu_bo_unreserve(adev->wb.wb_obj); in amdgpu_wb_fini()
432 amdgpu_bo_unref(&adev->wb.wb_obj); in amdgpu_wb_fini()
433 adev->wb.wb = NULL; in amdgpu_wb_fini()
434 adev->wb.wb_obj = NULL; in amdgpu_wb_fini()
451 if (adev->wb.wb_obj == NULL) { in amdgpu_wb_init()
454 &adev->wb.wb_obj); in amdgpu_wb_init()
459 r = amdgpu_bo_reserve(adev->wb.wb_obj, false); in amdgpu_wb_init()
464 r = amdgpu_bo_pin(adev->wb.wb_obj, AMDGPU_GEM_DOMAIN_GTT, in amdgpu_wb_init()
465 &adev->wb.gpu_addr); in amdgpu_wb_init()
467 amdgpu_bo_unreserve(adev->wb.wb_obj); in amdgpu_wb_init()
472 r = amdgpu_bo_kmap(adev->wb.wb_obj, (void **)&adev->wb.wb); in amdgpu_wb_init()
473 amdgpu_bo_unreserve(adev->wb.wb_obj); in amdgpu_wb_init()
480 adev->wb.num_wb = AMDGPU_MAX_WB; in amdgpu_wb_init()
481 memset(&adev->wb.used, 0, sizeof(adev->wb.used)); in amdgpu_wb_init()
484 memset((char *)adev->wb.wb, 0, AMDGPU_GPU_PAGE_SIZE); in amdgpu_wb_init()
499 int amdgpu_wb_get(struct amdgpu_device *adev, u32 *wb) in amdgpu_wb_get() argument
501 unsigned long offset = find_first_zero_bit(adev->wb.used, adev->wb.num_wb); in amdgpu_wb_get()
502 if (offset < adev->wb.num_wb) { in amdgpu_wb_get()
503 __set_bit(offset, adev->wb.used); in amdgpu_wb_get()
504 *wb = offset; in amdgpu_wb_get()
519 void amdgpu_wb_free(struct amdgpu_device *adev, u32 wb) in amdgpu_wb_free() argument
521 if (wb < adev->wb.num_wb) in amdgpu_wb_free()
522 __clear_bit(wb, adev->wb.used); in amdgpu_wb_free()