On Mon, 19 Feb 2018 at 13:58 Christian König <ckoenig.leichtzumerken at gmail. com> wrote: > To be able to use DRI_PRIME with amdgpu and i915 we add all our fences > only as exclusive ones. > > Disable that behavior when sharing between amdgpu itself cause it > hinders concurrent execution. > > Signed-off-by: Christian König <christian.koenig at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c | 31 > ++++++++++++++++++++----------- > 1 file changed, 20 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c > index f6d7f6404a07..8ce74a1d9966 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c > @@ -30,6 +30,8 @@ > #include <drm/amdgpu_drm.h> > #include <linux/dma-buf.h> > > +static const struct dma_buf_ops amdgpu_dmabuf_ops; > + > struct sg_table *amdgpu_gem_prime_get_sg_table(struct drm_gem_object > *obj) > { > struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj); > @@ -129,20 +131,27 @@ static int amdgpu_gem_map_attach(struct dma_buf > *dma_buf, > if (unlikely(r != 0)) > goto error_detach; > > - /* > - * Wait for all shared fences to complete before we switch to > future > - * use of exclusive fence on this prime shared bo. > - */ > - r = reservation_object_wait_timeout_rcu(bo->tbo.resv, true, false, > - MAX_SCHEDULE_TIMEOUT); > - if (unlikely(r < 0)) { > - DRM_DEBUG_PRIME("Fence wait failed: %li\n", r); > - goto error_unreserve; > + > + if (dma_buf->ops != &amdgpu_dmabuf_ops) { > + /* > + * Wait for all shared fences to complete before we switch > to future > + * use of exclusive fence on this prime shared bo. > + */ > + r = reservation_object_wait_timeout_rcu(bo->tbo.resv, > + true, false, > + > MAX_SCHEDULE_TIMEOUT); > + if (unlikely(r < 0)) { > + DRM_DEBUG_PRIME("Fence wait failed: %li\n", r); > + goto error_unreserve; > + } > } > > /* pin buffer into GTT */ > r = amdgpu_bo_pin(bo, AMDGPU_GEM_DOMAIN_GTT, NULL); > - if (likely(r == 0)) > + if (r) > + goto error_unreserve; > + > + if (dma_buf->ops != &amdgpu_dmabuf_ops) > bo->prime_shared_count++; > > error_unreserve: > @@ -166,7 +175,7 @@ static void amdgpu_gem_map_detach(struct dma_buf > *dma_buf, > goto error; > > amdgpu_bo_unpin(bo); > - if (bo->prime_shared_count) > + if (dma_buf->ops != &amdgpu_dmabuf_ops && bo->prime_shared_count) > bo->prime_shared_count--; > amdgpu_bo_unreserve(bo); > > -- > 2.14.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx Hi This patch causes tearing / stuttering on my i915/amdgpu prime setup Reverting this patch and some of "[PATCH 3/3] drm/amdgpu: further mitigate workaround for i915" to get it to compile, gets things working again Sorry for not noticing this sooner Let me know if you'd like me to test any follow up patches Cheers Mike -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20180320/92684256/attachment.html>