aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1780-drm-amdkcl-KFD-4.12-Use-kvmalloc_array-free-instead-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1780-drm-amdkcl-KFD-4.12-Use-kvmalloc_array-free-instead-.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1780-drm-amdkcl-KFD-4.12-Use-kvmalloc_array-free-instead-.patch88
1 files changed, 88 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1780-drm-amdkcl-KFD-4.12-Use-kvmalloc_array-free-instead-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1780-drm-amdkcl-KFD-4.12-Use-kvmalloc_array-free-instead-.patch
new file mode 100644
index 00000000..fda7ed4a
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1780-drm-amdkcl-KFD-4.12-Use-kvmalloc_array-free-instead-.patch
@@ -0,0 +1,88 @@
+From 51d1eef262f750a36752520f29ca1b8a6c4923aa Mon Sep 17 00:00:00 2001
+From: "Le.Ma" <Le.Ma@amd.com>
+Date: Mon, 11 Sep 2017 12:20:43 +0800
+Subject: [PATCH 1780/4131] drm/amdkcl: [KFD][4.12] Use kvmalloc_array(free)
+ instead of drm_calloc(free)_large
+
+Change-Id: Ic5a9e414e849830391d8936026770a24e7ab797d
+Signed-off-by: Le.Ma <Le.Ma@amd.com>
+Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 25 ++++++++++++++++++++++++
+ 1 file changed, 25 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+index b7a5b44..528ddb9 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+@@ -573,8 +573,14 @@ static int init_user_pages(struct kgd_mem *mem, struct mm_struct *mm,
+ */
+ WARN(mem->user_pages, "Leaking user_pages array");
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
+ mem->user_pages = drm_calloc_large(bo->tbo.ttm->num_pages,
+ sizeof(struct page *));
++#else
++ mem->user_pages = kvmalloc_array(bo->tbo.ttm->num_pages,
++ sizeof(struct page *),
++ GFP_KERNEL | __GFP_ZERO);
++#endif
+ if (!mem->user_pages) {
+ pr_err("%s: Failed to allocate pages array\n", __func__);
+ ret = -ENOMEM;
+@@ -608,7 +614,11 @@ static int init_user_pages(struct kgd_mem *mem, struct mm_struct *mm,
+ if (ret)
+ release_pages(mem->user_pages, bo->tbo.ttm->num_pages, 0);
+ free_out:
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
+ drm_free_large(mem->user_pages);
++#else
++ kvfree(mem->user_pages);
++#endif
+ mem->user_pages = NULL;
+ unregister_out:
+ if (ret)
+@@ -1194,7 +1204,11 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
+ if (mem->user_pages[0])
+ release_pages(mem->user_pages,
+ mem->bo->tbo.ttm->num_pages, 0);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
+ drm_free_large(mem->user_pages);
++#else
++ kvfree(mem->user_pages);
++#endif
+ }
+
+ ret = reserve_bo_and_cond_vms(mem, NULL, VA_DO_NOT_CARE, &ctx);
+@@ -1994,9 +2008,16 @@ static int update_invalid_user_pages(struct amdkfd_process_info *process_info,
+ bo = mem->bo;
+
+ if (!mem->user_pages) {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
+ mem->user_pages =
+ drm_calloc_large(bo->tbo.ttm->num_pages,
+ sizeof(struct page *));
++#else
++ mem->user_pages =
++ kvmalloc_array(bo->tbo.ttm->num_pages,
++ sizeof(struct page *),
++ GFP_KERNEL | __GFP_ZERO);
++#endif
+ if (!mem->user_pages) {
+ ret = -ENOMEM;
+ pr_err("%s: Failed to allocate pages array\n",
+@@ -2127,7 +2148,11 @@ static int validate_invalid_user_pages(struct amdkfd_process_info *process_info)
+ * the userptr_valid_list. If we need to revalidate
+ * it, we need to start from scratch.
+ */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
+ drm_free_large(mem->user_pages);
++#else
++ kvfree(mem->user_pages);
++#endif
+ mem->user_pages = NULL;
+ list_move_tail(&mem->validate_list.head,
+ &process_info->userptr_valid_list);
+--
+2.7.4
+