diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4223-drm-amdgpu-use-amdgpu_bo_param-for-amdgpu_bo_create-.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/4223-drm-amdgpu-use-amdgpu_bo_param-for-amdgpu_bo_create-.patch | 487 |
1 files changed, 487 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4223-drm-amdgpu-use-amdgpu_bo_param-for-amdgpu_bo_create-.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4223-drm-amdgpu-use-amdgpu_bo_param-for-amdgpu_bo_create-.patch new file mode 100644 index 00000000..e538006e --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4223-drm-amdgpu-use-amdgpu_bo_param-for-amdgpu_bo_create-.patch @@ -0,0 +1,487 @@ +From 55dbe1d69907ccd1e0eb062c787767117398a02f Mon Sep 17 00:00:00 2001 +From: Chunming Zhou <david1.zhou@amd.com> +Date: Mon, 16 Apr 2018 18:27:50 +0800 +Subject: [PATCH 4223/5725] drm/amdgpu: use amdgpu_bo_param for + amdgpu_bo_create v2 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +After that, we can easily add new parameter when need. + +v2: +a) rebase. +b) Initialize struct amdgpu_bo_param, future new +member could only be used in some one case, but all member +should have its own initial value. + +Change-Id: I6e80039c3801f163129ecc605d931483fdbc91db +Signed-off-by: Chunming Zhou <david1.zhou@amd.com> +Reviewed-by: Huang Rui <ray.huang@amd.com> (v1) +Reviewed-by: Christian König <christian.koenig@amd.com> +Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com> +Signed-off-by: Kalyan Alle <kalyan.alle@amd.com> +Cc: christian.koenig@amd.com +Cc: Felix.Kuehling@amd.com + +Conflicts: + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c + drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c + drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 14 ++++-- + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 14 ++++-- + drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c | 15 ++++-- + drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c | 17 ++++--- + drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 13 ++++-- + drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 59 ++++++++++++------------ + drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 6 +-- + drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c | 12 +++-- + drivers/gpu/drm/amd/amdgpu/amdgpu_test.c | 18 +++++--- + drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 15 ++++-- + drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 26 ++++++++--- + 11 files changed, 132 insertions(+), 77 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +index bb1e7d0..99ef4ee 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +@@ -282,13 +282,19 @@ int alloc_gtt_mem(struct kgd_dev *kgd, size_t size, + { + struct amdgpu_device *adev = (struct amdgpu_device *)kgd; + struct amdgpu_bo *bo = NULL; ++ struct amdgpu_bo_param bp; + int r; + uint64_t gpu_addr_tmp = 0; + void *cpu_ptr_tmp = NULL; +- +- r = amdgpu_bo_create(adev, size, PAGE_SIZE, AMDGPU_GEM_DOMAIN_GTT, +- AMDGPU_GEM_CREATE_CPU_GTT_USWC, ttm_bo_type_kernel, +- NULL, &bo); ++ ++ memset(&bp, 0, sizeof(bp)); ++ bp.size = size; ++ bp.byte_align = PAGE_SIZE; ++ bp.domain = AMDGPU_GEM_DOMAIN_GTT; ++ bp.flags = AMDGPU_GEM_CREATE_CPU_GTT_USWC; ++ bp.type = ttm_bo_type_kernel; ++ bp.resv = NULL; ++ r = amdgpu_bo_create(adev, &bp, &bo); + if (r) { + dev_err(adev->dev, + "failed to allocate BO for amdkfd (%d)\n", r); +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +index 90e98c9..11165a7 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +@@ -1177,6 +1177,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( + uint64_t user_addr = 0; + enum ttm_bo_type bo_type = ttm_bo_type_device; + struct amdgpu_bo *bo; ++ struct amdgpu_bo_param bp; + int byte_align; + u32 domain, alloc_domain; + u64 alloc_flags; +@@ -1269,11 +1270,14 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( + pr_debug("\tcreate BO VA 0x%llx size 0x%llx domain %s\n", + va, size, domain_string(alloc_domain)); + +- /* Allocate buffer object. Userptr objects need to start out +- * in the CPU domain, get moved to GTT when pinned. +- */ +- ret = amdgpu_bo_create(adev, size, byte_align, +- alloc_domain, alloc_flags, bo_type, NULL, &bo); ++ memset(&bp, 0, sizeof(bp)); ++ bp.size = size; ++ bp.byte_align = byte_align; ++ bp.domain = alloc_domain; ++ bp.flags = alloc_flags; ++ bp.type = bo_type; ++ bp.resv = NULL; ++ ret = amdgpu_bo_create(adev, &bp, &bo); + if (ret) { + pr_debug("Failed to create BO on domain %s. ret %d\n", + domain_string(alloc_domain), ret); +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c +index 02b849b..19cfff3 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c +@@ -75,13 +75,20 @@ static void amdgpu_benchmark_move(struct amdgpu_device *adev, unsigned size, + { + struct amdgpu_bo *dobj = NULL; + struct amdgpu_bo *sobj = NULL; ++ struct amdgpu_bo_param bp; + uint64_t saddr, daddr; + int r, n; + int time; + ++ memset(&bp, 0, sizeof(bp)); ++ bp.size = size; ++ bp.byte_align = PAGE_SIZE; ++ bp.domain = sdomain; ++ bp.flags = 0; ++ bp.type = ttm_bo_type_kernel; ++ bp.resv = NULL; + n = AMDGPU_BENCHMARK_ITERATIONS; +- r = amdgpu_bo_create(adev, size, PAGE_SIZE,sdomain, 0, +- ttm_bo_type_kernel, NULL, &sobj); ++ r = amdgpu_bo_create(adev, &bp, &sobj); + if (r) { + goto out_cleanup; + } +@@ -93,8 +100,8 @@ static void amdgpu_benchmark_move(struct amdgpu_device *adev, unsigned size, + if (r) { + goto out_cleanup; + } +- r = amdgpu_bo_create(adev, size, PAGE_SIZE, ddomain, 0, +- ttm_bo_type_kernel, NULL, &dobj); ++ bp.domain = ddomain; ++ r = amdgpu_bo_create(adev, &bp, &dobj); + if (r) { + goto out_cleanup; + } +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c +index cf0f186..17d6b9f 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c +@@ -113,12 +113,17 @@ int amdgpu_gart_table_vram_alloc(struct amdgpu_device *adev) + int r; + + if (adev->gart.robj == NULL) { +- r = amdgpu_bo_create(adev, adev->gart.table_size, PAGE_SIZE, +- AMDGPU_GEM_DOMAIN_VRAM, +- AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | +- AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS, +- ttm_bo_type_kernel, NULL, +- &adev->gart.robj); ++ struct amdgpu_bo_param bp; ++ ++ memset(&bp, 0, sizeof(bp)); ++ bp.size = adev->gart.table_size; ++ bp.byte_align = PAGE_SIZE; ++ bp.domain = AMDGPU_GEM_DOMAIN_VRAM; ++ bp.flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | ++ AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; ++ bp.type = ttm_bo_type_kernel; ++ bp.resv = NULL; ++ r = amdgpu_bo_create(adev, &bp, &adev->gart.robj); + if (r) { + return r; + } +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +index fb95cba..f1031f4 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +@@ -58,8 +58,10 @@ int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size, + struct amdgpu_bo *robj; + struct amdgpu_bo *bo; + unsigned long max_size; ++ struct amdgpu_bo_param bp; + int r; +- ++ ++ memset(&bp, 0, sizeof(bp)); + *obj = NULL; + /* At least align on page size */ + if (alignment < PAGE_SIZE) { +@@ -83,9 +85,14 @@ int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size, + } + } + ++ bp.size = size; ++ bp.byte_align = alignment; ++ bp.type = type; ++ bp.resv = resv; + retry: +- r = amdgpu_bo_create(adev, size, alignment, initial_domain, +- flags, type, resv, &bo); ++ bp.flags = flags; ++ bp.domain = initial_domain; ++ r = amdgpu_bo_create(adev, &bp, &bo); + if (r) { + if (r != -ERESTARTSYS) { + if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) { +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +index 4c29d69..b68f2b8 100755 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +@@ -214,14 +214,21 @@ int amdgpu_bo_create_reserved(struct amdgpu_device *adev, + u32 domain, struct amdgpu_bo **bo_ptr, + u64 *gpu_addr, void **cpu_addr) + { ++ struct amdgpu_bo_param bp; + bool free = false; + int r; + ++ memset(&bp, 0, sizeof(bp)); ++ bp.size = size; ++ bp.byte_align = align; ++ bp.domain = domain; ++ bp.flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | ++ AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; ++ bp.type = ttm_bo_type_kernel; ++ bp.resv = NULL; ++ + if (!*bo_ptr) { +- r = amdgpu_bo_create(adev, size, align, domain, +- AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | +- AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS, +- ttm_bo_type_kernel, NULL, bo_ptr); ++ r = amdgpu_bo_create(adev, &bp, bo_ptr); + if (r) { + dev_err(adev->dev, "(%d) failed to allocate kernel bo\n", + r); +@@ -511,20 +518,21 @@ static int amdgpu_bo_create_shadow(struct amdgpu_device *adev, + unsigned long size, int byte_align, + struct amdgpu_bo *bo) + { +- struct amdgpu_bo_param bp = { +- .size = size, +- .byte_align = byte_align, +- .domain = AMDGPU_GEM_DOMAIN_GTT, +- .flags = AMDGPU_GEM_CREATE_CPU_GTT_USWC | +- AMDGPU_GEM_CREATE_SHADOW, +- .type = ttm_bo_type_kernel, +- .resv = bo->tbo.resv +- }; ++ struct amdgpu_bo_param bp; + int r; + + if (bo->shadow) + return 0; + ++ memset(&bp, 0, sizeof(bp)); ++ bp.size = size; ++ bp.byte_align = byte_align; ++ bp.domain = AMDGPU_GEM_DOMAIN_GTT; ++ bp.flags = AMDGPU_GEM_CREATE_CPU_GTT_USWC | ++ AMDGPU_GEM_CREATE_SHADOW; ++ bp.type = ttm_bo_type_kernel; ++ bp.resv = bo->tbo.resv; ++ + r = amdgpu_bo_do_create(adev, &bp, &bo->shadow); + + if (!r) { +@@ -537,35 +545,26 @@ static int amdgpu_bo_create_shadow(struct amdgpu_device *adev, + return r; + } + +-int amdgpu_bo_create(struct amdgpu_device *adev, unsigned long size, +- int byte_align, u32 domain, +- u64 flags, enum ttm_bo_type type, +- struct reservation_object *resv, ++int amdgpu_bo_create(struct amdgpu_device *adev, ++ struct amdgpu_bo_param *bp, + struct amdgpu_bo **bo_ptr) + { +- struct amdgpu_bo_param bp = { +- .size = size, +- .byte_align = byte_align, +- .domain = domain, +- .flags = flags & ~AMDGPU_GEM_CREATE_SHADOW, +- .type = type, +- .resv = resv +- }; ++ u64 flags = bp->flags; + int r; + +- r = amdgpu_bo_do_create(adev, &bp, bo_ptr); +- ++ bp->flags = bp->flags & ~AMDGPU_GEM_CREATE_SHADOW; ++ r = amdgpu_bo_do_create(adev, bp, bo_ptr); + if (r) + return r; + + if ((flags & AMDGPU_GEM_CREATE_SHADOW) && amdgpu_need_backup(adev)) { +- if (!resv) ++ if (!bp->resv) + WARN_ON(reservation_object_lock((*bo_ptr)->tbo.resv, + NULL)); + +- r = amdgpu_bo_create_shadow(adev, size, byte_align, (*bo_ptr)); ++ r = amdgpu_bo_create_shadow(adev, bp->size, bp->byte_align, (*bo_ptr)); + +- if (!resv) ++ if (!bp->resv) + reservation_object_unlock((*bo_ptr)->tbo.resv); + + if (r) +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h +index 7abf76b..951af42 100755 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h +@@ -244,10 +244,8 @@ static inline bool amdgpu_bo_explicit_sync(struct amdgpu_bo *bo) + return bo->flags & AMDGPU_GEM_CREATE_EXPLICIT_SYNC; + } + +-int amdgpu_bo_create(struct amdgpu_device *adev, unsigned long size, +- int byte_align, u32 domain, +- u64 flags, enum ttm_bo_type type, +- struct reservation_object *resv, ++int amdgpu_bo_create(struct amdgpu_device *adev, ++ struct amdgpu_bo_param *bp, + struct amdgpu_bo **bo_ptr); + int amdgpu_bo_create_reserved(struct amdgpu_device *adev, + unsigned long size, int align, +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c +index 716f880..a7a0f0c 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c +@@ -100,12 +100,18 @@ amdgpu_gem_prime_import_sg_table(struct drm_device *dev, + struct reservation_object *resv = attach->dmabuf->resv; + struct amdgpu_device *adev = dev->dev_private; + struct amdgpu_bo *bo; ++ struct amdgpu_bo_param bp; + int ret; + ++ memset(&bp, 0, sizeof(bp)); ++ bp.size = attach->dmabuf->size; ++ bp.byte_align = PAGE_SIZE; ++ bp.domain = AMDGPU_GEM_DOMAIN_CPU; ++ bp.flags = 0; ++ bp.type = ttm_bo_type_sg; ++ bp.resv = resv; + ww_mutex_lock(&resv->lock, NULL); +- ret = amdgpu_bo_create(adev, attach->dmabuf->size, PAGE_SIZE, +- AMDGPU_GEM_DOMAIN_CPU, 0, ttm_bo_type_sg, +- resv, &bo); ++ ret = amdgpu_bo_create(adev, &bp, &bo); + if (ret) + goto error; + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_test.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_test.c +index 2dbe875..d167e8a 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_test.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_test.c +@@ -33,6 +33,7 @@ static void amdgpu_do_test_moves(struct amdgpu_device *adev) + struct amdgpu_ring *ring = adev->mman.buffer_funcs_ring; + struct amdgpu_bo *vram_obj = NULL; + struct amdgpu_bo **gtt_obj = NULL; ++ struct amdgpu_bo_param bp; + uint64_t gart_addr, vram_addr; + unsigned n, size; + int i, r; +@@ -58,9 +59,15 @@ static void amdgpu_do_test_moves(struct amdgpu_device *adev) + r = 1; + goto out_cleanup; + } +- +- r = amdgpu_bo_create(adev, size, PAGE_SIZE, AMDGPU_GEM_DOMAIN_VRAM, 0, +- ttm_bo_type_kernel, NULL, &vram_obj); ++ memset(&bp, 0, sizeof(bp)); ++ bp.size = size; ++ bp.byte_align = PAGE_SIZE; ++ bp.domain = AMDGPU_GEM_DOMAIN_VRAM; ++ bp.flags = 0; ++ bp.type = ttm_bo_type_kernel; ++ bp.resv = NULL; ++ ++ r = amdgpu_bo_create(adev, &bp, &vram_obj); + if (r) { + DRM_ERROR("Failed to create VRAM object\n"); + goto out_cleanup; +@@ -79,9 +86,8 @@ static void amdgpu_do_test_moves(struct amdgpu_device *adev) + void **vram_start, **vram_end; + struct dma_fence *fence = NULL; + +- r = amdgpu_bo_create(adev, size, PAGE_SIZE, +- AMDGPU_GEM_DOMAIN_GTT, 0, +- ttm_bo_type_kernel, NULL, gtt_obj + i); ++ bp.domain = AMDGPU_GEM_DOMAIN_GTT; ++ r = amdgpu_bo_create(adev, &bp, gtt_obj + i); + if (r) { + DRM_ERROR("Failed to create GTT object %d\n", i); + goto out_lclean; +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +index 2f8d89f..80c4771 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +@@ -1517,6 +1517,7 @@ static void amdgpu_ttm_fw_reserve_vram_fini(struct amdgpu_device *adev) + static int amdgpu_ttm_fw_reserve_vram_init(struct amdgpu_device *adev) + { + struct ttm_operation_ctx ctx = { false, false }; ++ struct amdgpu_bo_param bp; + int r = 0; + int i; + u64 vram_size = adev->gmc.visible_vram_size; +@@ -1524,17 +1525,21 @@ static int amdgpu_ttm_fw_reserve_vram_init(struct amdgpu_device *adev) + u64 size = adev->fw_vram_usage.size; + struct amdgpu_bo *bo; + ++ memset(&bp, 0, sizeof(bp)); ++ bp.size = adev->fw_vram_usage.size; ++ bp.byte_align = PAGE_SIZE; ++ bp.domain = AMDGPU_GEM_DOMAIN_VRAM; ++ bp.flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | ++ AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; ++ bp.type = ttm_bo_type_kernel; ++ bp.resv = NULL; + adev->fw_vram_usage.va = NULL; + adev->fw_vram_usage.reserved_bo = NULL; + + if (adev->fw_vram_usage.size > 0 && + adev->fw_vram_usage.size <= vram_size) { + +- r = amdgpu_bo_create(adev, adev->fw_vram_usage.size, PAGE_SIZE, +- AMDGPU_GEM_DOMAIN_VRAM, +- AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | +- AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS, +- ttm_bo_type_kernel, NULL, ++ r = amdgpu_bo_create(adev, &bp, + &adev->fw_vram_usage.reserved_bo); + if (r) + goto error_create; +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +index 93f929a..d693066 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +@@ -412,11 +412,16 @@ static int amdgpu_vm_alloc_levels(struct amdgpu_device *adev, + struct amdgpu_bo *pt; + + if (!entry->base.bo) { +- r = amdgpu_bo_create(adev, +- amdgpu_vm_bo_size(adev, level), +- AMDGPU_GPU_PAGE_SIZE, +- AMDGPU_GEM_DOMAIN_VRAM, flags, +- ttm_bo_type_kernel, resv, &pt); ++ struct amdgpu_bo_param bp; ++ ++ memset(&bp, 0, sizeof(bp)); ++ bp.size = amdgpu_vm_bo_size(adev, level); ++ bp.byte_align = AMDGPU_GPU_PAGE_SIZE; ++ bp.domain = AMDGPU_GEM_DOMAIN_VRAM; ++ bp.flags = flags; ++ bp.type = ttm_bo_type_kernel; ++ bp.resv = resv; ++ r = amdgpu_bo_create(adev, &bp, &pt); + if (r) + return r; + +@@ -2416,6 +2421,7 @@ static void amdgpu_inc_compute_vms(struct amdgpu_device *adev) + int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm, + int vm_context, unsigned int pasid) + { ++ struct amdgpu_bo_param bp; + const unsigned align = min(AMDGPU_VM_PTB_ALIGN_SIZE, + AMDGPU_VM_PTE_COUNT(adev) * 8); + unsigned ring_instance; +@@ -2470,8 +2476,14 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm, + flags |= AMDGPU_GEM_CREATE_SHADOW; + + size = amdgpu_vm_bo_size(adev, adev->vm_manager.root_level); +- r = amdgpu_bo_create(adev, size, align, AMDGPU_GEM_DOMAIN_VRAM, flags, +- ttm_bo_type_kernel, NULL, &vm->root.base.bo); ++ memset(&bp, 0, sizeof(bp)); ++ bp.size = size; ++ bp.byte_align = align; ++ bp.domain = AMDGPU_GEM_DOMAIN_VRAM; ++ bp.flags = flags; ++ bp.type = ttm_bo_type_kernel; ++ bp.resv = NULL; ++ r = amdgpu_bo_create(adev, &bp, &vm->root.base.bo); + if (r) + goto error_free_sched_entity; + +-- +2.7.4 + |