From 9cbca74f0c1b3987746a10e05a7362486290972d Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Wed, 15 Jun 2016 17:46:03 -0400 Subject: [PATCH 1461/4131] drm/amdkfd: Improve the debug message Some misleading debug messages are rectified. Moreover, the size parameter used when allocating memory is changed to uint64_t from size_t in order to be consistent with the size type in the alloc ioctl parameter. Change-Id: I9aad3ae0c2030d4bcd9a586b2d96e21088cfa636 Signed-off-by: Yong Zhao --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 28 ++++++++++++++---------- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 3 ++- drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 2 +- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h index b7b30af..bbf3404 100755 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h @@ -116,7 +116,7 @@ int amdgpu_amdkfd_get_dmabuf_info(struct kgd_dev *kgd, int dma_buf_fd, /* GPUVM API */ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( - struct kgd_dev *kgd, uint64_t va, size_t size, + struct kgd_dev *kgd, uint64_t va, uint64_t size, void *vm, struct kgd_mem **mem, uint64_t *offset, void **kptr, struct kfd_process_device *pdd, uint32_t flags); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c index 8c5f315..7b119e8 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c @@ -336,7 +336,7 @@ static int amdgpu_amdkfd_gpuvm_clear_bo(struct amdgpu_device *adev, } static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va, - size_t size, void *vm, struct kgd_mem **mem, + uint64_t size, void *vm, struct kgd_mem **mem, uint64_t *offset, void **kptr, struct kfd_process_device *pdd, u32 domain, u64 flags, bool aql_queue, bool readonly, bool execute, bool no_sub, bool userptr) @@ -346,6 +346,7 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va, struct amdgpu_bo *bo; uint64_t user_addr = 0; int byte_align; + u32 alloc_domain; BUG_ON(kgd == NULL); BUG_ON(size == 0); @@ -376,16 +377,18 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va, (*mem)->data2.no_substitute = no_sub; (*mem)->data2.aql_queue = aql_queue; - pr_debug("amdkfd: allocating GTT BO size %lu\n", size); + alloc_domain = userptr ? AMDGPU_GEM_DOMAIN_CPU : domain; + pr_debug("amdkfd: allocating BO on domain %d with size %llu\n", + alloc_domain, size); /* Allocate buffer object. Userptr objects need to start out * in the CPU domain, get moved to GTT when pinned. */ ret = amdgpu_bo_create(adev, size, byte_align, false, - userptr ? AMDGPU_GEM_DOMAIN_CPU : domain, + alloc_domain, flags, NULL, NULL, &bo); if (ret != 0) { - pr_err("amdkfd: Failed to create BO object on GTT. ret == %d\n", - ret); + pr_err("amdkfd: failed to create BO on domain %d. ret %d\n", + alloc_domain, ret); goto err_bo_create; } bo->kfd_bo = *mem; @@ -402,13 +405,14 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va, ret = amdgpu_amdkfd_gpuvm_clear_bo(adev, vm, bo); amdgpu_bo_unreserve(bo); if (ret) { - pr_err("amdkfd: Failed to clear BO object on GTT. ret == %d\n", + pr_err("amdkfd: failed to clear VRAM BO object. ret %d\n", ret); goto err_bo_clear; } } - pr_debug("Created BO on GTT with size %zu bytes\n", size); + pr_debug("amdkfd: created BO on domain %d with size %llu\n", + alloc_domain, size); if (userptr) { ret = amdgpu_ttm_tt_set_userptr(bo->tbo.ttm, user_addr, @@ -816,7 +820,7 @@ static int map_bo_to_gpuvm(struct amdgpu_device *adev, struct amdgpu_bo *bo, #define BOOL_TO_STR(b) (b == true) ? "true" : "false" int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( - struct kgd_dev *kgd, uint64_t va, size_t size, + struct kgd_dev *kgd, uint64_t va, uint64_t size, void *vm, struct kgd_mem **mem, uint64_t *offset, void **kptr, struct kfd_process_device *pdd, uint32_t flags) @@ -915,11 +919,13 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu( if (unlikely(ret != 0)) return ret; + pr_debug("Releasing BO with VA 0x%llx, size %lu bytes\n", + mem->data2.va, + mem->data2.bo->tbo.mem.size); + /* Remove from VM internal data structures */ list_for_each_entry_safe(entry, tmp, &mem->data2.bo_va_list, bo_list) { - pr_debug("Releasing BO with VA %p, size %lu bytes\n", - entry->bo_va, - mem->data2.bo->tbo.mem.size); + pr_debug("\t remove from amdgpu_bo_va %p\n", entry->bo_va); remove_bo_from_vm((struct amdgpu_device *)entry->kgd_dev, entry); } diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index 43d3954..314c178 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -1915,7 +1915,8 @@ static long kfd_ioctl(struct file *filep, unsigned int cmd, unsigned long arg) } else goto err_i1; - dev_dbg(kfd_device, "ioctl cmd 0x%x (#%d), arg 0x%lx\n", cmd, nr, arg); + dev_dbg(kfd_device, "ioctl cmd 0x%x (#0x%x), arg 0x%lx\n", + cmd, nr, arg); process = kfd_get_process(current); if (IS_ERR(process)) { diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h index 3dca616..b981589 100644 --- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h @@ -293,7 +293,7 @@ struct kfd2kgd_calls { void (*write_vmid_invalidate_request)(struct kgd_dev *kgd, uint8_t vmid); int (*alloc_memory_of_gpu)(struct kgd_dev *kgd, uint64_t va, - size_t size, void *vm, + uint64_t size, void *vm, struct kgd_mem **mem, uint64_t *offset, void **kptr, struct kfd_process_device *pdd, uint32_t flags); -- 2.7.4