Good catch, Reviewed-by: Chunming Zhou <[email protected]>


On 2017年12月28日 11:17, Emily Deng wrote:
The amdgpu_vm_frag_ptes will call amdgpu_vm_update_ptes, and for buffer
object that has shadow buffer, need twice commands.

Signed-off-by: Emily Deng <[email protected]>
---
  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 10 ++++++++--
  1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 7fbe971..7eb23b5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -1584,13 +1584,19 @@ static int amdgpu_vm_bo_update_mapping(struct 
amdgpu_device *adev,
           *
           * The second command is for the shadow pagetables.
         */
-       ncmds = ((nptes >> min(adev->vm_manager.block_size, 11u)) + 1) * 2;
+       if (vm->root.base.bo->shadow)
+               ncmds = ((nptes >> min(adev->vm_manager.block_size, 11u)) + 1) 
* 2;
+       else
+               ncmds = ((nptes >> min(adev->vm_manager.block_size, 11u)) + 1);
/* padding, etc. */
        ndw = 64;
/* one PDE write for each huge page */
-       ndw += ((nptes >> adev->vm_manager.block_size) + 1) * 6;
+       if (vm->root.base.bo->shadow)
+               ndw += ((nptes >> adev->vm_manager.block_size) + 1) * 6 * 2;
+       else
+               ndw += ((nptes >> adev->vm_manager.block_size) + 1) * 6;
if (pages_addr) {
                /* copy commands needed */

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to