aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3969-drm-amdkfd-Move-the-control-stack-on-GFX10-to-usersp.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3969-drm-amdkfd-Move-the-control-stack-on-GFX10-to-usersp.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3969-drm-amdkfd-Move-the-control-stack-on-GFX10-to-usersp.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3969-drm-amdkfd-Move-the-control-stack-on-GFX10-to-usersp.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3969-drm-amdkfd-Move-the-control-stack-on-GFX10-to-usersp.patch
new file mode 100644
index 00000000..313e093f
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3969-drm-amdkfd-Move-the-control-stack-on-GFX10-to-usersp.patch
@@ -0,0 +1,78 @@
+From 95390fb66b10ea4a34b7d88c5a90731565378709 Mon Sep 17 00:00:00 2001
+From: Yong Zhao <Yong.Zhao@amd.com>
+Date: Wed, 25 Sep 2019 14:07:26 -0400
+Subject: [PATCH 3969/4256] drm/amdkfd: Move the control stack on GFX10 to
+ userspace buffer
+
+The GFX10 does not require the control stack to be right after mqd
+buffer any more, so move it back to usersapce allocated CSWR buffer.
+
+Change-Id: I446c9685549a09ac8846a42ee22d86cfb93fd98c
+Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
+Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
+---
+ .../gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c | 37 ++-----------------
+ 1 file changed, 4 insertions(+), 33 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c
+index 29d50d6af9d7..e2fb76247f47 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c
+@@ -69,35 +69,13 @@ static void update_cu_mask(struct mqd_manager *mm, void *mqd,
+ static struct kfd_mem_obj *allocate_mqd(struct kfd_dev *kfd,
+ struct queue_properties *q)
+ {
+- int retval;
+- struct kfd_mem_obj *mqd_mem_obj = NULL;
++ struct kfd_mem_obj *mqd_mem_obj;
+
+- /* From V9, for CWSR, the control stack is located on the next page
+- * boundary after the mqd, we will use the gtt allocation function
+- * instead of sub-allocation function.
+- */
+- if (kfd->cwsr_enabled && (q->type == KFD_QUEUE_TYPE_COMPUTE)) {
+- mqd_mem_obj = kzalloc(sizeof(struct kfd_mem_obj), GFP_NOIO);
+- if (!mqd_mem_obj)
+- return NULL;
+- retval = amdgpu_amdkfd_alloc_gtt_mem(kfd->kgd,
+- ALIGN(q->ctl_stack_size, PAGE_SIZE) +
+- ALIGN(sizeof(struct v10_compute_mqd), PAGE_SIZE),
+- &(mqd_mem_obj->gtt_mem),
+- &(mqd_mem_obj->gpu_addr),
+- (void *)&(mqd_mem_obj->cpu_ptr), true);
+- } else {
+- retval = kfd_gtt_sa_allocate(kfd, sizeof(struct v10_compute_mqd),
+- &mqd_mem_obj);
+- }
+-
+- if (retval) {
+- kfree(mqd_mem_obj);
++ if (kfd_gtt_sa_allocate(kfd, sizeof(struct v10_compute_mqd),
++ &mqd_mem_obj))
+ return NULL;
+- }
+
+ return mqd_mem_obj;
+-
+ }
+
+ static void init_mqd(struct mqd_manager *mm, void **mqd,
+@@ -250,14 +228,7 @@ static int destroy_mqd(struct mqd_manager *mm, void *mqd,
+ static void free_mqd(struct mqd_manager *mm, void *mqd,
+ struct kfd_mem_obj *mqd_mem_obj)
+ {
+- struct kfd_dev *kfd = mm->dev;
+-
+- if (mqd_mem_obj->gtt_mem) {
+- amdgpu_amdkfd_free_gtt_mem(kfd->kgd, mqd_mem_obj->gtt_mem);
+- kfree(mqd_mem_obj);
+- } else {
+- kfd_gtt_sa_free(mm->dev, mqd_mem_obj);
+- }
++ kfd_gtt_sa_free(mm->dev, mqd_mem_obj);
+ }
+
+ static bool is_occupied(struct mqd_manager *mm, void *mqd,
+--
+2.17.1
+