Reviewed-by: xinhui pan <xinhui.pan@xxxxxxx> > 2020年9月3日 17:03,Christian König <ckoenig.leichtzumerken@xxxxxxxxx> 写道: > > Calculate the correct value for max_entries or we might run after the > page_address array. > > v2: Xinhui pointed out we don't need the shift > v3: use local copy of start and simplify some calculation > v4: fix the case that we map less VA range than BO size > > Signed-off-by: Christian König <christian.koenig@xxxxxxx> > Fixes: 1e691e244487 drm/amdgpu: stop allocating dummy GTT nodes > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > index 8bc2253939be..d6dcd58a8f1a 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > @@ -1691,13 +1691,13 @@ static int amdgpu_vm_bo_split_mapping(struct amdgpu_device *adev, > uint64_t max_entries; > uint64_t addr, last; > > + max_entries = mapping->last - start + 1; > if (nodes) { > addr = nodes->start << PAGE_SHIFT; > - max_entries = (nodes->size - pfn) * > - AMDGPU_GPU_PAGES_IN_CPU_PAGE; > + max_entries = min((nodes->size - pfn) * > + AMDGPU_GPU_PAGES_IN_CPU_PAGE, max_entries); > } else { > addr = 0; > - max_entries = S64_MAX; > } > > if (pages_addr) { > @@ -1727,7 +1727,7 @@ static int amdgpu_vm_bo_split_mapping(struct amdgpu_device *adev, > addr += pfn << PAGE_SHIFT; > } > > - last = min((uint64_t)mapping->last, start + max_entries - 1); > + last = start + max_entries - 1; > r = amdgpu_vm_bo_update_mapping(adev, vm, false, false, resv, > start, last, flags, addr, > dma_addr, fence); > -- > 2.17.1 > _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx