Re: [PATCH] drm/etnaviv: Use dma_resv locking wrappers

2019-12-17 Thread Daniel Vetter
On Mon, Dec 16, 2019 at 04:14:34PM +0100, Lucas Stach wrote:
> On Sa, 2019-12-14 at 01:09 +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.
> > 
> > v2: Fix the lost _interruptible (Michael)
> > 
> > Signed-off-by: Daniel Vetter 
> > Cc: Lucas Stach 
> > Cc: Russell King 
> > Cc: Christian Gmeiner 
> > Cc: etna...@lists.freedesktop.org
> > Cc: "Ruhl, Michael J" 
> 
> Reviewed-by: Lucas Stach 
> 
> If you want to stack other stuff on top of this before the next merge
> window feel free to take it through drm-misc. Otherwise I'm going to
> pick it up with the next sweep.

I expect a fair amount of stacking in the dma-buf area in the near future
, so applied all (except the i915 one, that's already superseeded with
i915 specific work) to drm-misc-next.

Thanks for review.
-Daniel

> 
> Regards,
> Lucas
> 
> > ---
> >  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..3b0afa156d92 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_interruptible(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;
> 

-- 
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


Re: [PATCH] drm/etnaviv: Use dma_resv locking wrappers

2019-12-16 Thread Lucas Stach
On Sa, 2019-12-14 at 01:09 +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.
> 
> v2: Fix the lost _interruptible (Michael)
> 
> Signed-off-by: Daniel Vetter 
> Cc: Lucas Stach 
> Cc: Russell King 
> Cc: Christian Gmeiner 
> Cc: etna...@lists.freedesktop.org
> Cc: "Ruhl, Michael J" 

Reviewed-by: Lucas Stach 

If you want to stack other stuff on top of this before the next merge
window feel free to take it through drm-misc. Otherwise I'm going to
pick it up with the next sweep.

Regards,
Lucas

> ---
>  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..3b0afa156d92 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_interruptible(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;

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


RE: [PATCH] drm/etnaviv: Use dma_resv locking wrappers

2019-12-16 Thread Ruhl, Michael J
>-Original Message-
>From: dri-devel  On Behalf Of
>Daniel Vetter
>Sent: Friday, December 13, 2019 7:09 PM
>To: DRI Development 
>Cc: Daniel Vetter ; etna...@lists.freedesktop.org;
>Ruhl, Michael J ; Russell King
>; Vetter, Daniel 
>Subject: [PATCH] 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.
>
>v2: Fix the lost _interruptible (Michael)
>
>Signed-off-by: Daniel Vetter 
>Cc: Lucas Stach 
>Cc: Russell King 
>Cc: Christian Gmeiner 
>Cc: etna...@lists.freedesktop.org
>Cc: "Ruhl, Michael J" 
>---
> 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..3b0afa156d92 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_interruptible(obj->resv, ticket);

Thanks,

If you need it:

Acked-by: Michael J. Ruhl 

m

>   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
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH] drm/etnaviv: Use dma_resv locking wrappers

2019-12-13 Thread Daniel Vetter
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.

v2: Fix the lost _interruptible (Michael)

Signed-off-by: Daniel Vetter 
Cc: Lucas Stach 
Cc: Russell King 
Cc: Christian Gmeiner 
Cc: etna...@lists.freedesktop.org
Cc: "Ruhl, Michael J" 
---
 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..3b0afa156d92 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_interruptible(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