alistair23-linux/drivers
Jesse Barnes cfafca8067 fbdev: fbcon: console unregistration from unregister_framebuffer
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: Jesse Barnes <jesse.barnes@intel.com>
Signed-off-by: Antonino Daplas <adaplas@gmail.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-07-17 10:23:11 -07:00
..
acorn
acpi
amba
ata Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 2007-07-12 13:40:57 -07:00
atm Introduce CONFIG_VIRT_TO_BUS 2007-07-16 09:05:42 -07:00
auxdisplay Use menuconfig objects II - auxdisplay 2007-07-16 09:05:40 -07:00
base dma: make dma pool to use kmalloc_node 2007-07-16 09:05:51 -07:00
block unregister_blkdev(): delete redundant message 2007-07-17 10:23:03 -07:00
bluetooth
cdrom bsg: add a request_queue argument to scsi_cmd_ioctl() 2007-07-16 08:52:45 +02:00
char fbcon: allow fbcon to use the primary display driver 2007-07-17 10:23:11 -07:00
clocksource
connector Use menuconfig objects: connector 2007-07-16 09:05:40 -07:00
cpufreq [CPUFREQ] Restore previously used governor on a hot-replugged CPU 2007-07-13 01:29:51 -04:00
crypto Use menuconfig objects: crypto hw 2007-07-16 09:05:40 -07:00
dio
dma dma-mapping: prevent dma dependent code from linking on !HAS_DMA archs 2007-07-16 09:05:45 -07:00
edac Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
eisa
fc4
firewire
firmware edd: switch to pci_get based API 2007-07-16 09:05:42 -07:00
hid USB: add reset_resume method 2007-07-12 16:34:30 -07:00
hwmon SPI: add 3wire mode flag 2007-07-17 10:23:04 -07:00
i2c parse error, drivers/i2c/busses/i2c-pmcmsp.c 2007-07-17 10:22:59 -07:00
ide Slab allocators: Replace explicit zeroing with __GFP_ZERO 2007-07-17 10:23:02 -07:00
ieee1394 Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
infiniband Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-07-15 16:51:54 -07:00
input Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
isdn i4l: leak in eicon/idifunc.c 2007-07-17 10:23:06 -07:00
kvm
leds
macintosh Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
mca
md unregister_blkdev() delete redundant messages in callers 2007-07-17 10:23:03 -07:00
media Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
message i2o debug output cleanup 2007-07-17 10:23:06 -07:00
mfd Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
misc IBMASM: must depend on CONFIG_INPUT 2007-07-17 10:23:04 -07:00
mmc Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
mtd Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
net Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
nubus
oprofile
parisc
parport parport_pc: it887x fix 2007-07-16 09:05:50 -07:00
pci Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2007-07-16 17:58:08 -07:00
pcmcia powerpc: 8xx: fix whitespace and indentation 2007-07-17 10:23:02 -07:00
pnp Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
power Merge git://git.infradead.org/battery-2.6 2007-07-15 16:56:12 -07:00
ps3
rapidio
rtc rtc-ds1307 becomes new-style i2c driver 2007-07-17 10:23:09 -07:00
s390 unregister_blkdev() delete redundant messages in callers 2007-07-17 10:23:03 -07:00
sbus unregister_blkdev() delete redundant messages in callers 2007-07-17 10:23:03 -07:00
scsi Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
serial sb1250-duart.c: SB1250 DUART serial support 2007-07-17 10:23:03 -07:00
sh
sn
spi use mutex instead of semaphore in SPI core/init code 2007-07-17 10:23:05 -07:00
tc
telephony Use menuconfig objects II - Telephony 2007-07-16 09:05:40 -07:00
usb Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
video fbdev: fbcon: console unregistration from unregister_framebuffer 2007-07-17 10:23:11 -07:00
w1 Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
zorro
Kconfig
Makefile