aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0912-drm-ttm-allow-reserving-more-than-one-shared-slot-v3.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0912-drm-ttm-allow-reserving-more-than-one-shared-slot-v3.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/0912-drm-ttm-allow-reserving-more-than-one-shared-slot-v3.patch157
1 files changed, 157 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0912-drm-ttm-allow-reserving-more-than-one-shared-slot-v3.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0912-drm-ttm-allow-reserving-more-than-one-shared-slot-v3.patch
new file mode 100644
index 00000000..d215a0a8
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0912-drm-ttm-allow-reserving-more-than-one-shared-slot-v3.patch
@@ -0,0 +1,157 @@
+From 27371f2b87fbbdad51ab7a4e567c24a93c0faf5c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Wed, 19 Sep 2018 16:25:08 +0200
+Subject: [PATCH 0912/2940] drm/ttm: allow reserving more than one shared slot
+ v3
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Let's support simultaneous submissions to multiple engines.
+
+v2: rename the field to num_shared and fix up all users
+v3: rebased
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
+Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>
+Reviewed-by: Huang Rui <ray.huang@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 10 +++++-----
+ drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c | 2 +-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c | 2 +-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 7 +++++--
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 +-
+ 6 files changed, 14 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+index 6871ffe39a1d..3e50a493bffd 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+@@ -539,7 +539,7 @@ static void add_kgd_mem_to_kfd_bo_list(struct kgd_mem *mem,
+ struct amdgpu_bo *bo = mem->bo;
+
+ INIT_LIST_HEAD(&entry->head);
+- entry->shared = true;
++ entry->num_shared = 1;
+ entry->bo = &bo->tbo;
+ mutex_lock(&process_info->lock);
+ if (userptr)
+@@ -680,7 +680,7 @@ static int reserve_bo_and_vm(struct kgd_mem *mem,
+
+ ctx->kfd_bo.priority = 0;
+ ctx->kfd_bo.tv.bo = &bo->tbo;
+- ctx->kfd_bo.tv.shared = true;
++ ctx->kfd_bo.tv.num_shared = 1;
+ ctx->kfd_bo.user_pages = NULL;
+ list_add(&ctx->kfd_bo.tv.head, &ctx->list);
+
+@@ -744,7 +744,7 @@ static int reserve_bo_and_cond_vms(struct kgd_mem *mem,
+
+ ctx->kfd_bo.priority = 0;
+ ctx->kfd_bo.tv.bo = &bo->tbo;
+- ctx->kfd_bo.tv.shared = true;
++ ctx->kfd_bo.tv.num_shared = 1;
+ ctx->kfd_bo.user_pages = NULL;
+ list_add(&ctx->kfd_bo.tv.head, &ctx->list);
+
+@@ -1808,7 +1808,7 @@ static int validate_invalid_user_pages(struct amdkfd_process_info *process_info)
+ validate_list.head) {
+ list_add_tail(&mem->resv_list.head, &resv_list);
+ mem->resv_list.bo = mem->validate_list.bo;
+- mem->resv_list.shared = mem->validate_list.shared;
++ mem->resv_list.num_shared = mem->validate_list.num_shared;
+ }
+
+ /* Reserve all BOs and page tables for validation */
+@@ -2027,7 +2027,7 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence **ef)
+
+ list_add_tail(&mem->resv_list.head, &ctx.list);
+ mem->resv_list.bo = mem->validate_list.bo;
+- mem->resv_list.shared = mem->validate_list.shared;
++ mem->resv_list.num_shared = mem->validate_list.num_shared;
+ }
+
+ ret = ttm_eu_reserve_buffers(&ctx.ticket, &ctx.list,
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
+index 14d2982a47cc..b75d30ee80c6 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
+@@ -118,7 +118,7 @@ int amdgpu_bo_list_create(struct amdgpu_device *adev, struct drm_file *filp,
+ entry->priority = min(info[i].bo_priority,
+ AMDGPU_BO_LIST_MAX_PRIORITY);
+ entry->tv.bo = &bo->tbo;
+- entry->tv.shared = !bo->prime_shared_count;
++ entry->tv.num_shared = !bo->prime_shared_count;
+
+ if (bo->preferred_domains == AMDGPU_GEM_DOMAIN_GDS)
+ list->gds_obj = bo;
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+index 7bdc24c3f8ce..a19786a2136b 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+@@ -51,7 +51,7 @@ static int amdgpu_cs_user_fence_chunk(struct amdgpu_cs_parser *p,
+ bo = amdgpu_bo_ref(gem_to_amdgpu_bo(gobj));
+ p->uf_entry.priority = 0;
+ p->uf_entry.tv.bo = &bo->tbo;
+- p->uf_entry.tv.shared = true;
++ p->uf_entry.tv.num_shared = 1;
+ p->uf_entry.user_pages = NULL;
+
+ drm_gem_object_put_unlocked(gobj);
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c
+index 5b550706ee76..7e22be7ca68a 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c
+@@ -74,7 +74,7 @@ int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm,
+ INIT_LIST_HEAD(&list);
+ INIT_LIST_HEAD(&csa_tv.head);
+ csa_tv.bo = &bo->tbo;
+- csa_tv.shared = true;
++ csa_tv.num_shared = 1;
+
+ list_add(&csa_tv.head, &list);
+ amdgpu_vm_get_pd_bo(vm, &list, &pd);
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+index 1ead54cf5cac..270ca7438f34 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+@@ -199,7 +199,7 @@ void amdgpu_gem_object_close(struct drm_gem_object *obj,
+ INIT_LIST_HEAD(&duplicates);
+
+ tv.bo = &bo->tbo;
+- tv.shared = true;
++ tv.num_shared = 1;
+ list_add(&tv.head, &list);
+
+ amdgpu_vm_get_pd_bo(vm, &list, &vm_pd);
+@@ -692,7 +692,10 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
+ return -ENOENT;
+ abo = gem_to_amdgpu_bo(gobj);
+ tv.bo = &abo->tbo;
+- tv.shared = !!(abo->flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID);
++ if (abo->flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID)
++ tv.num_shared = 1;
++ else
++ tv.num_shared = 0;
+ list_add(&tv.head, &list);
+ } else {
+ gobj = NULL;
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+index 3021e097a10b..bf7037fb4162 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+@@ -617,7 +617,7 @@ void amdgpu_vm_get_pd_bo(struct amdgpu_vm *vm,
+ {
+ entry->priority = 0;
+ entry->tv.bo = &vm->root.base.bo->tbo;
+- entry->tv.shared = true;
++ entry->tv.num_shared = 1;
+ entry->user_pages = NULL;
+ list_add(&entry->tv.head, validated);
+ }
+--
+2.17.1
+