On Fri, Jun 30, 2017 at 7:22 AM, Christian König <deathsimple at vodafone.de> wrote: > From: Christian König <christian.koenig at amd.com> > > This allows us to flush the system VM here. > > Signed-off-by: Christian König <christian.koenig at amd.com> Reviewed-by: Alex Deucher <alexander.deucher at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c | 2 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 4 ++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_test.c | 4 ++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 12 ++++++------ > drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 9 ++++----- > 5 files changed, 15 insertions(+), 16 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c > index 1beae5b..2fb299a 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.c > @@ -40,7 +40,7 @@ static int amdgpu_benchmark_do_move(struct amdgpu_device *adev, unsigned size, > for (i = 0; i < n; i++) { > struct amdgpu_ring *ring = adev->mman.buffer_funcs_ring; > r = amdgpu_copy_buffer(ring, saddr, daddr, size, NULL, &fence, > - false); > + false, false); > if (r) > goto exit_do_move; > r = dma_fence_wait(fence, false); > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > index 8ee6965..c34cf2c 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > @@ -535,7 +535,7 @@ int amdgpu_bo_backup_to_shadow(struct amdgpu_device *adev, > > r = amdgpu_copy_buffer(ring, bo_addr, shadow_addr, > amdgpu_bo_size(bo), resv, fence, > - direct); > + direct, false); > if (!r) > amdgpu_bo_fence(bo, *fence, true); > > @@ -588,7 +588,7 @@ int amdgpu_bo_restore_from_shadow(struct amdgpu_device *adev, > > r = amdgpu_copy_buffer(ring, shadow_addr, bo_addr, > amdgpu_bo_size(bo), resv, fence, > - direct); > + direct, false); > if (!r) > amdgpu_bo_fence(bo, *fence, true); > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_test.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_test.c > index 15510da..d02e611 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_test.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_test.c > @@ -111,7 +111,7 @@ static void amdgpu_do_test_moves(struct amdgpu_device *adev) > amdgpu_bo_kunmap(gtt_obj[i]); > > r = amdgpu_copy_buffer(ring, gtt_addr, vram_addr, > - size, NULL, &fence, false); > + size, NULL, &fence, false, false); > > if (r) { > DRM_ERROR("Failed GTT->VRAM copy %d\n", i); > @@ -156,7 +156,7 @@ static void amdgpu_do_test_moves(struct amdgpu_device *adev) > amdgpu_bo_kunmap(vram_obj); > > r = amdgpu_copy_buffer(ring, vram_addr, gtt_addr, > - size, NULL, &fence, false); > + size, NULL, &fence, false, false); > > if (r) { > DRM_ERROR("Failed VRAM->GTT copy %d\n", i); > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > index e4860ac..bbe1639 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > @@ -318,7 +318,7 @@ static int amdgpu_move_blit(struct ttm_buffer_object *bo, > > r = amdgpu_copy_buffer(ring, old_start, new_start, > cur_pages * PAGE_SIZE, > - bo->resv, &next, false); > + bo->resv, &next, false, false); > if (r) > goto error; > > @@ -1256,12 +1256,11 @@ int amdgpu_mmap(struct file *filp, struct vm_area_struct *vma) > return ttm_bo_mmap(filp, vma, &adev->mman.bdev); > } > > -int amdgpu_copy_buffer(struct amdgpu_ring *ring, > - uint64_t src_offset, > - uint64_t dst_offset, > - uint32_t byte_count, > +int amdgpu_copy_buffer(struct amdgpu_ring *ring, uint64_t src_offset, > + uint64_t dst_offset, uint32_t byte_count, > struct reservation_object *resv, > - struct dma_fence **fence, bool direct_submit) > + struct dma_fence **fence, bool direct_submit, > + bool vm_needs_flush) > { > struct amdgpu_device *adev = ring->adev; > struct amdgpu_job *job; > @@ -1283,6 +1282,7 @@ int amdgpu_copy_buffer(struct amdgpu_ring *ring, > if (r) > return r; > > + job->vm_needs_flush = vm_needs_flush; > if (resv) { > r = amdgpu_sync_resv(adev, &job->sync, resv, > AMDGPU_FENCE_OWNER_UNDEFINED); > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h > index 6bdede8..cd5bbfa 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h > @@ -61,12 +61,11 @@ int amdgpu_gtt_mgr_alloc(struct ttm_mem_type_manager *man, > const struct ttm_place *place, > struct ttm_mem_reg *mem); > > -int amdgpu_copy_buffer(struct amdgpu_ring *ring, > - uint64_t src_offset, > - uint64_t dst_offset, > - uint32_t byte_count, > +int amdgpu_copy_buffer(struct amdgpu_ring *ring, uint64_t src_offset, > + uint64_t dst_offset, uint32_t byte_count, > struct reservation_object *resv, > - struct dma_fence **fence, bool direct_submit); > + struct dma_fence **fence, bool direct_submit, > + bool vm_needs_flush); > int amdgpu_fill_buffer(struct amdgpu_bo *bo, > uint32_t src_data, > struct reservation_object *resv, > -- > 2.7.4 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx