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