• Daniel Vetter's avatar
    fbcon: untangle fbcon_exit · c75300b5
    Daniel Vetter authored
    There's a bunch of confusions going on here:
    - The deferred fbcon setup notifier should only be cleaned up from
      fb_console_exit(), to be symmetric with fb_console_init()
    - We also need to make sure we don't race with the work, which means
      temporarily dropping the console lock (or we can deadlock)
    - That also means no point in clearing deferred_takeover, we are
      unloading everything anyway.
    - Finally rename fbcon_exit to fbcon_release_all and move it, since
      that's what's it doing when being called from consw->con_deinit
      through fbcon_deinit.
    
    To answer a question from Sam just quoting my own reply:
    
    > We loose the call to fbcon_release_all() here [in fb_console_exit()].
    > We have part of the old fbcon_exit() above, but miss the release parts.
    
    Ah yes that's the entire point of this change. The release_all in the
    fbcon exit path was only needed when fbcon was a separate module
    indepedent from core fb.ko. Which means it was possible to unload fbcon
    while having fbdev drivers registered.
    
    But since we've merged them that has become impossible, so by the time the
    fb.ko module can be unloaded, there's guaranteed to be no fbdev drivers
    left. And hence removing them is pointless.
    
    v2: Explain the why better (Sam)
    Acked-by: default avatarSam Ravnborg <sam@ravnborg.org>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Claudio Suarez <cssk@net-c.es>
    Cc: Du Cheng <ducheng2@gmail.com>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220405210335.3434130-17-daniel.vetter@ffwll.ch
    c75300b5
fbcon.c 81.8 KB