• Thomas Hellstrom's avatar
    drm/vmwgfx: Clean up fbdev modeset locking · 21fbd085
    Thomas Hellstrom authored
    At least since the atomic port, the vmwgfx fbdev code is taking
    a number of unnecessary modeset locks. In particular the
    kms_set_config() function will grab its own locks, leading to
    locking retries. So avoid drm_modeset_lock_all() and instead
    provide a local acquire context for kms_set_config(). Also have the
    vmw_kms_fbdev_init data itself grab the lock that it needs.
    
    This also fixed a long standing problem that vmw_fb_close() didn't
    provide an acquire context for kms_set_config(), causing potential
    warnings and hangs during driver unload. This problem was uncovered by the
    recent commit "drm/vmwgfx: Improve on hibernation"
    
    Testing done:
    Repeated driver load and unload on Ubuntu 16.04.2
    
    Fixes: c3b9b165 ("drm/vmwgfx: Improve on hibernation")
    Signed-off-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: default avatarDeepak Rawat <drawat@vmware.com>
    Reviewed-by: default avatarSinclair Yeh <syeh@vmware.com>
    21fbd085
vmwgfx_kms.c 76 KB