aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1405-drm-amdgpu-Reconcile-code-to-upstream.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1405-drm-amdgpu-Reconcile-code-to-upstream.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1405-drm-amdgpu-Reconcile-code-to-upstream.patch160
1 files changed, 160 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1405-drm-amdgpu-Reconcile-code-to-upstream.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1405-drm-amdgpu-Reconcile-code-to-upstream.patch
new file mode 100644
index 00000000..3b53bbb0
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1405-drm-amdgpu-Reconcile-code-to-upstream.patch
@@ -0,0 +1,160 @@
+From d38ffc74c0d17cff290157b4194c134f2f3ae8eb Mon Sep 17 00:00:00 2001
+From: Kent Russell <kent.russell@amd.com>
+Date: Wed, 18 Jan 2017 12:21:03 -0500
+Subject: [PATCH 1405/4131] drm/amdgpu: Reconcile code to upstream
+
+Replace bo->adev with amdgpu_ttm_adev(bo->tbo.bdev), replace entry.robj
+with bo, remove references to gem_base
+
+Change-Id: Ia215797588ec78070ac1aa904712f46b46535caf
+Signed-off-by: Kent Russell <kent.russell@amd.com>
+Signed-off-by: kalyan alle <kalyan.alle@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 2 +-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 10 +++++-----
+ drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c | 4 ++--
+ drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 9 ++++++++-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 +-
+ 6 files changed, 18 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
+index 5de1ca1..359ca9b 100755
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
+@@ -214,7 +214,7 @@ static void amdgdu_amdkfd_restore_mem_worker(struct work_struct *work)
+
+ mutex_lock(&mem->data2.lock);
+
+- adev = mem->data2.bo->adev;
++ adev = amdgpu_ttm_adev(mem->data2.bo->tbo.bdev);
+ mm = mem->data2.mm;
+
+ /* Restoration may have been canceled by another eviction or
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+index 2826e50..c4ef8ab 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+@@ -240,7 +240,7 @@ static int try_pin_pts(struct amdgpu_bo_va *bo_va, bool resv)
+
+ /* walk over the address space and pin the page tables BOs*/
+ for (pt_idx = start; pt_idx <= last; pt_idx++) {
+- ret = try_pin_bo(vm->page_tables[pt_idx].entry.robj, resv,
++ ret = try_pin_bo(vm->page_tables[pt_idx].bo, resv,
+ AMDGPU_GEM_DOMAIN_VRAM);
+ if (ret != 0) {
+ failed = pt_idx;
+@@ -257,7 +257,7 @@ static int try_pin_pts(struct amdgpu_bo_va *bo_va, bool resv)
+
+ /* walk over the address space and pin the page tables BOs*/
+ for (pt_idx = start; pt_idx <= last; pt_idx++) {
+- ret = try_pin_bo(vm->page_tables[pt_idx].entry.robj, resv,
++ ret = try_pin_bo(vm->page_tables[pt_idx].bo, resv,
+ AMDGPU_GEM_DOMAIN_VRAM);
+ if (ret != 0) {
+ failed = pt_idx;
+@@ -273,7 +273,7 @@ static int try_pin_pts(struct amdgpu_bo_va *bo_va, bool resv)
+ /* Unpin all already pinned BOs*/
+ if (failed > 0) {
+ for (pt_idx = start; pt_idx <= failed - 1; pt_idx++)
+- unpin_bo(vm->page_tables[pt_idx].entry.robj, resv);
++ unpin_bo(vm->page_tables[pt_idx].bo, resv);
+ }
+ return ret;
+ }
+@@ -292,7 +292,7 @@ static void unpin_pts(struct amdgpu_bo_va *bo_va, struct amdgpu_vm *vm,
+
+ /* walk over the address space and unpin the page tables BOs*/
+ for (pt_idx = start; pt_idx <= last; pt_idx++)
+- unpin_bo(vm->page_tables[pt_idx].entry.robj, resv);
++ unpin_bo(vm->page_tables[pt_idx].bo, resv);
+ }
+
+ list_for_each_entry(mapping, &bo_va->invalids, list) {
+@@ -303,7 +303,7 @@ static void unpin_pts(struct amdgpu_bo_va *bo_va, struct amdgpu_vm *vm,
+
+ /* walk over the address space and unpin the page tables BOs*/
+ for (pt_idx = start; pt_idx <= last; pt_idx++)
+- unpin_bo(vm->page_tables[pt_idx].entry.robj, resv);
++ unpin_bo(vm->page_tables[pt_idx].bo, resv);
+ }
+ }
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+index 88ac51c..87d6ff4 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+@@ -1533,7 +1533,7 @@ amdgpu_cs_find_mapping(struct amdgpu_cs_parser *parser,
+ struct amdgpu_bo_list_entry *lobj;
+
+ lobj = &parser->bo_list->array[i];
+- if (!lobj->bo_va || lobj->bo_va->bo->adev != parser->adev)
++ if (!lobj->bo_va || amdgpu_ttm_adev(lobj->bo_va->base.bo->tbo.bdev) != parser->adev)
+ continue;
+
+ list_for_each_entry(mapping, &lobj->bo_va->valids, list) {
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c
+index 87bb00d..40e431a 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c
+@@ -229,7 +229,7 @@ static void amdgpu_mn_invalidate_range_start_hsa(struct mmu_notifier *mn,
+
+ if (amdgpu_ttm_tt_affect_userptr(bo->tbo.ttm,
+ start, end))
+- amdgpu_amdkfd_evict_mem(bo->adev, mem, mm);
++ amdgpu_amdkfd_evict_mem(amdgpu_ttm_adev(bo->tbo.bdev), mem, mm);
+ }
+ }
+ }
+@@ -272,7 +272,7 @@ static void amdgpu_mn_invalidate_range_end_hsa(struct mmu_notifier *mn,
+
+ if (amdgpu_ttm_tt_affect_userptr(bo->tbo.ttm,
+ start, end))
+- amdgpu_amdkfd_schedule_restore_mem(bo->adev,
++ amdgpu_amdkfd_schedule_restore_mem(amdgpu_ttm_adev(bo->tbo.bdev),
+ mem, mm, 1);
+ }
+ }
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+index 7ed9e8b..18750dd 100755
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+@@ -336,6 +336,7 @@ int amdgpu_bo_create_restricted(struct amdgpu_device *adev,
+ struct amdgpu_bo **bo_ptr)
+ {
+ struct amdgpu_bo *bo;
++ struct amdgpu_gem_object *gobj;
+ enum ttm_bo_type type;
+ unsigned long page_align;
+ u64 initial_bytes_moved, bytes_moved;
+@@ -360,7 +361,13 @@ int amdgpu_bo_create_restricted(struct amdgpu_device *adev,
+ bo = kzalloc(sizeof(struct amdgpu_bo), GFP_KERNEL);
+ if (bo == NULL)
+ return -ENOMEM;
+- r = drm_gem_object_init(adev->ddev, &bo->gem_base, size);
++ gobj = kzalloc(sizeof(struct amdgpu_gem_object), GFP_KERNEL);
++ if (unlikely(!gobj)) {
++ amdgpu_bo_unref(&bo);
++ return -ENOMEM;
++ }
++
++ r = drm_gem_object_init(adev->ddev, &gobj->base, size);
+ if (unlikely(r)) {
+ kfree(bo);
+ return r;
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+index 0e77e62..50d1d55 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+@@ -1631,7 +1631,7 @@ static int amdgpu_ttm_bo_access_vram(struct amdgpu_bo *abo,
+ unsigned long offset,
+ void *buf, int len, int write)
+ {
+- struct amdgpu_device *adev = abo->adev;
++ struct amdgpu_device *adev = amdgpu_ttm_adev(abo->tbo.bdev);
+ uint64_t pos = amdgpu_bo_gpu_offset(abo) + offset;
+ uint32_t value = 0;
+ unsigned long flags;
+--
+2.7.4
+