RE: [PATCH 1/4] drm/etnaviv: Use dma_resv locking wrappers
>-Original Message- >From: dri-devel On Behalf Of >Daniel Vetter >Sent: Friday, December 13, 2019 3:08 PM >To: DRI Development >Cc: Daniel Vetter ; Intel Graphics Development >; etna...@lists.freedesktop.org; Russell >King ; Vetter, Daniel > >Subject: Re: [PATCH 1/4] drm/etnaviv: Use dma_resv locking wrappers > >On Mon, Nov 25, 2019 at 10:43:53AM +0100, Daniel Vetter wrote: >> I'll add more fancy logic to them soon, so everyone really has to use >> them. Plus they already provide some nice additional debug >> infrastructure on top of direct ww_mutex usage for the fences tracked >> by dma_resv. >> >> Signed-off-by: Daniel Vetter >> Cc: Lucas Stach >> Cc: Russell King >> Cc: Christian Gmeiner >> Cc: etna...@lists.freedesktop.org > >Ping for some review/acks. > >Thanks, Daniel > >> --- >> drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c | 8 +++- >> 1 file changed, 3 insertions(+), 5 deletions(-) >> >> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c >b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c >> index aa3e4c3b063a..947b21868e72 100644 >> --- a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c >> +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c >> @@ -113,7 +113,7 @@ static void submit_unlock_object(struct >etnaviv_gem_submit *submit, int i) >> if (submit->bos[i].flags & BO_LOCKED) { >> struct drm_gem_object *obj = &submit->bos[i].obj->base; >> >> -ww_mutex_unlock(&obj->resv->lock); >> +dma_resv_unlock(obj->resv); >> submit->bos[i].flags &= ~BO_LOCKED; >> } >> } >> @@ -133,8 +133,7 @@ static int submit_lock_objects(struct >etnaviv_gem_submit *submit, >> contended = i; >> >> if (!(submit->bos[i].flags & BO_LOCKED)) { >> -ret = ww_mutex_lock_interruptible(&obj->resv- >>lock, >> - ticket); >> +ret = dma_resv_lock(obj->resv, ticket); Should this be dma_resv_lock_interruptible()? Mike >> if (ret == -EALREADY) >> DRM_ERROR("BO at index %u already on >submit list\n", >>i); >> @@ -161,8 +160,7 @@ static int submit_lock_objects(struct >etnaviv_gem_submit *submit, >> obj = &submit->bos[contended].obj->base; >> >> /* we lost out in a seqno race, lock and retry.. */ >> -ret = ww_mutex_lock_slow_interruptible(&obj->resv->lock, >> - ticket); >> +ret = dma_resv_lock_slow_interruptible(obj->resv, ticket); >> if (!ret) { >> submit->bos[contended].flags |= BO_LOCKED; >> slow_locked = contended; >> -- >> 2.24.0 >> > >-- >Daniel Vetter >Software Engineer, Intel Corporation >http://blog.ffwll.ch >___ >dri-devel mailing list >dri-devel@lists.freedesktop.org >https://lists.freedesktop.org/mailman/listinfo/dri-devel ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH 1/4] drm/etnaviv: Use dma_resv locking wrappers
On Mon, Nov 25, 2019 at 10:43:53AM +0100, Daniel Vetter wrote: > I'll add more fancy logic to them soon, so everyone really has to use > them. Plus they already provide some nice additional debug > infrastructure on top of direct ww_mutex usage for the fences tracked > by dma_resv. > > Signed-off-by: Daniel Vetter > Cc: Lucas Stach > Cc: Russell King > Cc: Christian Gmeiner > Cc: etna...@lists.freedesktop.org Ping for some review/acks. Thanks, Daniel > --- > drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c | 8 +++- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c > b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c > index aa3e4c3b063a..947b21868e72 100644 > --- a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c > +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c > @@ -113,7 +113,7 @@ static void submit_unlock_object(struct > etnaviv_gem_submit *submit, int i) > if (submit->bos[i].flags & BO_LOCKED) { > struct drm_gem_object *obj = &submit->bos[i].obj->base; > > - ww_mutex_unlock(&obj->resv->lock); > + dma_resv_unlock(obj->resv); > submit->bos[i].flags &= ~BO_LOCKED; > } > } > @@ -133,8 +133,7 @@ static int submit_lock_objects(struct etnaviv_gem_submit > *submit, > contended = i; > > if (!(submit->bos[i].flags & BO_LOCKED)) { > - ret = ww_mutex_lock_interruptible(&obj->resv->lock, > - ticket); > + ret = dma_resv_lock(obj->resv, ticket); > if (ret == -EALREADY) > DRM_ERROR("BO at index %u already on submit > list\n", > i); > @@ -161,8 +160,7 @@ static int submit_lock_objects(struct etnaviv_gem_submit > *submit, > obj = &submit->bos[contended].obj->base; > > /* we lost out in a seqno race, lock and retry.. */ > - ret = ww_mutex_lock_slow_interruptible(&obj->resv->lock, > -ticket); > + ret = dma_resv_lock_slow_interruptible(obj->resv, ticket); > if (!ret) { > submit->bos[contended].flags |= BO_LOCKED; > slow_locked = contended; > -- > 2.24.0 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
[PATCH 1/4] drm/etnaviv: Use dma_resv locking wrappers
I'll add more fancy logic to them soon, so everyone really has to use them. Plus they already provide some nice additional debug infrastructure on top of direct ww_mutex usage for the fences tracked by dma_resv. Signed-off-by: Daniel Vetter Cc: Lucas Stach Cc: Russell King Cc: Christian Gmeiner Cc: etna...@lists.freedesktop.org --- drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c | 8 +++- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c index aa3e4c3b063a..947b21868e72 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c @@ -113,7 +113,7 @@ static void submit_unlock_object(struct etnaviv_gem_submit *submit, int i) if (submit->bos[i].flags & BO_LOCKED) { struct drm_gem_object *obj = &submit->bos[i].obj->base; - ww_mutex_unlock(&obj->resv->lock); + dma_resv_unlock(obj->resv); submit->bos[i].flags &= ~BO_LOCKED; } } @@ -133,8 +133,7 @@ static int submit_lock_objects(struct etnaviv_gem_submit *submit, contended = i; if (!(submit->bos[i].flags & BO_LOCKED)) { - ret = ww_mutex_lock_interruptible(&obj->resv->lock, - ticket); + ret = dma_resv_lock(obj->resv, ticket); if (ret == -EALREADY) DRM_ERROR("BO at index %u already on submit list\n", i); @@ -161,8 +160,7 @@ static int submit_lock_objects(struct etnaviv_gem_submit *submit, obj = &submit->bos[contended].obj->base; /* we lost out in a seqno race, lock and retry.. */ - ret = ww_mutex_lock_slow_interruptible(&obj->resv->lock, - ticket); + ret = dma_resv_lock_slow_interruptible(obj->resv, ticket); if (!ret) { submit->bos[contended].flags |= BO_LOCKED; slow_locked = contended; -- 2.24.0 ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel