Am 07.09.2017 um 13:23 schrieb Bas Nieuwenhuizen: > When amdgpu_vm_frag_ptes calls amdgpu_vm_update_ptes and the pt > has a shadow PT we mirror all the write to the shadow PT too, which > results in twice the commands. > > Signed-off-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl> Good catch. Patch is Reviewed-by: Christian König <christian.koenig at amd.com> > --- > > The current patch is quite pessimistic, maybe someone familiar with the > code knows a better set of conditions. > > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > index 09811b2b89fe..22f5007d6821 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > @@ -1547,10 +1547,12 @@ static int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev, > nptes = last - start + 1; > > /* > - * reserve space for one command every (1 << BLOCK_SIZE) > + * reserve space for two commands every (1 << BLOCK_SIZE) > * entries or 2k dwords (whatever is smaller) > + * > + * The second command is for the shadow pagetables. > */ > - ncmds = (nptes >> min(adev->vm_manager.block_size, 11u)) + 1; > + ncmds = ((nptes >> min(adev->vm_manager.block_size, 11u)) + 1) * 2; > > /* padding, etc. */ > ndw = 64;