aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1772-drm-amdgpu-fix-kfd-event-page-unaccessible.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1772-drm-amdgpu-fix-kfd-event-page-unaccessible.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1772-drm-amdgpu-fix-kfd-event-page-unaccessible.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1772-drm-amdgpu-fix-kfd-event-page-unaccessible.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1772-drm-amdgpu-fix-kfd-event-page-unaccessible.patch
new file mode 100644
index 00000000..eb640e4c
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1772-drm-amdgpu-fix-kfd-event-page-unaccessible.patch
@@ -0,0 +1,52 @@
+From dc6ce4afc6e4f0d8fa2dbb83af116a45fd1a8f77 Mon Sep 17 00:00:00 2001
+From: Eric Huang <JinHuiEric.Huang@amd.com>
+Date: Tue, 22 Aug 2017 12:12:12 -0400
+Subject: [PATCH 1772/4131] drm/amdgpu: fix kfd event page unaccessible
+
+remove pinned and kmapped BO from validation list to
+fix event page kernal address invalid after memory
+eviction and system memory swap.
+
+Change-Id: Ifce1b126a2bdc387436284fe5e58184d02b4d122
+Signed-off-by: Eric Huang <JinHuiEric.Huang@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+index b352e8e..5c5162c 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+@@ -1657,17 +1657,25 @@ int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct kgd_dev *kgd,
+ struct kgd_mem *mem, void **kptr)
+ {
+ int ret;
+- struct amdgpu_bo *bo;
++ struct amdgpu_bo *bo = mem->bo;
+
+- mutex_lock(&mem->lock);
++ if (amdgpu_ttm_tt_get_usermm(bo->tbo.ttm)) {
++ pr_err("userptr can't be mapped to kernel\n");
++ return -EINVAL;
++ }
+
+- bo = mem->bo;
++ /* delete kgd_mem from kfd_bo_list to avoid re-validating
++ * this BO in BO's restoring after eviction.
++ */
++ mutex_lock(&mem->process_info->lock);
++
++ list_del_init(&mem->validate_list.head);
+
+ ret = __map_bo_to_kernel(bo, AMDGPU_GEM_DOMAIN_GTT, kptr);
+ if (!ret)
+ mem->kptr = *kptr;
+
+- mutex_unlock(&mem->lock);
++ mutex_unlock(&mem->process_info->lock);
+
+ return ret;
+ }
+--
+2.7.4
+