aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1457-drm-amdgpu-Fix-suspicious-RCU-usage.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1457-drm-amdgpu-Fix-suspicious-RCU-usage.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1457-drm-amdgpu-Fix-suspicious-RCU-usage.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1457-drm-amdgpu-Fix-suspicious-RCU-usage.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1457-drm-amdgpu-Fix-suspicious-RCU-usage.patch
new file mode 100644
index 00000000..444c7233
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1457-drm-amdgpu-Fix-suspicious-RCU-usage.patch
@@ -0,0 +1,53 @@
+From 8920fdc3abe7bbd912558ea5195447335edbfae1 Mon Sep 17 00:00:00 2001
+From: Lan Xiao <Lan.Xiao@amd.com>
+Date: Fri, 10 Jun 2016 10:17:48 -0400
+Subject: [PATCH 1457/4131] drm/amdgpu: Fix suspicious RCU usage.
+
+Reserve the BO before calling the function amdgpu_amdkfd_gpuvm_clear_bo
+
+BUG: SWDEV-95685
+
+Change-Id: I0325b9106d89c28b4f50c534af2b486db40eb2f7
+Signed-off-by: Lan Xiao <Lan.Xiao@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 16 +++++++++++++++-
+ 1 file changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+index 72d1256..8c5f315 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+@@ -279,7 +279,14 @@ static void unpin_pts(struct amdgpu_bo_va *bo_va, struct amdgpu_vm *vm)
+ }
+ }
+
+-
++/**
++ * amdgpu_vm_clear_bo - initially clear the VRAM pages
++ *
++ * @adev: amdgpu_device pointer
++ * @bo: bo to clear
++ * @vm: requested vm
++ * need to reserve bo first before calling it.
++ */
+ static int amdgpu_amdkfd_gpuvm_clear_bo(struct amdgpu_device *adev,
+ struct amdgpu_vm *vm,
+ struct amdgpu_bo *bo)
+@@ -386,7 +393,14 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
+ (*mem)->data2.bo = bo;
+
+ 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);
++ 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 BO object on GTT. ret == %d\n",
+ ret);
+--
+2.7.4
+