aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/1457-drm-amdgpu-Fix-suspicious-RCU-usage.patch
blob: 444c723367c02512c4fe13479f70d05f22c52b5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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