aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1563-drm-amdgpu-Improve-debug-information-for-kfd-memory-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1563-drm-amdgpu-Improve-debug-information-for-kfd-memory-.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1563-drm-amdgpu-Improve-debug-information-for-kfd-memory-.patch755
1 files changed, 755 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1563-drm-amdgpu-Improve-debug-information-for-kfd-memory-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1563-drm-amdgpu-Improve-debug-information-for-kfd-memory-.patch
new file mode 100644
index 00000000..0a4214a3
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1563-drm-amdgpu-Improve-debug-information-for-kfd-memory-.patch
@@ -0,0 +1,755 @@
+From 2319e32ad11ff2b5f126efbb39506ab67ade7515 Mon Sep 17 00:00:00 2001
+From: Yong Zhao <yong.zhao@amd.com>
+Date: Wed, 23 Nov 2016 17:44:25 -0500
+Subject: [PATCH 1563/4131] drm/amdgpu: Improve debug information for kfd
+ memory management
+
+Change-Id: Icc557cb53e3ee581a028b3cf585f546626de124e
+Signed-off-by: Yong Zhao <yong.zhao@amd.com>
+
+ Conflicts:
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 4 +-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 12 +-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 12 +-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 196 ++++++++++++----------
+ 4 files changed, 127 insertions(+), 97 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
+index f425878..07150a6 100755
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
+@@ -20,6 +20,8 @@
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
++#define pr_fmt(fmt) "kfd2kgd: " fmt
++
+ #include "amdgpu_amdkfd.h"
+ #include <linux/dma-buf.h>
+ #include <drm/drmP.h>
+@@ -435,7 +437,7 @@ void get_local_mem_info(struct kgd_dev *kgd,
+ }
+ mem_info->vram_width = adev->mc.vram_width;
+
+- pr_debug("amdgpu: address base: 0x%llx limit 0x%llx public 0x%llx private 0x%llx\n",
++ pr_debug("Address base: 0x%llx limit 0x%llx public 0x%llx private 0x%llx\n",
+ adev->mc.aper_base, aper_limit,
+ mem_info->local_mem_size_public,
+ mem_info->local_mem_size_private);
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
+index 4896541..cebf03a 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
+@@ -20,6 +20,8 @@
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
++#define pr_fmt(fmt) "kfd2kgd: " fmt
++
+ #include <linux/fdtable.h>
+ #include <linux/uaccess.h>
+ #include <linux/firmware.h>
+@@ -356,7 +358,7 @@ static inline uint32_t get_sdma_base_addr(struct cik_sdma_rlc_registers *m)
+
+ retval = m->sdma_engine_id * SDMA1_REGISTER_OFFSET +
+ m->sdma_queue_id * KFD_CIK_SDMA_QUEUE_OFFSET;
+- pr_debug("kfd: sdma base address: 0x%x\n", retval);
++ pr_debug("sdma base address: 0x%x\n", retval);
+
+ return retval;
+ }
+@@ -622,7 +624,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
+ break;
+ loop:
+ if (!retry) {
+- pr_err("kfd: CP HQD IQ timer status time out\n");
++ pr_err("CP HQD IQ timer status time out\n");
+ break;
+ }
+ ndelay(100);
+@@ -636,7 +638,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
+ pr_debug("Dequeue request is pending\n");
+
+ if (!retry) {
+- pr_err("kfd: CP HQD dequeue request time out\n");
++ pr_err("CP HQD dequeue request time out\n");
+ break;
+ }
+ ndelay(100);
+@@ -653,7 +655,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
+ if (!(temp & CP_HQD_ACTIVE__ACTIVE_MASK))
+ break;
+ if (time_after(jiffies, end_jiffies)) {
+- pr_err("kfd: cp queue preemption time out\n");
++ pr_err("cp queue preemption time out\n");
+ release_queue(kgd);
+ return -ETIME;
+ }
+@@ -912,7 +914,7 @@ static void set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
+ struct amdgpu_device *adev = get_amdgpu_device(kgd);
+ /* TODO: Don't use hardcoded VMIDs */
+ if (vmid < 8 || vmid > 15) {
+- pr_err("amdkfd: trying to set page table base for wrong VMID\n");
++ pr_err("trying to set page table base for wrong VMID\n");
+ return;
+ }
+ WREG32(mmVM_CONTEXT8_PAGE_TABLE_BASE_ADDR + vmid - 8, page_table_base);
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
+index 60dafce..da6a243 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
+@@ -20,6 +20,8 @@
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
++#define pr_fmt(fmt) "kfd2kgd: " fmt
++
+ #include <linux/module.h>
+ #include <linux/fdtable.h>
+ #include <linux/uaccess.h>
+@@ -348,7 +350,7 @@ static inline uint32_t get_sdma_base_addr(struct vi_sdma_mqd *m)
+
+ retval = m->sdma_engine_id * SDMA1_REGISTER_OFFSET +
+ m->sdma_queue_id * KFD_VI_SDMA_QUEUE_OFFSET;
+- pr_debug("kfd: sdma base address: 0x%x\n", retval);
++ pr_debug("sdma base address: 0x%x\n", retval);
+
+ return retval;
+ }
+@@ -634,7 +636,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
+ break;
+ loop:
+ if (!retry) {
+- pr_err("kfd: CP HQD IQ timer status time out\n");
++ pr_err("CP HQD IQ timer status time out\n");
+ break;
+ }
+ ndelay(100);
+@@ -648,7 +650,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
+ pr_debug("Dequeue request is pending\n");
+
+ if (!retry) {
+- pr_err("kfd: CP HQD dequeue request time out\n");
++ pr_err("CP HQD dequeue request time out\n");
+ break;
+ }
+ ndelay(100);
+@@ -665,7 +667,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
+ if (!(temp & CP_HQD_ACTIVE__ACTIVE_MASK))
+ break;
+ if (time_after(jiffies, end_jiffies)) {
+- pr_err("kfd: cp queue preemption time out.\n");
++ pr_err("cp queue preemption time out.\n");
+ release_queue(kgd);
+ return -ETIME;
+ }
+@@ -918,7 +920,7 @@ static void set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
+ struct amdgpu_device *adev = get_amdgpu_device(kgd);
+ /* TODO: Don't use hardcoded VMIDs */
+ if (vmid < 8 || vmid > 15) {
+- pr_err("amdkfd: trying to set page table base for wrong VMID\n");
++ pr_err("trying to set page table base for wrong VMID\n");
+ return;
+ }
+ WREG32(mmVM_CONTEXT8_PAGE_TABLE_BASE_ADDR + vmid - 8, page_table_base);
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+index ec63c82..7c6f8ed 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+@@ -20,6 +20,8 @@
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
++#define pr_fmt(fmt) "kfd2kgd: " fmt
++
+ #include <linux/module.h>
+ #include <linux/fdtable.h>
+ #include <linux/uaccess.h>
+@@ -60,6 +62,17 @@ struct amdgpu_vm_parser {
+ bool wait;
+ };
+
++static const char * const domain_bit_to_string[] = {
++ "CPU",
++ "GTT",
++ "VRAM",
++ "GDS",
++ "GWS",
++ "OA"
++};
++
++#define domain_string(domain) domain_bit_to_string[ffs(domain)-1]
++
+
+ static inline struct amdgpu_device *get_amdgpu_device(struct kgd_dev *kgd)
+ {
+@@ -304,9 +317,10 @@ static int add_bo_to_vm(struct amdgpu_device *adev, struct kgd_mem *mem,
+ struct amdgpu_bo *bo = mem->bo;
+ uint64_t va = mem->va;
+ struct list_head *list_bo_va = &mem->bo_va_list;
++ unsigned long bo_size = bo->tbo.mem.size;
+
+ if (is_aql)
+- va += bo->tbo.mem.size;
++ va += bo_size;
+
+ bo_va_entry = kzalloc(sizeof(*bo_va_entry), GFP_KERNEL);
+ if (!bo_va_entry)
+@@ -314,14 +328,14 @@ static int add_bo_to_vm(struct amdgpu_device *adev, struct kgd_mem *mem,
+
+ BUG_ON(va == 0);
+
+- pr_debug("amdkfd: adding bo_va to bo %p and va 0x%llx id 0x%x\n",
+- bo, va, adev->dev->id);
++ pr_debug("\t add VA 0x%llx - 0x%llx to vm %p\n", va,
++ va + bo_size, avm);
+
+ /* Add BO to VM internal data structures*/
+ bo_va_entry->bo_va = amdgpu_vm_bo_add(adev, avm, bo);
+ if (bo_va_entry->bo_va == NULL) {
+ ret = -EINVAL;
+- pr_err("amdkfd: Failed to add BO object to VM. ret == %d\n",
++ pr_err("Failed to add BO object to VM. ret == %d\n",
+ ret);
+ goto err_vmadd;
+ }
+@@ -341,8 +355,11 @@ static int add_bo_to_vm(struct amdgpu_device *adev, struct kgd_mem *mem,
+ }
+
+ static void remove_bo_from_vm(struct amdgpu_device *adev,
+- struct kfd_bo_va_list *entry)
++ struct kfd_bo_va_list *entry, unsigned long size)
+ {
++ pr_debug("\t remove VA 0x%llx - 0x%llx in entry %p\n",
++ entry->va,
++ entry->va + size, entry);
+ amdgpu_vm_bo_rmv(adev, entry->bo_va);
+ list_del(&entry->bo_list);
+ kfree(entry);
+@@ -410,7 +427,7 @@ static int amdgpu_amdkfd_bo_invalidate(struct amdgpu_bo *bo)
+ amdgpu_ttm_placement_from_domain(bo, AMDGPU_GEM_DOMAIN_CPU);
+ ret = ttm_bo_validate(&bo->tbo, &bo->placement, true, false);
+ if (ret != 0)
+- pr_err("amdgpu: failed to invalidate userptr BO\n");
++ pr_err("Failed to invalidate userptr BO\n");
+ }
+ return ret;
+ }
+@@ -435,7 +452,7 @@ static int validate_pt_pd_bos(struct amdgpu_vm *vm)
+ ret = amdgpu_amdkfd_bo_validate(bo, AMDGPU_GEM_DOMAIN_VRAM,
+ true);
+ if (ret != 0) {
+- pr_err("amdgpu: failed to validate PTE %d\n", i);
++ pr_err("Failed to validate PTE %d\n", i);
+ break;
+ }
+ }
+@@ -443,7 +460,7 @@ static int validate_pt_pd_bos(struct amdgpu_vm *vm)
+ ret = amdgpu_amdkfd_bo_validate(pd, AMDGPU_GEM_DOMAIN_VRAM,
+ true);
+ if (ret != 0) {
+- pr_err("amdgpu: failed to validate PD\n");
++ pr_err("Failed to validate PD\n");
+ return ret;
+ }
+
+@@ -579,15 +596,15 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
+ (*mem)->pte_flags = pte_flags;
+
+ alloc_domain = userptr ? AMDGPU_GEM_DOMAIN_CPU : domain;
+- pr_debug("amdkfd: allocating BO on domain %d with size %llu\n",
+- alloc_domain, size);
+
+ ret = amdgpu_amdkfd_reserve_system_mem_limit(adev, size, alloc_domain);
+ if (ret) {
+- pr_err("amdkfd: Insufficient system memory\n");
++ pr_err("Insufficient system memory\n");
+ goto err_bo_create;
+ }
+
++ pr_debug("\t create BO VA 0x%llx size 0x%llx domain %s\n",
++ va, size, domain_string(alloc_domain));
+
+ /* Allocate buffer object. Userptr objects need to start out
+ * in the CPU domain, get moved to GTT when pinned. */
+@@ -595,8 +612,8 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
+ alloc_domain,
+ flags, sg, NULL, &bo);
+ if (ret != 0) {
+- pr_err("amdkfd: failed to create BO on domain %d. ret %d\n",
+- alloc_domain, ret);
++ pr_err("Failed to create BO on domain %s. ret %d\n",
++ domain_string(alloc_domain), ret);
+ goto err_bo_create;
+ }
+ bo->kfd_bo = *mem;
+@@ -605,34 +622,30 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
+ if (domain == AMDGPU_GEM_DOMAIN_VRAM) {
+ ret = amdgpu_bo_reserve(bo, true);
+ if (ret) {
+- dev_err(adev->dev,
+- "(%d) failed to reserve bo for amdkfd\n", ret);
++ pr_err("Failed to reserve bo. ret %d\n",
++ ret);
+ goto err_bo_clear;
+ }
+ ret = amdgpu_amdkfd_gpuvm_clear_bo(adev, vm, bo);
+ amdgpu_bo_unreserve(bo);
+ if (ret) {
+- pr_err("amdkfd: failed to clear VRAM BO object. ret %d\n",
++ pr_err("Failed to clear VRAM BO object. ret %d\n",
+ ret);
+ goto err_bo_clear;
+ }
+ }
+
+- 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, 0);
+ if (ret) {
+- dev_err(adev->dev,
+- "(%d) failed to set userptr\n", ret);
++ pr_err("Failed to set userptr. ret %d\n", ret);
+ goto allocate_mem_set_userptr_failed;
+ }
+
+ ret = amdgpu_mn_register(bo, user_addr);
+ if (ret) {
+- dev_err(adev->dev,
+- "(%d) failed to register MMU notifier\n", ret);
++ pr_err("Failed to register MMU notifier %d\n",
++ ret);
+ goto allocate_mem_set_userptr_failed;
+ }
+ }
+@@ -640,21 +653,21 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
+ if (kptr) {
+ ret = amdgpu_bo_reserve(bo, true);
+ if (ret) {
+- dev_err(adev->dev, "(%d) failed to reserve bo for amdkfd\n", ret);
++ pr_err("Failed to reserve bo. ret %d\n", ret);
+ goto allocate_mem_reserve_bo_failed;
+ }
+
+ ret = amdgpu_bo_pin(bo, domain,
+ NULL);
+ if (ret) {
+- dev_err(adev->dev, "(%d) failed to pin bo for amdkfd\n", ret);
++ pr_err("Failed to pin bo. ret %d\n", ret);
+ goto allocate_mem_pin_bo_failed;
+ }
+
+ ret = amdgpu_bo_kmap(bo, kptr);
+ if (ret) {
+- dev_err(adev->dev,
+- "(%d) failed to map bo to kernel for amdkfd\n", ret);
++ pr_err("Failed to map bo to kernel. ret %d\n",
++ ret);
+ goto allocate_mem_kmap_bo_failed;
+ }
+ (*mem)->kptr = *kptr;
+@@ -750,7 +763,7 @@ static int reserve_bo_and_vm(struct kgd_mem *mem,
+ if (!ret)
+ ctx->reserved = true;
+ else
+- pr_err("amdkfd: Failed to reserve buffers in ttm\n");
++ pr_err("Failed to reserve buffers in ttm\n");
+
+ if (ret) {
+ kfree(ctx->vm_pd);
+@@ -840,7 +853,7 @@ static int reserve_bo_and_cond_vms(struct kgd_mem *mem,
+ if (!ret)
+ ctx->reserved = true;
+ else
+- pr_err("amdkfd: Failed to reserve buffers in ttm\n");
++ pr_err("Failed to reserve buffers in ttm.\n");
+
+ if (ret) {
+ kfree(ctx->vm_pd);
+@@ -978,14 +991,14 @@ static int update_gpuvm_pte(struct amdgpu_device *adev, struct amdgpu_bo *bo,
+ /* Validate PT / PTs */
+ ret = validate_pt_pd_bos(vm);
+ if (ret != 0) {
+- pr_err("amdkfd: Failed to validate_pt_pd_bos\n");
++ pr_err("validate_pt_pd_bos failed\n");
+ return ret;
+ }
+
+ /* Update the page directory */
+ ret = amdgpu_vm_update_page_directory(adev, vm);
+ if (ret != 0) {
+- pr_err("amdkfd: Failed to amdgpu_vm_update_page_directory\n");
++ pr_err("amdgpu_vm_update_page_directory failed\n");
+ return ret;
+ }
+
+@@ -994,7 +1007,7 @@ static int update_gpuvm_pte(struct amdgpu_device *adev, struct amdgpu_bo *bo,
+ /* Update the page tables */
+ ret = amdgpu_vm_bo_update(adev, bo_va, &bo->tbo.mem);
+ if (ret != 0) {
+- pr_err("amdkfd: Failed to amdgpu_vm_bo_update\n");
++ pr_err("amdgpu_vm_bo_update failed\n");
+ return ret;
+ }
+
+@@ -1021,14 +1034,14 @@ static int map_bo_to_gpuvm(struct amdgpu_device *adev, struct amdgpu_bo *bo,
+ entry->va, 0, amdgpu_bo_size(bo),
+ pte_flags);
+ if (ret != 0) {
+- pr_err("amdkfd: Failed to map bo in vm. ret == %d (0x%llx)\n",
+- ret, entry->va);
++ pr_err("Failed to map VA 0x%llx in vm. ret %d\n",
++ entry->va, ret);
+ return ret;
+ }
+
+ ret = update_gpuvm_pte(adev, bo, entry, sync);
+ if (ret != 0) {
+- pr_err("amdkfd: update_gpuvm_pte() failed\n");
++ pr_err("update_gpuvm_pte() failed\n");
+ goto update_gpuvm_pte_failed;
+ }
+
+@@ -1072,7 +1085,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
+ struct sg_table *sg = NULL;
+
+ if (!(flags & ALLOC_MEM_FLAGS_NONPAGED)) {
+- pr_err("amdgpu: current hw doesn't support paged memory\n");
++ pr_err("current hw doesn't support paged memory\n");
+ return -EINVAL;
+ }
+
+@@ -1088,7 +1101,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
+ userptr = (flags & ALLOC_MEM_FLAGS_USERPTR) ? true : false;
+
+ if (userptr && kptr) {
+- pr_err("amdgpu: userptr can't be mapped to kernel\n");
++ pr_err("userptr can't be mapped to kernel\n");
+ return -EINVAL;
+ }
+
+@@ -1120,14 +1133,14 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
+ if (offset && !userptr)
+ *offset = 0;
+
+- pr_debug("amdgpu: allocating BO domain %d alloc_flag 0x%llu public %s readonly %s execute %s no substitue %s va 0x%llx\n",
+- domain,
+- alloc_flag,
+- BOOL_TO_STR(public),
+- BOOL_TO_STR(readonly),
+- BOOL_TO_STR(execute),
+- BOOL_TO_STR(no_sub),
+- va);
++ pr_debug("Allocate VA 0x%llx - 0x%llx domain %s aql %s\n",
++ va, va + size, domain_string(domain),
++ BOOL_TO_STR(aql_queue));
++
++ pr_debug("\t alloc_flag 0x%llx public %s readonly %s execute %s no_sub %s\n",
++ alloc_flag, BOOL_TO_STR(public),
++ BOOL_TO_STR(readonly), BOOL_TO_STR(execute),
++ BOOL_TO_STR(no_sub));
+
+ return __alloc_memory_of_gpu(kgd, va, size, vm, mem,
+ temp_offset, kptr, domain,
+@@ -1145,6 +1158,7 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
+ int ret;
+ struct amdgpu_bo_list_entry *bo_list_entry;
+ struct amdkfd_vm *master_vm;
++ unsigned long bo_size;
+
+ BUG_ON(kgd == NULL);
+ BUG_ON(mem == NULL);
+@@ -1154,11 +1168,13 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
+ master_vm = ((struct amdkfd_vm *)vm)->master;
+ BUG_ON(master_vm == NULL);
+
++ bo_size = mem->bo->tbo.mem.size;
++
+ mutex_lock(&mem->lock);
+
+ if (mem->mapped_to_gpu_memory > 0) {
+- pr_err("BO with size %lu bytes is mapped to GPU. Need to unmap it before release va 0x%llx\n",
+- mem->bo->tbo.mem.size, mem->va);
++ pr_err("BO VA 0x%llx size 0x%lx is already mapped to vm %p.\n",
++ mem->va, bo_size, vm);
+ mutex_unlock(&mem->lock);
+ return -EBUSY;
+ }
+@@ -1181,15 +1197,13 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
+ */
+ amdgpu_amdkfd_remove_eviction_fence(mem->bo, master_vm->eviction_fence,
+ NULL, NULL);
+- pr_debug("Releasing BO with VA 0x%llx, size %lu bytes\n",
+- mem->va,
+- mem->bo->tbo.mem.size);
++ pr_debug("Release VA 0x%llx - 0x%llx\n", mem->va,
++ mem->va + bo_size * (1 + mem->aql_queue));
+
+ /* Remove from VM internal data structures */
+ list_for_each_entry_safe(entry, tmp, &mem->bo_va_list, bo_list) {
+- pr_debug("\t remove from amdgpu_bo_va %p\n", entry->bo_va);
+ remove_bo_from_vm((struct amdgpu_device *)entry->kgd_dev,
+- entry);
++ entry, bo_size);
+ }
+
+ unreserve_bo_and_vms(&ctx, false);
+@@ -1227,6 +1241,7 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
+ struct kfd_bo_va_list *bo_va_entry_aql = NULL;
+ struct amdkfd_vm *kfd_vm = (struct amdkfd_vm *)vm;
+ int num_to_quiesce = 0;
++ unsigned long bo_size;
+
+ BUG_ON(kgd == NULL);
+ BUG_ON(mem == NULL);
+@@ -1240,17 +1255,18 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
+ BUG_ON(bo == NULL);
+
+ domain = mem->domain;
++ bo_size = bo->tbo.mem.size;
+
+- pr_debug("amdgpu: try to map VA 0x%llx domain %d\n",
+- mem->va, domain);
++ pr_debug("Map VA 0x%llx - 0x%llx to vm %p domain %s\n",
++ mem->va,
++ mem->va + bo_size * (1 + mem->aql_queue),
++ vm, domain_string(domain));
+
+ ret = reserve_bo_and_vm(mem, vm, &ctx);
+ if (unlikely(ret != 0))
+ goto bo_reserve_failed;
+
+ if (check_if_add_bo_to_vm((struct amdgpu_vm *)vm, mem)) {
+- pr_debug("amdkfd: add new BO_VA to list 0x%llx\n",
+- mem->va);
+ ret = add_bo_to_vm(adev, mem, (struct amdgpu_vm *)vm, false,
+ &bo_va_entry);
+ if (ret != 0)
+@@ -1265,14 +1281,16 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
+
+ if (!mem->evicted) {
+ ret = update_user_pages(mem, current->mm, &ctx);
+- if (ret != 0)
++ if (ret != 0) {
++ pr_err("update_user_pages failed\n");
+ goto update_user_pages_failed;
++ }
+ }
+
+ if (amdgpu_ttm_tt_get_usermm(bo->tbo.ttm)) {
+ ret = amdgpu_amdkfd_bo_validate(bo, domain, true);
+ if (ret) {
+- pr_debug("amdkfd: userptr: Validate failed\n");
++ pr_debug("userptr: Validate failed\n");
+ goto map_bo_to_gpuvm_failed;
+ }
+ } else if (mem->mapped_to_gpu_memory == 0) {
+@@ -1282,7 +1300,7 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
+ */
+ ret = amdgpu_amdkfd_bo_validate(bo, domain, true);
+ if (ret) {
+- pr_debug("amdkfd: Validate failed\n");
++ pr_debug("Validate failed\n");
+ goto map_bo_to_gpuvm_failed;
+ }
+ }
+@@ -1301,18 +1319,19 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
+ continue;
+ }
+
+- pr_debug("amdkfd: Trying to map VA 0x%llx to vm %p\n",
+- mem->va, vm);
++ pr_debug("\t map VA 0x%llx - 0x%llx in entry %p\n",
++ entry->va, entry->va + bo_size,
++ entry);
+
+ ret = map_bo_to_gpuvm(adev, bo, entry, mem->pte_flags,
+ &ctx.sync);
+ if (ret != 0) {
+- pr_err("amdkfd: Failed to map radeon bo to gpuvm\n");
++ pr_err("Failed to map radeon bo to gpuvm\n");
+ goto map_bo_to_gpuvm_failed;
+ }
+ entry->is_mapped = true;
+ mem->mapped_to_gpu_memory++;
+- pr_debug("amdgpu: INC mapping count %d\n",
++ pr_debug("\t INC mapping count %d\n",
+ mem->mapped_to_gpu_memory);
+ }
+ }
+@@ -1341,10 +1360,10 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
+ map_bo_to_gpuvm_failed:
+ update_user_pages_failed:
+ if (bo_va_entry_aql)
+- remove_bo_from_vm(adev, bo_va_entry_aql);
++ remove_bo_from_vm(adev, bo_va_entry_aql, bo_size);
+ add_bo_to_vm_failed_aql:
+ if (bo_va_entry)
+- remove_bo_from_vm(adev, bo_va_entry);
++ remove_bo_from_vm(adev, bo_va_entry, bo_size);
+ add_bo_to_vm_failed:
+ unreserve_bo_and_vms(&ctx, false);
+ bo_reserve_failed:
+@@ -1385,7 +1404,7 @@ int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, void **vm,
+ /* Initialize the VM context, allocate the page directory and zero it */
+ ret = amdgpu_vm_init(adev, &new_vm->base);
+ if (ret != 0) {
+- pr_err("amdgpu: failed init vm ret %d\n", ret);
++ pr_err("Failed init vm ret %d\n", ret);
+ /* Undo everything related to the new VM context */
+ goto vm_init_fail;
+ }
+@@ -1411,8 +1430,7 @@ int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, void **vm,
+ new_vm->master->n_vms++;
+ *vm = (void *) new_vm;
+
+- pr_debug("amdgpu: created process vm with address 0x%llx\n",
+- get_vm_pd_gpu_offset(&new_vm->base));
++ pr_debug("Created process vm %p\n", *vm);
+
+ return ret;
+
+@@ -1434,7 +1452,7 @@ void amdgpu_amdkfd_gpuvm_destroy_process_vm(struct kgd_dev *kgd, void *vm)
+ BUG_ON(kgd == NULL);
+ BUG_ON(vm == NULL);
+
+- pr_debug("Destroying process vm with address %p\n", vm);
++ pr_debug("Destroying process vm %p\n", vm);
+ /* Release eviction fence from PD */
+ pd = avm->page_directory;
+ amdgpu_bo_reserve(pd, false);
+@@ -1493,6 +1511,7 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
+ struct bo_vm_reservation_context ctx;
+ struct amdkfd_vm *master_vm;
+ int num_to_resume = 0;
++ unsigned long bo_size;
+
+ BUG_ON(kgd == NULL);
+ BUG_ON(mem == NULL);
+@@ -1500,6 +1519,8 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
+ adev = (struct amdgpu_device *) kgd;
+ master_vm = ((struct amdkfd_vm *)vm)->master;
+
++ bo_size = mem->bo->tbo.mem.size;
++
+ mutex_lock(&mem->lock);
+
+ /*
+@@ -1511,8 +1532,8 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
+ }
+
+ if (mem->mapped_to_gpu_memory == 0) {
+- pr_debug("BO size %lu bytes at va 0x%llx is not mapped\n",
+- mem->bo->tbo.mem.size, mem->va);
++ pr_debug("BO VA 0x%llx size 0x%lx is not mapped to vm %p\n",
++ mem->va, bo_size, vm);
+ ret = -EINVAL;
+ goto out;
+ }
+@@ -1522,6 +1543,11 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
+ if (unlikely(ret != 0))
+ goto out;
+
++ pr_debug("Unmap VA 0x%llx - 0x%llx from vm %p\n",
++ mem->va,
++ mem->va + bo_size * (1 + mem->aql_queue),
++ vm);
++
+ list_for_each_entry(entry, &mem->bo_va_list, bo_list) {
+ if (entry->bo_va->vm == vm && entry->is_mapped) {
+ if (mem->evicted) {
+@@ -1535,22 +1561,23 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
+ continue;
+ }
+
+- pr_debug("unmapping BO with VA 0x%llx, size %lu bytes from GPU memory\n",
+- mem->va,
+- mem->bo->tbo.mem.size);
++ pr_debug("\t unmap VA 0x%llx - 0x%llx from entry %p\n",
++ entry->va,
++ entry->va + bo_size,
++ entry);
+
+ ret = unmap_bo_from_gpuvm(adev, mem->bo,
+ entry, &ctx.sync);
+ if (ret == 0) {
+ entry->is_mapped = false;
+ } else {
+- pr_err("amdgpu: failed unmap va 0x%llx\n",
++ pr_err("failed to unmap VA 0x%llx\n",
+ mem->va);
+ goto unreserve_out;
+ }
+
+ mem->mapped_to_gpu_memory--;
+- pr_debug("amdgpu: DEC mapping count %d\n",
++ pr_debug("\t DEC mapping count %d\n",
+ mem->mapped_to_gpu_memory);
+ }
+ }
+@@ -1564,10 +1591,8 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
+ NULL, NULL);
+
+ if (mapped_before == mem->mapped_to_gpu_memory) {
+- pr_debug("BO size %lu bytes at va 0x%llx is not mapped on GPU %x:%x.%x\n",
+- mem->bo->tbo.mem.size, mem->va,
+- adev->pdev->bus->number, PCI_SLOT(adev->pdev->devfn),
+- PCI_FUNC(adev->pdev->devfn));
++ pr_debug("BO VA 0x%llx size 0x%lx is not mapped to vm %p\n",
++ mem->va, bo_size, vm);
+ ret = -EINVAL;
+ }
+
+@@ -1615,7 +1640,7 @@ int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct kgd_dev *kgd,
+ /* map the buffer */
+ ret = amdgpu_bo_reserve(bo, true);
+ if (ret) {
+- dev_err(adev->dev, "(%d) failed to reserve bo for amdkfd\n", ret);
++ pr_err("Failed to reserve bo. ret %d\n", ret);
+ mutex_unlock(&mem->lock);
+ return ret;
+ }
+@@ -1623,7 +1648,7 @@ int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct kgd_dev *kgd,
+ ret = amdgpu_bo_pin(bo, AMDGPU_GEM_DOMAIN_GTT,
+ NULL);
+ if (ret) {
+- dev_err(adev->dev, "(%d) failed to pin bo for amdkfd\n", ret);
++ pr_err("Failed to pin bo. ret %d\n", ret);
+ amdgpu_bo_unreserve(bo);
+ mutex_unlock(&mem->lock);
+ return ret;
+@@ -1631,8 +1656,7 @@ int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct kgd_dev *kgd,
+
+ ret = amdgpu_bo_kmap(bo, kptr);
+ if (ret) {
+- dev_err(adev->dev,
+- "(%d) failed to map bo to kernel for amdkfd\n", ret);
++ pr_err("Failed to map bo to kernel. ret %d\n", ret);
+ amdgpu_bo_unpin(bo);
+ amdgpu_bo_unreserve(bo);
+ mutex_unlock(&mem->lock);
+@@ -1893,7 +1917,7 @@ int amdgpu_amdkfd_gpuvm_evict_mem(struct kgd_mem *mem, struct mm_struct *mm)
+
+ r = kgd2kfd->quiesce_mm(adev->kfd, mm);
+ if (r != 0) {
+- pr_err("failed to quiesce KFD\n");
++ pr_err("Failed to quiesce KFD\n");
+ goto fail;
+ }
+
+@@ -1915,7 +1939,7 @@ int amdgpu_amdkfd_gpuvm_evict_mem(struct kgd_mem *mem, struct mm_struct *mm)
+ r = unmap_bo_from_gpuvm(adev, mem->bo,
+ entry, &ctx.sync);
+ if (r != 0) {
+- pr_err("failed unmap va 0x%llx\n",
++ pr_err("Failed unmap VA 0x%llx\n",
+ mem->va);
+ unreserve_bo_and_vms(&ctx, true);
+ goto fail;
+--
+2.7.4
+