diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index 99424cb8020b..89dcb07ab213 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |||
@@ -759,10 +759,11 @@ static void amdgpu_cs_parser_fini(struct amdgpu_cs_parser *parser, int error, bo | |||
759 | amdgpu_bo_unref(&parser->uf_entry.robj); | 759 | amdgpu_bo_unref(&parser->uf_entry.robj); |
760 | } | 760 | } |
761 | 761 | ||
762 | static int amdgpu_bo_vm_update_pte(struct amdgpu_cs_parser *p, | 762 | static int amdgpu_bo_vm_update_pte(struct amdgpu_cs_parser *p) |
763 | struct amdgpu_vm *vm) | ||
764 | { | 763 | { |
765 | struct amdgpu_device *adev = p->adev; | 764 | struct amdgpu_device *adev = p->adev; |
765 | struct amdgpu_fpriv *fpriv = p->filp->driver_priv; | ||
766 | struct amdgpu_vm *vm = &fpriv->vm; | ||
766 | struct amdgpu_bo_va *bo_va; | 767 | struct amdgpu_bo_va *bo_va; |
767 | struct amdgpu_bo *bo; | 768 | struct amdgpu_bo *bo; |
768 | int i, r; | 769 | int i, r; |
@@ -779,6 +780,15 @@ static int amdgpu_bo_vm_update_pte(struct amdgpu_cs_parser *p, | |||
779 | if (r) | 780 | if (r) |
780 | return r; | 781 | return r; |
781 | 782 | ||
783 | r = amdgpu_vm_bo_update(adev, fpriv->prt_va, false); | ||
784 | if (r) | ||
785 | return r; | ||
786 | |||
787 | r = amdgpu_sync_fence(adev, &p->job->sync, | ||
788 | fpriv->prt_va->last_pt_update); | ||
789 | if (r) | ||
790 | return r; | ||
791 | |||
782 | if (amdgpu_sriov_vf(adev)) { | 792 | if (amdgpu_sriov_vf(adev)) { |
783 | struct dma_fence *f; | 793 | struct dma_fence *f; |
784 | bo_va = vm->csa_bo_va; | 794 | bo_va = vm->csa_bo_va; |
@@ -855,7 +865,7 @@ static int amdgpu_cs_ib_vm_chunk(struct amdgpu_device *adev, | |||
855 | if (p->job->vm) { | 865 | if (p->job->vm) { |
856 | p->job->vm_pd_addr = amdgpu_bo_gpu_offset(vm->page_directory); | 866 | p->job->vm_pd_addr = amdgpu_bo_gpu_offset(vm->page_directory); |
857 | 867 | ||
858 | r = amdgpu_bo_vm_update_pte(p, vm); | 868 | r = amdgpu_bo_vm_update_pte(p); |
859 | if (r) | 869 | if (r) |
860 | return r; | 870 | return r; |
861 | } | 871 | } |