[PATCH v5 15/15] drm/xen: Explicitly disable automatic sending of vblank event
Oleksandr Andrushchenko
Oleksandr_Andrushchenko at epam.com
Wed Jan 29 13:00:37 UTC 2020
On 1/29/20 2:05 PM, Thomas Zimmermann wrote:
> The atomic helpers automatically send out fake VBLANK events if no
> vblanking has been initialized. This would apply to xen, but xen has
> its own vblank logic. To avoid interfering with the atomic helpers,
> disable automatic vblank events explicitly.
>
> v5:
> * update comment
> v4:
> * separate commit from core vblank changes
>
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
> Acked-by: Gerd Hoffmann <kraxel at redhat.com>
> Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
Thank you for your work,
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko at epam.com>
> ---
> drivers/gpu/drm/xen/xen_drm_front_kms.c | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/drivers/gpu/drm/xen/xen_drm_front_kms.c b/drivers/gpu/drm/xen/xen_drm_front_kms.c
> index 4f34c5208180..78096bbcd226 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front_kms.c
> +++ b/drivers/gpu/drm/xen/xen_drm_front_kms.c
> @@ -220,6 +220,24 @@ static bool display_send_page_flip(struct drm_simple_display_pipe *pipe,
> return false;
> }
>
> +static int display_check(struct drm_simple_display_pipe *pipe,
> + struct drm_plane_state *plane_state,
> + struct drm_crtc_state *crtc_state)
> +{
> + /*
> + * Xen doesn't initialize vblanking via drm_vblank_init(), so
> + * DRM helpers assume that it doesn't handle vblanking and start
> + * sending out fake VBLANK events automatically.
> + *
> + * As xen contains it's own logic for sending out VBLANK events
> + * in send_pending_event(), disable no_vblank (i.e., the xen
> + * driver has vblanking support).
> + */
> + crtc_state->no_vblank = false;
> +
> + return 0;
> +}
> +
> static void display_update(struct drm_simple_display_pipe *pipe,
> struct drm_plane_state *old_plane_state)
> {
> @@ -284,6 +302,7 @@ static const struct drm_simple_display_pipe_funcs display_funcs = {
> .enable = display_enable,
> .disable = display_disable,
> .prepare_fb = drm_gem_fb_simple_display_pipe_prepare_fb,
> + .check = display_check,
> .update = display_update,
> };
>
More information about the dri-devel
mailing list