lkml.org 
[lkml]   [2013]   [Nov]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.10 66/74] drm/vmwgfx: Dont kill clients on VT switch
    Date
    3.10-stable review patch.  If anyone has any objections, please let me know.

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

    From: Thomas Hellstrom <thellstrom@vmware.com>

    commit c4249855ac5b2a383704d31e040d3831d6a25c6f upstream.

    DRI clients that tried to grab the TTM lock when the master (X server) was
    switched away during a VT switch were sent the SIGTERM signal by the
    kernel. Fix this so that they are only sent that signal when the master has
    exited.

    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 17 ++++++++++++-----
    1 file changed, 12 insertions(+), 5 deletions(-)

    --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
    +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
    @@ -740,9 +740,17 @@ static void vmw_postclose(struct drm_dev
    struct vmw_fpriv *vmw_fp;

    vmw_fp = vmw_fpriv(file_priv);
    - ttm_object_file_release(&vmw_fp->tfile);
    - if (vmw_fp->locked_master)
    +
    + if (vmw_fp->locked_master) {
    + struct vmw_master *vmaster =
    + vmw_master(vmw_fp->locked_master);
    +
    + ttm_lock_set_kill(&vmaster->lock, true, SIGTERM);
    + ttm_vt_unlock(&vmaster->lock);
    drm_master_put(&vmw_fp->locked_master);
    + }
    +
    + ttm_object_file_release(&vmw_fp->tfile);
    kfree(vmw_fp);
    }

    @@ -942,14 +950,13 @@ static void vmw_master_drop(struct drm_d

    vmw_fp->locked_master = drm_master_get(file_priv->master);
    ret = ttm_vt_lock(&vmaster->lock, false, vmw_fp->tfile);
    - vmw_execbuf_release_pinned_bo(dev_priv);
    -
    if (unlikely((ret != 0))) {
    DRM_ERROR("Unable to lock TTM at VT switch.\n");
    drm_master_put(&vmw_fp->locked_master);
    }

    - ttm_lock_set_kill(&vmaster->lock, true, SIGTERM);
    + ttm_lock_set_kill(&vmaster->lock, false, SIGTERM);
    + vmw_execbuf_release_pinned_bo(dev_priv);

    if (!dev_priv->enable_fb) {
    ret = ttm_bo_evict_mm(&dev_priv->bdev, TTM_PL_VRAM);



    \
     
     \ /
      Last update: 2013-11-09 08:41    [W:4.188 / U:0.804 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site