diff options
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.patch | 160 |
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 + |