diff mbox series

drm: mxsfb: fix fence synchronization

Message ID 20201120211306.325841-1-l.stach@pengutronix.de (mailing list archive)
State New, archived
Headers show
Series drm: mxsfb: fix fence synchronization | expand

Commit Message

Lucas Stach Nov. 20, 2020, 9:13 p.m. UTC
The conversion away from the simple display pipeline helper missed
to convert the prepare_fb plane callback, so no fences are attached to
the atomic state, breaking synchronization with other devices. Fix
this by plugging in the drm_gem_fb_prepare_fb helper function.

Fixes: ae1ed009328 (drm: mxsfb: Stop using DRM simple display pipeline helper)
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
---
 drivers/gpu/drm/mxsfb/mxsfb_kms.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Lucas Stach Nov. 26, 2020, 10:18 a.m. UTC | #1
On Fr, 2020-11-20 at 22:13 +0100, Lucas Stach wrote:
> The conversion away from the simple display pipeline helper missed
> to convert the prepare_fb plane callback, so no fences are attached to
> the atomic state, breaking synchronization with other devices. Fix
> this by plugging in the drm_gem_fb_prepare_fb helper function.

This is a regression in the 5.10 release series, so I would appreciate
if someone could review/ack this patch so I can smash it into
drm-misc-fixes.

Regards,
Lucas

> Fixes: ae1ed009328 (drm: mxsfb: Stop using DRM simple display pipeline helper)
> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
> ---
>  drivers/gpu/drm/mxsfb/mxsfb_kms.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_kms.c b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
> index b721b8b262ce..4d556532281a 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_kms.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
> @@ -22,6 +22,7 @@
>  #include <drm/drm_fb_cma_helper.h>
>  #include <drm/drm_fourcc.h>
>  #include <drm/drm_gem_cma_helper.h>
> +#include <drm/drm_gem_framebuffer_helper.h>
>  #include <drm/drm_plane.h>
>  #include <drm/drm_plane_helper.h>
>  #include <drm/drm_vblank.h>
> @@ -485,11 +486,13 @@ static void mxsfb_plane_overlay_atomic_update(struct drm_plane *plane,
>  }
>  
>  static const struct drm_plane_helper_funcs mxsfb_plane_primary_helper_funcs = {
> +	.prepare_fb = drm_gem_fb_prepare_fb,
>  	.atomic_check = mxsfb_plane_atomic_check,
>  	.atomic_update = mxsfb_plane_primary_atomic_update,
>  };
>  
>  static const struct drm_plane_helper_funcs mxsfb_plane_overlay_helper_funcs = {
> +	.prepare_fb = drm_gem_fb_prepare_fb,
>  	.atomic_check = mxsfb_plane_atomic_check,
>  	.atomic_update = mxsfb_plane_overlay_atomic_update,
>  };
Stefan Agner Nov. 26, 2020, 11:14 a.m. UTC | #2
On 2020-11-26 11:18, Lucas Stach wrote:
> On Fr, 2020-11-20 at 22:13 +0100, Lucas Stach wrote:
>> The conversion away from the simple display pipeline helper missed
>> to convert the prepare_fb plane callback, so no fences are attached to
>> the atomic state, breaking synchronization with other devices. Fix
>> this by plugging in the drm_gem_fb_prepare_fb helper function.
> 
> This is a regression in the 5.10 release series, so I would appreciate
> if someone could review/ack this patch so I can smash it into
> drm-misc-fixes.

Reviewed-by: Stefan Agner <stefan@agner.ch>

I'll push it today.

--
Stefan

> 
> Regards,
> Lucas
> 
>> Fixes: ae1ed009328 (drm: mxsfb: Stop using DRM simple display pipeline helper)
>> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
>> ---
>>  drivers/gpu/drm/mxsfb/mxsfb_kms.c | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_kms.c b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
>> index b721b8b262ce..4d556532281a 100644
>> --- a/drivers/gpu/drm/mxsfb/mxsfb_kms.c
>> +++ b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
>> @@ -22,6 +22,7 @@
>>  #include <drm/drm_fb_cma_helper.h>
>>  #include <drm/drm_fourcc.h>
>>  #include <drm/drm_gem_cma_helper.h>
>> +#include <drm/drm_gem_framebuffer_helper.h>
>>  #include <drm/drm_plane.h>
>>  #include <drm/drm_plane_helper.h>
>>  #include <drm/drm_vblank.h>
>> @@ -485,11 +486,13 @@ static void mxsfb_plane_overlay_atomic_update(struct drm_plane *plane,
>>  }
>>
>>  static const struct drm_plane_helper_funcs mxsfb_plane_primary_helper_funcs = {
>> +	.prepare_fb = drm_gem_fb_prepare_fb,
>>  	.atomic_check = mxsfb_plane_atomic_check,
>>  	.atomic_update = mxsfb_plane_primary_atomic_update,
>>  };
>>
>>  static const struct drm_plane_helper_funcs mxsfb_plane_overlay_helper_funcs = {
>> +	.prepare_fb = drm_gem_fb_prepare_fb,
>>  	.atomic_check = mxsfb_plane_atomic_check,
>>  	.atomic_update = mxsfb_plane_overlay_atomic_update,
>>  };
diff mbox series

Patch

diff --git a/drivers/gpu/drm/mxsfb/mxsfb_kms.c b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
index b721b8b262ce..4d556532281a 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_kms.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
@@ -22,6 +22,7 @@ 
 #include <drm/drm_fb_cma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_plane.h>
 #include <drm/drm_plane_helper.h>
 #include <drm/drm_vblank.h>
@@ -485,11 +486,13 @@  static void mxsfb_plane_overlay_atomic_update(struct drm_plane *plane,
 }
 
 static const struct drm_plane_helper_funcs mxsfb_plane_primary_helper_funcs = {
+	.prepare_fb = drm_gem_fb_prepare_fb,
 	.atomic_check = mxsfb_plane_atomic_check,
 	.atomic_update = mxsfb_plane_primary_atomic_update,
 };
 
 static const struct drm_plane_helper_funcs mxsfb_plane_overlay_helper_funcs = {
+	.prepare_fb = drm_gem_fb_prepare_fb,
 	.atomic_check = mxsfb_plane_atomic_check,
 	.atomic_update = mxsfb_plane_overlay_atomic_update,
 };