Message ID | 20210708173754.3877540-17-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/sched dependency tracking and dma-resv fixes | expand |
Am 08.07.21 um 19:37 schrieb Daniel Vetter: > From: Christian König <ckoenig.leichtzumerken@gmail.com> > > Drivers also need to to sync to the exclusive fence when > a shared one is present. > > Signed-off-by: Christian König <christian.koenig@amd.com> > [danvet: Not that hard to compile-test on arm ...] > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: Rob Clark <robdclark@gmail.com> > Cc: Sean Paul <sean@poorly.run> > Cc: linux-arm-msm@vger.kernel.org > Cc: freedreno@lists.freedesktop.org Wondering a bit why you have that in this patch set now. But any objections that we push this now? Thanks, Christian. > --- > drivers/gpu/drm/msm/msm_gem.c | 16 +++++++--------- > 1 file changed, 7 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c > index 141178754231..d9c4f1deeafb 100644 > --- a/drivers/gpu/drm/msm/msm_gem.c > +++ b/drivers/gpu/drm/msm/msm_gem.c > @@ -812,17 +812,15 @@ int msm_gem_sync_object(struct drm_gem_object *obj, > struct dma_fence *fence; > int i, ret; > > - fobj = dma_resv_shared_list(obj->resv); > - if (!fobj || (fobj->shared_count == 0)) { > - fence = dma_resv_excl_fence(obj->resv); > - /* don't need to wait on our own fences, since ring is fifo */ > - if (fence && (fence->context != fctx->context)) { > - ret = dma_fence_wait(fence, true); > - if (ret) > - return ret; > - } > + fence = dma_resv_excl_fence(obj->resv); > + /* don't need to wait on our own fences, since ring is fifo */ > + if (fence && (fence->context != fctx->context)) { > + ret = dma_fence_wait(fence, true); > + if (ret) > + return ret; > } > > + fobj = dma_resv_shared_list(obj->resv); > if (!exclusive || !fobj) > return 0; >
On Fri, Jul 9, 2021 at 10:48 AM Christian König <ckoenig.leichtzumerken@gmail.com> wrote: > Am 08.07.21 um 19:37 schrieb Daniel Vetter: > > From: Christian König <ckoenig.leichtzumerken@gmail.com> > > > > Drivers also need to to sync to the exclusive fence when > > a shared one is present. > > > > Signed-off-by: Christian König <christian.koenig@amd.com> > > [danvet: Not that hard to compile-test on arm ...] > > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> > > Cc: Rob Clark <robdclark@gmail.com> > > Cc: Sean Paul <sean@poorly.run> > > Cc: linux-arm-msm@vger.kernel.org > > Cc: freedreno@lists.freedesktop.org > > Wondering a bit why you have that in this patch set now. > > But any objections that we push this now? Cover letter of the first one version explained that I just wanted to have all the msm fixes in this series, for completeness. But yeah I thought I put an r-b on your series for this? There was one patch where I was unhappy with the docs, but there's a new patch for that now here. -Daniel > Thanks, > Christian. > > > --- > > drivers/gpu/drm/msm/msm_gem.c | 16 +++++++--------- > > 1 file changed, 7 insertions(+), 9 deletions(-) > > > > diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c > > index 141178754231..d9c4f1deeafb 100644 > > --- a/drivers/gpu/drm/msm/msm_gem.c > > +++ b/drivers/gpu/drm/msm/msm_gem.c > > @@ -812,17 +812,15 @@ int msm_gem_sync_object(struct drm_gem_object *obj, > > struct dma_fence *fence; > > int i, ret; > > > > - fobj = dma_resv_shared_list(obj->resv); > > - if (!fobj || (fobj->shared_count == 0)) { > > - fence = dma_resv_excl_fence(obj->resv); > > - /* don't need to wait on our own fences, since ring is fifo */ > > - if (fence && (fence->context != fctx->context)) { > > - ret = dma_fence_wait(fence, true); > > - if (ret) > > - return ret; > > - } > > + fence = dma_resv_excl_fence(obj->resv); > > + /* don't need to wait on our own fences, since ring is fifo */ > > + if (fence && (fence->context != fctx->context)) { > > + ret = dma_fence_wait(fence, true); > > + if (ret) > > + return ret; > > } > > > > + fobj = dma_resv_shared_list(obj->resv); > > if (!exclusive || !fobj) > > return 0; > > >
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index 141178754231..d9c4f1deeafb 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c @@ -812,17 +812,15 @@ int msm_gem_sync_object(struct drm_gem_object *obj, struct dma_fence *fence; int i, ret; - fobj = dma_resv_shared_list(obj->resv); - if (!fobj || (fobj->shared_count == 0)) { - fence = dma_resv_excl_fence(obj->resv); - /* don't need to wait on our own fences, since ring is fifo */ - if (fence && (fence->context != fctx->context)) { - ret = dma_fence_wait(fence, true); - if (ret) - return ret; - } + fence = dma_resv_excl_fence(obj->resv); + /* don't need to wait on our own fences, since ring is fifo */ + if (fence && (fence->context != fctx->context)) { + ret = dma_fence_wait(fence, true); + if (ret) + return ret; } + fobj = dma_resv_shared_list(obj->resv); if (!exclusive || !fobj) return 0;