aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1454-drm-amdgpu-clear-bo-at-memory-allocation.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1454-drm-amdgpu-clear-bo-at-memory-allocation.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1454-drm-amdgpu-clear-bo-at-memory-allocation.patch100
1 files changed, 0 insertions, 100 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1454-drm-amdgpu-clear-bo-at-memory-allocation.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1454-drm-amdgpu-clear-bo-at-memory-allocation.patch
deleted file mode 100644
index 23a72920..00000000
--- a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1454-drm-amdgpu-clear-bo-at-memory-allocation.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From a9d8447a8505a836b52d9194a5cff24ce95f301a 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 1454/4131] drm/amdgpu: clear bo at memory allocation
-
-Feature: SWDEV-95685
-
-Change-Id: I46b46fcc6045d1c9ec9734d1321c2bc817700fda
-Signed-off-by: Lan Xiao <Lan.Xiao@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 59 ++++++++++++++++++++++++
- 1 file changed, 59 insertions(+)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-index a094aa4..f80206e5 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-@@ -279,6 +279,55 @@ static void unpin_pts(struct amdgpu_bo_va *bo_va, struct amdgpu_vm *vm)
- }
- }
-
-+
-+static int amdgpu_amdkfd_gpuvm_clear_bo(struct amdgpu_device *adev,
-+ struct amdgpu_vm *vm,
-+ struct amdgpu_bo *bo)
-+{
-+ struct amdgpu_ring *ring;
-+ struct fence *fence = NULL;
-+ struct amdgpu_job *job;
-+ unsigned entries;
-+ uint64_t addr;
-+ int r;
-+
-+ ring = container_of(vm->entity.sched, struct amdgpu_ring, sched);
-+
-+ r = reservation_object_reserve_shared(bo->tbo.resv);
-+ if (r)
-+ return r;
-+
-+ r = ttm_bo_validate(&bo->tbo, &bo->placement, true, false);
-+ if (r)
-+ goto error;
-+
-+ addr = amdgpu_bo_gpu_offset(bo);
-+ entries = amdgpu_bo_size(bo);
-+
-+ r = amdgpu_job_alloc_with_ib(adev, 64, &job);
-+ if (r)
-+ goto error;
-+
-+ amdgpu_emit_fill_buffer(adev, &job->ibs[0], 0, addr, entries);
-+ amdgpu_ring_pad_ib(ring, &job->ibs[0]);
-+
-+ WARN_ON(job->ibs[0].length_dw > 64);
-+ r = amdgpu_job_submit(job, ring, &vm->entity,
-+ AMDGPU_FENCE_OWNER_VM, &fence);
-+ if (r)
-+ goto error_free;
-+
-+ amdgpu_bo_fence(bo, fence, true);
-+ fence_put(fence);
-+ return 0;
-+
-+error_free:
-+ amdgpu_job_free(job);
-+
-+error:
-+ return r;
-+}
-+
- static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
- size_t size, void *vm, struct kgd_mem **mem,
- uint64_t *offset, void **kptr, struct kfd_process_device *pdd,
-@@ -336,6 +385,15 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
- bo->pdd = pdd;
- (*mem)->data2.bo = bo;
-
-+ if (domain == AMDGPU_GEM_DOMAIN_VRAM) {
-+ ret = amdgpu_amdkfd_gpuvm_clear_bo(adev, vm, bo);
-+ if (ret) {
-+ pr_err("amdkfd: Failed to clear BO object on GTT. ret == %d\n",
-+ ret);
-+ goto err_bo_clear;
-+ }
-+ }
-+
- pr_debug("Created BO on GTT with size %zu bytes\n", size);
-
- if (userptr) {
-@@ -397,6 +455,7 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
- if (userptr)
- amdgpu_mn_unregister(bo);
- allocate_mem_set_userptr_failed:
-+err_bo_clear:
- amdgpu_bo_unref(&bo);
- err_bo_create:
- kfree(*mem);
---
-2.7.4
-