• Daniel Vetter's avatar
    drm/gma500: move fbcon restore to lastclose · 7147573a
    Daniel Vetter authored
    Doing this within the fb->destroy callback leads to a locking
    nightmare. And all other drm drivers that restore the fbcon do
    it in lastclose, too.
    
    With this adjustments all fb->destroy callbacks optionally drop
    references to any gem objects used as backing storage, call
    drm_framebuffer_cleanup and then kfree the struct. Which nicely
    simplifies the locking for framebuffer unreferencing and freeing,
    since this doesn't require that we hold the mode_config lock. A
    slight exception is the vmwgfx surface backed framebuffer, it also
    calls drm_master_put and removes the object from a device-private
    framebuffer list. Both seem to have solid locking in place already.
    
    Conclusion is that now it is no longer required to hold the
    mode_config lock while freeing a framebuffer.
    
    v2: Drop the corresponding mutex_lock WARN check from
    drm_framebuffer_unreference.
    
    v3: Use just the mode_config lock not modeset_lock_all, due to patch
    reordering.
    Acked-by: default avatarAlan Cox <alan@lxorguk.ukuu.org.uk>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    7147573a
drm_crtc.c 96.1 KB