diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1397-Rework-reserve_bo_and_vms-to-support-a-single-incomi.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1397-Rework-reserve_bo_and_vms-to-support-a-single-incomi.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1397-Rework-reserve_bo_and_vms-to-support-a-single-incomi.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1397-Rework-reserve_bo_and_vms-to-support-a-single-incomi.patch new file mode 100644 index 00000000..4b12c16c --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1397-Rework-reserve_bo_and_vms-to-support-a-single-incomi.patch @@ -0,0 +1,69 @@ +From b5ee6e018120131cb409eda4d6185e7a855308ea Mon Sep 17 00:00:00 2001 +From: Yong Zhao <yong.zhao@amd.com> +Date: Thu, 21 Apr 2016 14:28:40 -0400 +Subject: [PATCH 1397/4131] Rework reserve_bo_and_vms() to support a single + incoming vm + +Change-Id: I02c9a14931160bb42d6f98e0bbb4aa62283d4455 +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 36 +++++++++++++++--------- + 1 file changed, 22 insertions(+), 14 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +index 791e494..4f7219a 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +@@ -469,11 +469,14 @@ static int reserve_bo_and_vms(struct kgd_mem *mem, + ctx->reserved = false; + + ctx->n_vms = 0; +- list_for_each_entry(entry, &mem->data2.bo_va_list, bo_list) { +- if ((vm && vm != entry->bo_va->vm) || +- entry->is_mapped != is_mapped) +- continue; +- ctx->n_vms++; ++ ++ if (vm) ++ ctx->n_vms = 1; ++ else { ++ list_for_each_entry(entry, &mem->data2.bo_va_list, bo_list) { ++ if (entry->is_mapped == is_mapped) ++ ctx->n_vms++; ++ } + } + if (ctx->n_vms == 0) + ctx->vm_pd = NULL; +@@ -484,16 +487,21 @@ static int reserve_bo_and_vms(struct kgd_mem *mem, + return -ENOMEM; + } + +- i = 0; +- list_for_each_entry(entry, &mem->data2.bo_va_list, bo_list) { +- if ((vm && vm != entry->bo_va->vm) || +- entry->is_mapped != is_mapped) +- continue; ++ if (vm) { ++ amdgpu_vm_get_pd_bo(vm, &ctx->list, &ctx->vm_pd[0]); ++ amdgpu_vm_get_pt_bos(vm, &ctx->duplicates); ++ } else { ++ i = 0; ++ list_for_each_entry(entry, &mem->data2.bo_va_list, bo_list) { ++ if (entry->is_mapped != is_mapped) ++ continue; + +- amdgpu_vm_get_pd_bo(entry->bo_va->vm, &ctx->list, +- &ctx->vm_pd[i]); +- amdgpu_vm_get_pt_bos(entry->bo_va->vm, &ctx->duplicates); +- i++; ++ amdgpu_vm_get_pd_bo(entry->bo_va->vm, &ctx->list, ++ &ctx->vm_pd[i]); ++ amdgpu_vm_get_pt_bos(entry->bo_va->vm, ++ &ctx->duplicates); ++ i++; ++ } + } + + ret = ttm_eu_reserve_buffers(&ctx->ticket, &ctx->list, +-- +2.7.4 + |