Skip to content

Detaching fbcon

Antonino A. Daplas linux-fbdev lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest7 patches 22 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/7Detaching fbcon: Fix vgacon to allow retaking of the consoledrivers/video/console/vgacon.c+22 -60 replies
2/7Detaching fbcon: Fix give_up_console()drivers/char/vt.c+21 -80 replies
3/7Detaching fbcon: Remove calls to pci_disable_device()drivers/video/aty/radeon_base.c drivers/video/cirrusfb.c drivers/video/geode/gx1fb_core.c +4 more+2 -200 replies
4/7Detaching fbcon: Add sysfs class device entry for fbcondrivers/video/Makefile drivers/video/console/fbcon.c drivers/video/console/fbcon.h +3 more+112 -830 replies
5/7Detaching fbcon: Clean up exit codedrivers/video/console/fbcon.c+43 -00 replies
6/7Detaching fbcon: Add capability to attach/detach fbcondrivers/video/console/fbcon.c+97 -582 replies
7/7Detaching fbcon: Update documentationDocumentation/fb/fbcon.txt+100 -40 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/7] Detaching fbcon

One of the limitations of the framebuffer console system is its inablity to unload or detach itself from the console layer. And once it loads, it also locks in framebuffer drivers preventing their unload. Although the con2fbmap utility does provide a means to unload individual drivers, it requires that at least one framebuffer driver is loaded for use by fbcon.

With this change, it is possible to detach fbcon from the console layer. If it is detached, it will reattach the boot console driver (which is permanently loaded) back to the console layer so the system can continue to work. As a consequence, fbcon will also decrement its reference count of individual framebuffer drivers, allowing all of these drivers to be unloaded even if fbcon is still loaded.

Unless you use drivers that restores the display to text mode (rivafb and i810fb, for example), detaching fbcon does require assistance from userspace tools (ie, vbetools) for text mode to be restored completely. Without the help of these tools, fbcon will leave the VGA console corrupted. The methods that can be used will be described in Documentation/fb/fbcon.txt.

Because the vt layer also increments the module reference count for each console driver, fbcon cannot be directly unloaded. It must be detached first prior to unload.

Similarly, fbcon can be reattached to the console layer without having to reload the module. A nice feature if fbcon is compiled statically.

Attaching and detaching fbcon is done via sysfs attributes. A class device entry for fbcon is created in /sys/class/graphics. The two attributes that controls this feature are detach and attach. Two other attributes that are piggybacked under /sys/class/graphics/fb[n] that are fbcon-specific, 'con_rotate' and 'con_rotate_all' are moved to fbcon. They are renamed as 'rotate' and 'rotate_all' respectively.

Overall, this feature is a great help for developers working in the framebuffer or console layer. There is not need to continually reboot the kernel for every small change. It is also useful for regular users who wants to choose between a graphical console or a text console without having to reboot.

Example usage for x86:

/* start in text mode */
modprobe xxxfb
modprobe fbcon
/* graphical mode with fbcon using xxxfb */
echo 1 > /sys/class/graphics/fbcon/detach
/* back to text mode, will produce corrupt display unless vbetool is used */ rmmod xxxfb
modprobe yyyfb
/* back to graphical mode with fbcon using yyyfb */

Before trying out this feature, please read Documentation/fb/fbcon.txt.