aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2781-drm-amdgpu-Add-interface-to-alloc-gws-from-amdgpu.patch
diff options
context:
space:
mode:
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.patch78
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
+