From 8920fdc3abe7bbd912558ea5195447335edbfae1 Mon Sep 17 00:00:00 2001 From: Lan Xiao 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 --- 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