diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2136-drm-amdgpu-inline-__map_bo_to_kernel.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2136-drm-amdgpu-inline-__map_bo_to_kernel.patch | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2136-drm-amdgpu-inline-__map_bo_to_kernel.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2136-drm-amdgpu-inline-__map_bo_to_kernel.patch new file mode 100644 index 00000000..2f13ec89 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2136-drm-amdgpu-inline-__map_bo_to_kernel.patch @@ -0,0 +1,102 @@ +From b63242ed2396483f29fe9befc25666c43ad04536 Mon Sep 17 00:00:00 2001 +From: Felix Kuehling <Felix.Kuehling@amd.com> +Date: Tue, 31 Oct 2017 13:21:49 -0400 +Subject: [PATCH 2136/4131] drm/amdgpu: inline __map_bo_to_kernel + +This function is only called from one place, so inline it there. This +makes the next change easier. + +Change-Id: I28c6cd6cc68b09521a6a332d830c2b9abe2a995a +Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 66 +++++++++++------------- + 1 file changed, 29 insertions(+), 37 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +index 39b71cd..8deb247 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +@@ -625,40 +625,6 @@ static int init_user_pages(struct kgd_mem *mem, struct mm_struct *mm, + return ret; + } + +-static int __map_bo_to_kernel(struct amdgpu_bo *bo, u32 domain, void **kptr) +-{ +- int ret; +- +- ret = amdgpu_bo_reserve(bo, true); +- if (ret) { +- pr_err("Failed to reserve bo. ret %d\n", ret); +- return ret; +- } +- +- ret = amdgpu_bo_pin(bo, domain, NULL); +- if (ret) { +- pr_err("Failed to pin bo. ret %d\n", ret); +- goto pin_failed; +- } +- +- ret = amdgpu_bo_kmap(bo, kptr); +- if (ret) { +- pr_err("Failed to map bo to kernel. ret %d\n", ret); +- goto kmap_failed; +- } +- +- amdgpu_bo_unreserve(bo); +- +- return ret; +- +-kmap_failed: +- amdgpu_bo_unpin(bo); +-pin_failed: +- amdgpu_bo_unreserve(bo); +- +- return ret; +-} +- + static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va, + uint64_t size, void *vm, struct kgd_mem **mem, + uint64_t *offset, u32 domain, u64 flags, +@@ -1679,10 +1645,36 @@ int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct kgd_dev *kgd, + + list_del_init(&mem->validate_list.head); + +- ret = __map_bo_to_kernel(bo, AMDGPU_GEM_DOMAIN_GTT, kptr); +- if (!ret) +- mem->kptr = *kptr; ++ ret = amdgpu_bo_reserve(bo, true); ++ if (ret) { ++ pr_err("Failed to reserve bo. ret %d\n", ret); ++ goto bo_reserve_failed; ++ } ++ ++ ret = amdgpu_bo_pin(bo, AMDGPU_GEM_DOMAIN_GTT, NULL); ++ if (ret) { ++ pr_err("Failed to pin bo. ret %d\n", ret); ++ goto pin_failed; ++ } ++ ++ ret = amdgpu_bo_kmap(bo, kptr); ++ if (ret) { ++ pr_err("Failed to map bo to kernel. ret %d\n", ret); ++ goto kmap_failed; ++ } + ++ amdgpu_bo_unreserve(bo); ++ ++ mem->kptr = *kptr; ++ ++ mutex_unlock(&mem->process_info->lock); ++ return 0; ++ ++kmap_failed: ++ amdgpu_bo_unpin(bo); ++pin_failed: ++ amdgpu_bo_unreserve(bo); ++bo_reserve_failed: + mutex_unlock(&mem->process_info->lock); + + return ret; +-- +2.7.4 + |