From: Jerome Glisse <jglisse@xxxxxxxxxx> Allow caller of radeon_vm_bo_update_pte to get the virtual bo offset. Signed-off-by: Jerome Glisse <jglisse@xxxxxxxxxx> --- drivers/gpu/drm/radeon/radeon.h | 3 ++- drivers/gpu/drm/radeon/radeon_cs.c | 2 +- drivers/gpu/drm/radeon/radeon_gart.c | 11 ++++++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 2aa0dfa..dc51ee9 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -1794,7 +1794,8 @@ void radeon_vm_unbind(struct radeon_device *rdev, struct radeon_vm *vm); int radeon_vm_bo_update_pte(struct radeon_device *rdev, struct radeon_vm *vm, struct radeon_bo *bo, - struct ttm_mem_reg *mem); + struct ttm_mem_reg *mem, + uint64_t *vm_offset); void radeon_vm_bo_invalidate(struct radeon_device *rdev, struct radeon_bo *bo); int radeon_vm_bo_add(struct radeon_device *rdev, diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index c7d64a7..e86907a 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c @@ -386,7 +386,7 @@ static int radeon_bo_vm_update_pte(struct radeon_cs_parser *parser, list_for_each_entry(lobj, &parser->validated, tv.head) { bo = lobj->bo; - r = radeon_vm_bo_update_pte(parser->rdev, vm, bo, &bo->tbo.mem); + r = radeon_vm_bo_update_pte(parser->rdev, vm, bo, &bo->tbo.mem, NULL); if (r) { return r; } diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c index 8e9ef34..f91a95d 100644 --- a/drivers/gpu/drm/radeon/radeon_gart.c +++ b/drivers/gpu/drm/radeon/radeon_gart.c @@ -433,7 +433,7 @@ retry_id: vm->id = id; list_add_tail(&vm->list, &rdev->vm_manager.lru_vm); return radeon_vm_bo_update_pte(rdev, vm, rdev->ring_tmp_bo.bo, - &rdev->ring_tmp_bo.bo->tbo.mem); + &rdev->ring_tmp_bo.bo->tbo.mem, NULL); } /* object have to be reserved */ @@ -540,7 +540,8 @@ static u64 radeon_vm_get_addr(struct radeon_device *rdev, int radeon_vm_bo_update_pte(struct radeon_device *rdev, struct radeon_vm *vm, struct radeon_bo *bo, - struct ttm_mem_reg *mem) + struct ttm_mem_reg *mem, + uint64_t *vm_offset) { struct radeon_bo_va *bo_va; unsigned ngpu_pages, i; @@ -560,6 +561,10 @@ int radeon_vm_bo_update_pte(struct radeon_device *rdev, if (bo_va->valid) return 0; + if (vm_offset) { + *vm_offset = bo_va->soffset; + } + ngpu_pages = radeon_bo_ngpu_pages(bo); bo_va->flags &= ~RADEON_VM_PAGE_VALID; bo_va->flags &= ~RADEON_VM_PAGE_SYSTEM; @@ -597,7 +602,7 @@ int radeon_vm_bo_rmv(struct radeon_device *rdev, mutex_lock(&vm->mutex); radeon_mutex_lock(&rdev->cs_mutex); - radeon_vm_bo_update_pte(rdev, vm, bo, NULL); + radeon_vm_bo_update_pte(rdev, vm, bo, NULL, NULL); radeon_mutex_unlock(&rdev->cs_mutex); list_del(&bo_va->vm_list); mutex_unlock(&vm->mutex); -- 1.7.7.6 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel