diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2781-drm-amdgpu-Add-interface-to-alloc-gws-from-amdgpu.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2781-drm-amdgpu-Add-interface-to-alloc-gws-from-amdgpu.patch | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2781-drm-amdgpu-Add-interface-to-alloc-gws-from-amdgpu.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2781-drm-amdgpu-Add-interface-to-alloc-gws-from-amdgpu.patch new file mode 100644 index 00000000..0ff3e05b --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2781-drm-amdgpu-Add-interface-to-alloc-gws-from-amdgpu.patch @@ -0,0 +1,78 @@ +From b998e318fe21a32b58e2e18f59aed848bc357d89 Mon Sep 17 00:00:00 2001 +From: Oak Zeng <Oak.Zeng@amd.com> +Date: Mon, 6 May 2019 09:48:37 -0500 +Subject: [PATCH 2781/2940] drm/amdgpu: Add interface to alloc gws from amdgpu + +Add amdgpu_amdkfd interface to alloc and free gws +from amdgpu + +Change-Id: I4eb418356e5a6051aa09c5e2c4a454263631d6ab +Signed-off-by: Oak Zeng <Oak.Zeng@amd.com> +Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 35 ++++++++++++++++++++++ + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 2 ++ + 2 files changed, 37 insertions(+) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +index 710f971c2288..f95049702237 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +@@ -349,6 +349,41 @@ void amdgpu_amdkfd_free_gtt_mem(struct kgd_dev *kgd, void *mem_obj) + amdgpu_bo_unref(&(bo)); + } + ++int amdgpu_amdkfd_alloc_gws(struct kgd_dev *kgd, size_t size, ++ void **mem_obj) ++{ ++ struct amdgpu_device *adev = (struct amdgpu_device *)kgd; ++ struct amdgpu_bo *bo = NULL; ++ struct amdgpu_bo_param bp; ++ int r; ++ ++ memset(&bp, 0, sizeof(bp)); ++ bp.size = size; ++ bp.byte_align = 1; ++ bp.domain = AMDGPU_GEM_DOMAIN_GWS; ++ bp.flags = AMDGPU_GEM_CREATE_NO_CPU_ACCESS; ++ bp.type = ttm_bo_type_device; ++ bp.resv = NULL; ++ ++ r = amdgpu_bo_create(adev, &bp, &bo); ++ if (r) { ++ dev_err(adev->dev, ++ "failed to allocate gws BO for amdkfd (%d)\n", r); ++ return r; ++ } ++ ++ *mem_obj = bo; ++ return 0; ++} ++ ++void amdgpu_amdkfd_free_gws(struct kgd_dev *kgd, void *mem_obj) ++{ ++ struct amdgpu_bo *bo = (struct amdgpu_bo *)mem_obj; ++ ++ amdgpu_bo_unref(&bo); ++} ++ ++ + void amdgpu_amdkfd_get_local_mem_info(struct kgd_dev *kgd, + struct kfd_local_mem_info *mem_info) + { +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +index fa01d886d4af..a1d79a223a2a 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +@@ -146,6 +146,8 @@ int amdgpu_amdkfd_alloc_gtt_mem(struct kgd_dev *kgd, size_t size, + void **mem_obj, uint64_t *gpu_addr, + void **cpu_ptr, bool mqd_gfx9); + void amdgpu_amdkfd_free_gtt_mem(struct kgd_dev *kgd, void *mem_obj); ++int amdgpu_amdkfd_alloc_gws(struct kgd_dev *kgd, size_t size, void **mem_obj); ++void amdgpu_amdkfd_free_gws(struct kgd_dev *kgd, void *mem_obj); + void amdgpu_amdkfd_get_local_mem_info(struct kgd_dev *kgd, + struct kfd_local_mem_info *mem_info); + uint64_t amdgpu_amdkfd_get_gpu_clock_counter(struct kgd_dev *kgd); +-- +2.17.1 + |