aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1461-drm-amdkfd-Improve-the-debug-message.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1461-drm-amdkfd-Improve-the-debug-message.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1461-drm-amdkfd-Improve-the-debug-message.patch149
1 files changed, 149 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1461-drm-amdkfd-Improve-the-debug-message.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1461-drm-amdkfd-Improve-the-debug-message.patch
new file mode 100644
index 00000000..ef3569a0
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1461-drm-amdkfd-Improve-the-debug-message.patch
@@ -0,0 +1,149 @@
+From 9cbca74f0c1b3987746a10e05a7362486290972d Mon Sep 17 00:00:00 2001
+From: Yong Zhao <yong.zhao@amd.com>
+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 <yong.zhao@amd.com>
+---
+ 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
+