if (!amdgpu_gmc_vram_full_visible(&adev->gmc) &&
            bo->tbo.resource->mem_type == TTM_PL_VRAM &&
-           bo->tbo.resource->start < adev->gmc.visible_vram_size >> PAGE_SHIFT)
+           amdgpu_bo_in_cpu_visible_vram(bo))
                amdgpu_cs_report_moved_bytes(adev, ctx.bytes_moved,
                                             ctx.bytes_moved);
        else
        struct amdgpu_device *adev = amdgpu_ttm_adev(bo->bdev);
        struct ttm_operation_ctx ctx = { false, false };
        struct amdgpu_bo *abo = ttm_to_amdgpu_bo(bo);
-       unsigned long offset;
        int r;
 
        /* Remember that this BO was accessed by the CPU */
        if (bo->resource->mem_type != TTM_PL_VRAM)
                return 0;
 
-       offset = bo->resource->start << PAGE_SHIFT;
-       if ((offset + bo->base.size) <= adev->gmc.visible_vram_size)
+       if (amdgpu_bo_in_cpu_visible_vram(abo))
                return 0;
 
        /* Can't move a pinned BO to visible VRAM */
        else if (unlikely(r))
                return VM_FAULT_SIGBUS;
 
-       offset = bo->resource->start << PAGE_SHIFT;
        /* this should never happen */
        if (bo->resource->mem_type == TTM_PL_VRAM &&
-           (offset + bo->base.size) > adev->gmc.visible_vram_size)
+           !amdgpu_bo_in_cpu_visible_vram(abo))
                return VM_FAULT_SIGBUS;
 
        ttm_bo_move_to_lru_tail_unlocked(bo);