On 2017å¹´12æ??09æ?¥ 00:41, Christian König wrote: > That doesn't hit any more most of the time anyway. agree, there is little chance that two PDBs are continue, Reviewed-by: Chunming Zhou <david1.zhou at amd.com> > > Signed-off-by: Christian König <christian.koenig at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 41 ++++++---------------------------- > 1 file changed, 7 insertions(+), 34 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > index 3ecdbdfb04dd..d15b6edf7cce 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > @@ -1076,8 +1076,7 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev, > struct amdgpu_bo *shadow; > struct amdgpu_ring *ring = NULL; > uint64_t pd_addr, shadow_addr = 0; > - uint64_t last_pde = ~0, last_pt = ~0, last_shadow = ~0; > - unsigned count = 0, pt_idx, ndw = 0; > + unsigned pt_idx, ndw = 0; > struct amdgpu_job *job; > struct amdgpu_pte_update_params params; > struct dma_fence *fence = NULL; > @@ -1149,41 +1148,15 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev, > > parent->entries[pt_idx].addr = pt | AMDGPU_PTE_VALID; > > - pde = pd_addr + pt_idx * 8; > incr = amdgpu_bo_size(bo); > - if (((last_pde + 8 * count) != pde) || > - ((last_pt + incr * count) != pt) || > - (count == AMDGPU_VM_MAX_UPDATE_SIZE)) { > - > - if (count) { > - if (shadow) > - params.func(¶ms, > - last_shadow, > - last_pt, count, > - incr, > - AMDGPU_PTE_VALID); > - > - params.func(¶ms, last_pde, > - last_pt, count, incr, > - AMDGPU_PTE_VALID); > - } > - > - count = 1; > - last_pde = pde; > - last_shadow = shadow_addr + pt_idx * 8; > - last_pt = pt; > - } else { > - ++count; > + if (shadow) { > + pde = shadow_addr + pt_idx * 8; > + params.func(¶ms, pde, pt, 1, incr, > + AMDGPU_PTE_VALID); > } > - } > > - if (count) { > - if (vm->root.base.bo->shadow) > - params.func(¶ms, last_shadow, last_pt, > - count, incr, AMDGPU_PTE_VALID); > - > - params.func(¶ms, last_pde, last_pt, > - count, incr, AMDGPU_PTE_VALID); > + pde = pd_addr + pt_idx * 8; > + params.func(¶ms, pde, pt, 1, incr, AMDGPU_PTE_VALID); > } > > if (!vm->use_cpu_for_update) {