On Fri, Jul 02, 2021 at 01:16:42PM +0200, Christian König wrote: > Drivers also need to to sync to the exclusive fence when > a shared one is present. > > Completely untested since the driver won't even compile on !ARM. It's really not that hard to set up a cross-compiler, reasonable distros have that now all packages. Does explain though why you tend to break the arm build with drm-misc patches. Please fix this. > Signed-off-by: Christian König <christian.koenig@xxxxxxx> Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > 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 a94a43de95ef..72a07e311de3 100644 > --- a/drivers/gpu/drm/msm/msm_gem.c > +++ b/drivers/gpu/drm/msm/msm_gem.c > @@ -817,17 +817,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; > > -- > 2.25.1 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch