aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3286-drm-amdkfd-Fix-crash-in-unmap-to-gpu-while-PD-bo-evi.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3286-drm-amdkfd-Fix-crash-in-unmap-to-gpu-while-PD-bo-evi.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3286-drm-amdkfd-Fix-crash-in-unmap-to-gpu-while-PD-bo-evi.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3286-drm-amdkfd-Fix-crash-in-unmap-to-gpu-while-PD-bo-evi.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3286-drm-amdkfd-Fix-crash-in-unmap-to-gpu-while-PD-bo-evi.patch
new file mode 100644
index 00000000..44c03b3e
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3286-drm-amdkfd-Fix-crash-in-unmap-to-gpu-while-PD-bo-evi.patch
@@ -0,0 +1,45 @@
+From 2b5a73cc4eb5b9359c010e73c741cc868be76a12 Mon Sep 17 00:00:00 2001
+From: Philip Yang <Philip.Yang@amd.com>
+Date: Tue, 23 Jan 2018 21:34:26 -0500
+Subject: [PATCH 3286/4131] drm/amdkfd: Fix crash in unmap to gpu while PD bo
+ evicted
+
+PD and PT may be evicted during evict restore test, validate PD and
+PT before accessing PD and PT in map and unmap memory to GPU path to
+avoid WARNING and VMC page fault later.
+
+Change-Id: I5b8c3e10383d2d4b515e23edc5f284bdbd620943
+Signed-off-by: Philip Yang <Philip.Yang@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+index 2409b56..54d705a 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+@@ -1302,6 +1302,10 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
+ if (ret != 0)
+ goto add_bo_to_vm_failed_aql;
+ }
++ } else {
++ ret = vm_validate_pt_pd_bos((struct amdkfd_vm *)vm);
++ if (unlikely(ret != 0))
++ goto add_bo_to_vm_failed;
+ }
+
+ if (mem->mapped_to_gpu_memory == 0 &&
+@@ -1564,6 +1568,10 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
+ if (unlikely(ret != 0))
+ goto out;
+
++ ret = vm_validate_pt_pd_bos((struct amdkfd_vm *)vm);
++ if (unlikely(ret != 0))
++ goto unreserve_out;
++
+ pr_debug("Unmap VA 0x%llx - 0x%llx from vm %p\n",
+ mem->va,
+ mem->va + bo_size * (1 + mem->aql_queue),
+--
+2.7.4
+