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