[4/4] drm/vc4: Use dma_resv locking wrappers
diff mbox series

Message ID 20191125094356.161941-5-daniel.vetter@ffwll.ch
State New
Headers show
Series
  • consistently use dma_resv locking wrappers
Related show

Commit Message

Daniel Vetter Nov. 25, 2019, 9:43 a.m. UTC
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 <daniel.vetter@intel.com>
---
 drivers/gpu/drm/vc4/vc4_gem.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

Comments

Daniel Vetter Dec. 13, 2019, 8:10 p.m. UTC | #1
On Mon, Nov 25, 2019 at 10:43:56AM +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 <daniel.vetter@intel.com>

Ping for some review/acks.

Thanks, Daniel

> ---
>  drivers/gpu/drm/vc4/vc4_gem.c | 11 +++++------
>  1 file changed, 5 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
> index 7a06cb6e31c5..e1cfc3ccd05a 100644
> --- a/drivers/gpu/drm/vc4/vc4_gem.c
> +++ b/drivers/gpu/drm/vc4/vc4_gem.c
> @@ -568,7 +568,7 @@ vc4_unlock_bo_reservations(struct drm_device *dev,
>  	for (i = 0; i < exec->bo_count; i++) {
>  		struct drm_gem_object *bo = &exec->bo[i]->base;
>  
> -		ww_mutex_unlock(&bo->resv->lock);
> +		dma_resv_unlock(bo->resv);
>  	}
>  
>  	ww_acquire_fini(acquire_ctx);
> @@ -595,8 +595,7 @@ vc4_lock_bo_reservations(struct drm_device *dev,
>  retry:
>  	if (contended_lock != -1) {
>  		bo = &exec->bo[contended_lock]->base;
> -		ret = ww_mutex_lock_slow_interruptible(&bo->resv->lock,
> -						       acquire_ctx);
> +		ret = dma_resv_lock_slow_interruptible(bo->resv, acquire_ctx);
>  		if (ret) {
>  			ww_acquire_done(acquire_ctx);
>  			return ret;
> @@ -609,19 +608,19 @@ vc4_lock_bo_reservations(struct drm_device *dev,
>  
>  		bo = &exec->bo[i]->base;
>  
> -		ret = ww_mutex_lock_interruptible(&bo->resv->lock, acquire_ctx);
> +		ret = dma_resv_lock_interruptible(bo->resv, acquire_ctx);
>  		if (ret) {
>  			int j;
>  
>  			for (j = 0; j < i; j++) {
>  				bo = &exec->bo[j]->base;
> -				ww_mutex_unlock(&bo->resv->lock);
> +				dma_resv_unlock(bo->resv);
>  			}
>  
>  			if (contended_lock != -1 && contended_lock >= i) {
>  				bo = &exec->bo[contended_lock]->base;
>  
> -				ww_mutex_unlock(&bo->resv->lock);
> +				dma_resv_unlock(bo->resv);
>  			}
>  
>  			if (ret == -EDEADLK) {
> -- 
> 2.24.0
>
Eric Anholt Dec. 13, 2019, 9:40 p.m. UTC | #2
On Fri, Dec 13, 2019 at 12:10 PM Daniel Vetter <daniel@ffwll.ch> wrote:
>
> On Mon, Nov 25, 2019 at 10:43:56AM +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 <daniel.vetter@intel.com>
>
> Ping for some review/acks.
>
> Thanks, Daniel
>
> > ---
> >  drivers/gpu/drm/vc4/vc4_gem.c | 11 +++++------
> >  1 file changed, 5 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
> > index 7a06cb6e31c5..e1cfc3ccd05a 100644
> > --- a/drivers/gpu/drm/vc4/vc4_gem.c
> > +++ b/drivers/gpu/drm/vc4/vc4_gem.c
> > @@ -568,7 +568,7 @@ vc4_unlock_bo_reservations(struct drm_device *dev,
> >       for (i = 0; i < exec->bo_count; i++) {
> >               struct drm_gem_object *bo = &exec->bo[i]->base;
> >
> > -             ww_mutex_unlock(&bo->resv->lock);
> > +             dma_resv_unlock(bo->resv);
> >       }
> >
> >       ww_acquire_fini(acquire_ctx);
> > @@ -595,8 +595,7 @@ vc4_lock_bo_reservations(struct drm_device *dev,
> >  retry:
> >       if (contended_lock != -1) {
> >               bo = &exec->bo[contended_lock]->base;
> > -             ret = ww_mutex_lock_slow_interruptible(&bo->resv->lock,
> > -                                                    acquire_ctx);
> > +             ret = dma_resv_lock_slow_interruptible(bo->resv, acquire_ctx);
> >               if (ret) {
> >                       ww_acquire_done(acquire_ctx);
> >                       return ret;
> > @@ -609,19 +608,19 @@ vc4_lock_bo_reservations(struct drm_device *dev,
> >
> >               bo = &exec->bo[i]->base;
> >
> > -             ret = ww_mutex_lock_interruptible(&bo->resv->lock, acquire_ctx);
> > +             ret = dma_resv_lock_interruptible(bo->resv, acquire_ctx);
> >               if (ret) {
> >                       int j;
> >
> >                       for (j = 0; j < i; j++) {
> >                               bo = &exec->bo[j]->base;
> > -                             ww_mutex_unlock(&bo->resv->lock);
> > +                             dma_resv_unlock(bo->resv);
> >                       }
> >
> >                       if (contended_lock != -1 && contended_lock >= i) {
> >                               bo = &exec->bo[contended_lock]->base;
> >
> > -                             ww_mutex_unlock(&bo->resv->lock);
> > +                             dma_resv_unlock(bo->resv);
> >                       }
> >
> >                       if (ret == -EDEADLK) {
> > --
> > 2.24.0
> >

Assuming they're supposed to be exactly equivalent currently,

Acked-by: Eric Anholt <eric@anholt.net>

but we should really just be using drm_gem_lock_reservations()

Patch
diff mbox series

diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
index 7a06cb6e31c5..e1cfc3ccd05a 100644
--- a/drivers/gpu/drm/vc4/vc4_gem.c
+++ b/drivers/gpu/drm/vc4/vc4_gem.c
@@ -568,7 +568,7 @@  vc4_unlock_bo_reservations(struct drm_device *dev,
 	for (i = 0; i < exec->bo_count; i++) {
 		struct drm_gem_object *bo = &exec->bo[i]->base;
 
-		ww_mutex_unlock(&bo->resv->lock);
+		dma_resv_unlock(bo->resv);
 	}
 
 	ww_acquire_fini(acquire_ctx);
@@ -595,8 +595,7 @@  vc4_lock_bo_reservations(struct drm_device *dev,
 retry:
 	if (contended_lock != -1) {
 		bo = &exec->bo[contended_lock]->base;
-		ret = ww_mutex_lock_slow_interruptible(&bo->resv->lock,
-						       acquire_ctx);
+		ret = dma_resv_lock_slow_interruptible(bo->resv, acquire_ctx);
 		if (ret) {
 			ww_acquire_done(acquire_ctx);
 			return ret;
@@ -609,19 +608,19 @@  vc4_lock_bo_reservations(struct drm_device *dev,
 
 		bo = &exec->bo[i]->base;
 
-		ret = ww_mutex_lock_interruptible(&bo->resv->lock, acquire_ctx);
+		ret = dma_resv_lock_interruptible(bo->resv, acquire_ctx);
 		if (ret) {
 			int j;
 
 			for (j = 0; j < i; j++) {
 				bo = &exec->bo[j]->base;
-				ww_mutex_unlock(&bo->resv->lock);
+				dma_resv_unlock(bo->resv);
 			}
 
 			if (contended_lock != -1 && contended_lock >= i) {
 				bo = &exec->bo[contended_lock]->base;
 
-				ww_mutex_unlock(&bo->resv->lock);
+				dma_resv_unlock(bo->resv);
 			}
 
 			if (ret == -EDEADLK) {