lkml.org 
[lkml]   [2017]   [Sep]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.12 19/27] drm/vmwgfx: Fix F26 Wayland screen update issue
    Date
    4.12-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Sinclair Yeh <syeh@vmware.com>

    commit 021aba761f2a6c12158afb9993524c300c01fae2 upstream.

    vmwgfx currently cannot support non-blocking commit because when
    vmw_*_crtc_page_flip is called, drm_atomic_nonblocking_commit()
    schedules the update on a thread. This means vmw_*_crtc_page_flip
    cannot rely on the new surface being bound before the subsequent
    dirty and flush operations happen.

    Signed-off-by: Sinclair Yeh <syeh@vmware.com>
    Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Charmaine Lee <charmainel@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 26 +++++++++++++++++++++++++-
    1 file changed, 25 insertions(+), 1 deletion(-)

    --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
    +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
    @@ -1567,10 +1567,34 @@ vmw_kms_atomic_check_modeset(struct drm_
    }


    +/**
    + * vmw_kms_atomic_commit - Perform an atomic state commit
    + *
    + * @dev: DRM device
    + * @state: the driver state object
    + * @nonblock: Whether nonblocking behaviour is requested
    + *
    + * This is a simple wrapper around drm_atomic_helper_commit() for
    + * us to clear the nonblocking value.
    + *
    + * Nonblocking commits currently cause synchronization issues
    + * for vmwgfx.
    + *
    + * RETURNS
    + * Zero for success or negative error code on failure.
    + */
    +int vmw_kms_atomic_commit(struct drm_device *dev,
    + struct drm_atomic_state *state,
    + bool nonblock)
    +{
    + return drm_atomic_helper_commit(dev, state, false);
    +}
    +
    +
    static const struct drm_mode_config_funcs vmw_kms_funcs = {
    .fb_create = vmw_kms_fb_create,
    .atomic_check = vmw_kms_atomic_check_modeset,
    - .atomic_commit = drm_atomic_helper_commit,
    + .atomic_commit = vmw_kms_atomic_commit,
    };

    static int vmw_kms_generic_present(struct vmw_private *dev_priv,

    \
     
     \ /
      Last update: 2017-09-05 09:15    [W:4.141 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site