drm/amdgpu: miss PRT case when bo update
authorYintian Tao <yttao@amd.com>
Mon, 16 Mar 2020 07:45:58 +0000 (15:45 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 19 Mar 2020 04:03:04 +0000 (00:03 -0400)
Originally, only the PTE valid is taken in consider.
The PRT case is missied when bo update which raise problem.
We need add condition for PRT case.

v2: add PRT condition for amdgpu_vm_bo_update_mapping, too
v3: fix one typo error

Signed-off-by: Yintian Tao <yttao@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

index 870c7fb56b8f966b357ce583257e18386a870df6..6d9252a27916d1ee5f887846e79427cd3ed9b9a2 100644 (file)
@@ -1446,7 +1446,7 @@ static int amdgpu_vm_update_ptes(struct amdgpu_vm_update_params *params,
                uint64_t incr, entry_end, pe_start;
                struct amdgpu_bo *pt;
 
-               if (flags & AMDGPU_PTE_VALID) {
+               if (flags & (AMDGPU_PTE_VALID | AMDGPU_PTE_PRT)) {
                        /* make sure that the page tables covering the
                         * address range are actually allocated
                         */
@@ -1603,7 +1603,7 @@ static int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev,
                goto error_unlock;
        }
 
-       if (flags & AMDGPU_PTE_VALID) {
+       if (flags & (AMDGPU_PTE_VALID | AMDGPU_PTE_PRT)) {
                struct amdgpu_bo *root = vm->root.base.bo;
 
                if (!dma_fence_is_signaled(vm->last_direct))
@@ -1715,7 +1715,7 @@ static int amdgpu_vm_bo_split_mapping(struct amdgpu_device *adev,
                                        AMDGPU_GPU_PAGES_IN_CPU_PAGE;
                        }
 
-               } else if (flags & AMDGPU_PTE_VALID) {
+               } else if (flags & (AMDGPU_PTE_VALID | AMDGPU_PTE_PRT)) {
                        addr += bo_adev->vm_manager.vram_base_offset;
                        addr += pfn << PAGE_SHIFT;
                }