• Jesse Barnes's avatar
    fbdev: fbcon: console unregistration from unregister_framebuffer · cfafca80
    Jesse Barnes authored
    This allows for proper console unregistration via the VT layer, and updates
    the FB layer to use it.  This makes debugging new console drivers much easier,
    since you can properly clean them up before unloading.
    
    [adaplas]
    unregister_framebuffer() is typically called as part of the driver's
    module_exit(). Doing so otherwise will freeze the machine as the VT layer is
    holding reference counts on fbcon, and fbcon on the driver.  With this change,
    it allows unregister_framebuffer() to be called safely anywhere as needed.
    
    Additions from the original:  If multiple drivers are used by fbcon, and if
    one of them unregisters, a driver will take over the consoles vacated by the
    outgoing one (via set_con2fb_map).   Once only the outgoing driver remains,
    then fbcon will unbind from the VT layer (if CONFIG_HW_CONSOLE_UNBINDING is
    set to y).
    
    It is important that these drivers implement fb_open() and fb_release()
    just to ensure that no other process is using the driver. Likewise, these
    drivers _must_ check the return value of unregister_framebuffer().
    
    [akpm@linux-foundation.org: make fbcon_unbind() stub inline]
    Signed-off-by: default avatarJesse Barnes <jesse.barnes@intel.com>
    Signed-off-by: default avatarAntonino Daplas <adaplas@gmail.com>
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    cfafca80
fbcon.c 86.8 KB