Dave Airlie
d8636a2717
fbcon: fix race condition between console lock and cursor timer (v1.1)
...
So we've had a fair few reports of fbcon handover breakage between
efi/vesafb and i915 surface recently, so I dedicated a couple of
days to finding the problem.
Essentially the last thing we saw was the conflicting framebuffer
message and that was all.
So after much tracing with direct netconsole writes (printks
under console_lock not so useful), I think I found the race.
Thread A (driver load) Thread B (timer thread)
unbind_con_driver -> |
bind_con_driver -> |
vc->vc_sw->con_deinit -> |
fbcon_deinit -> |
console_lock() |
| |
| fbcon_flashcursor timer fires
| console_lock() <- blocked for A
|
|
fbcon_del_cursor_timer ->
del_timer_sync
(BOOM)
Of course because all of this is under the console lock,
we never see anything, also since we also just unbound the active
console guess what we never see anything.
Hopefully this fixes the problem for anyone seeing vesafb->kms
driver handoff.
v1.1: add comment suggestion from Alan.
Cc: stable@vger.kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-08-22 14:00:35 +10:00
..
aty
fbdev updates for 3.6
2012-08-01 10:45:12 -07:00
backlight
Merge branch 'akpm' (Andrew's patch-bomb)
2012-07-30 17:25:34 -07:00
console
fbcon: fix race condition between console lock and cursor timer (v1.1)
2012-08-22 14:00:35 +10:00
exynos
fbdev updates for 3.6
2012-08-01 10:45:12 -07:00
geode
gx1fb: Fix section mismatch warnings
2011-06-24 17:00:31 +09:00
i810
module_param: make bool parameters really bool (drivers/video/i810)
2012-01-12 23:28:59 +00:00
intelfb
drivers/video/intelfb/intelfbdrv.c: add missing agp_backend_release
2012-05-13 13:05:24 +00:00
kyro
kyrofb: fix on x86_64
2012-04-08 14:27:08 +00:00
logo
module_param: make bool parameters really bool (drivers & misc)
2012-01-13 09:32:20 +10:30
matrox
i2c: Split I2C_M_NOSTART support out of I2C_FUNC_PROTOCOL_MANGLING
2012-05-30 10:55:34 +02:00
mb862xx
video: mb862xxfbdrv.c: local functions should not be exposed globally
2012-05-08 16:57:30 +00:00
mbx
drivers/video: use correct __devexit_p annotation
2012-06-09 12:51:11 +00:00
msm
video: msm: Fix section mismatches in mddi.c
2012-04-18 17:10:34 +00:00
nvidia
drivers/video/nvidia/nvidia.c: fix warning
2012-01-12 20:13:03 -08:00
omap
OMAPFB: remove unused FB_OMAP_BOOTLOADER_INIT config option
2012-04-23 10:48:09 +03:00
omap2
Merge branch 'for-florian' of git://gitorious.org/linux-omap-dss2/linux into fbdev-next
2012-07-25 08:55:46 +00:00
pnx4008
video: pnx4008: convert drivers/video/pnx4008/* to use module_platform_driver()
2011-12-19 20:21:43 +00:00
riva
riva/fbdev: fix several -Wuninitialized
2012-02-13 02:59:14 +00:00
savage
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2012-07-24 13:34:56 -07:00
sis
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2012-07-24 13:34:56 -07:00
vermilion
atomic: use <linux/atomic.h>
2011-07-26 16:49:47 -07:00
via
video/via: Convert to kstrtou8_from_user
2012-05-08 17:00:12 +00:00
68328fb.c
68328fb: use display information in info not in var for panning
2011-08-19 10:28:58 +02:00
acornfb.c
acornfb: use display information in info not in var for panning
2011-08-19 10:29:34 +02:00
acornfb.h
amba-clcd.c
fbdev: amba: Enable module alias autogeneration for AMBA drivers
2011-11-22 10:58:33 +00:00
amifb.c
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
arcfb.c
video: Fix typo in drivers/video
2012-07-24 12:58:15 +02:00
arkfb.c
arkfb: use display information in info not in var for panning
2011-08-19 10:29:44 +02:00
asiliantfb.c
atafb.c
m68k/atari: Do not use "/" in interrupt names
2011-05-19 18:19:10 +02:00
atafb.h
atafb_iplan2p2.c
atafb_iplan2p4.c
atafb_iplan2p8.c
atafb_mfb.c
atafb_utils.h
atmel_lcdfb.c
video: Fix typo in drivers/video
2012-07-24 12:58:15 +02:00
au1100fb.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2012-05-22 19:22:50 -07:00
au1100fb.h
fb: fix au1100fb bitrot.
2011-10-03 15:52:38 +00:00
au1200fb.c
fbdev: fix au1*fb builds
2012-04-08 14:27:09 +00:00
au1200fb.h
auo_k190x.c
video: auo_k190x: add code shared by controller drivers
2012-04-29 19:35:35 +00:00
auo_k190x.h
video: auo_k190x: add code shared by controller drivers
2012-04-29 19:35:35 +00:00
auo_k1900fb.c
video: auo_k190x: add driver for AUO-K1900 variant
2012-04-29 19:35:40 +00:00
auo_k1901fb.c
video: auo_k190x: add driver for AUO-K1901 variant
2012-04-29 19:35:42 +00:00
bf54x-lq043fb.c
video: use gpio_request_one
2012-01-28 20:50:11 +00:00
bf537-lq035.c
video: use gpio_request_one
2012-01-28 20:50:11 +00:00
bfin-lq035q1-fb.c
blackfin: fix compile error in bfin-lq035q1-fb.c
2012-04-26 14:46:51 -04:00
bfin-t350mcqb-fb.c
treewide: Fix comment and string typo 'bufer'
2011-12-06 09:53:40 +01:00
bfin_adv7393fb.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2012-07-24 13:34:56 -07:00
bfin_adv7393fb.h
Fix common misspellings
2011-03-31 11:26:23 -03:00
broadsheetfb.c
drivers/video: use correct __devexit_p annotation
2012-06-09 12:51:11 +00:00
bt431.h
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
bt455.h
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
bw2.c
c2p.h
c2p_core.h
c2p_iplan2.c
c2p_planar.c
carminefb.c
video: Add module.h to drivers/video files who really use it.
2011-10-31 19:31:33 -04:00
carminefb.h
carminefb_regs.h
cfbcopyarea.c
cfbfillrect.c
cfbimgblt.c
cg3.c
cg6.c
video: add missing framebuffer_release in error path
2011-03-22 16:35:44 +09:00
cg14.c
video: add missing framebuffer_release in error path
2011-03-22 16:35:44 +09:00
chipsfb.c
cirrusfb.c
video: Fix typo in drivers/video
2012-07-24 12:58:15 +02:00
clps711xfb.c
ARM: clps711x: Using a single definition for the PHYS and VIRT registers offset
2012-05-11 16:18:01 +02:00
cobalt_lcdfb.c
cobalt_lcdfb: LCD panel framebuffer support for SEAD-3 platform.
2012-04-29 19:34:05 +00:00
controlfb.c
Drivers: video: controlfb: fixed a brace coding style issue
2011-11-22 01:00:16 +00:00
controlfb.h
cyber2000fb.c
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
cyber2000fb.h
da8xx-fb.c
da8xx-fb: fix compile issue due to missing include
2012-07-29 16:47:40 +00:00
dnfb.c
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
edid.h
video: Fix EDID macros H_SYNC_WIDTH and H_SYNC_OFFSET
2011-03-22 16:45:03 +09:00
efifb.c
vga: fix build when fbdev is a module
2012-04-24 09:50:21 +01:00
ep93xx-fb.c
drivers/video/ep93xx-fb.c: clean up error-handling code
2012-04-21 21:47:49 +00:00
epson1355fb.c
fb: epson1355fb: Fix section mismatch
2012-07-24 20:54:35 +00:00
fb-puv3.c
fbdev: unicore32: use display information in info not in var for panning
2011-08-19 10:31:01 +02:00
fb_ddc.c
video: Add module.h to drivers/video files who really use it.
2011-10-31 19:31:33 -04:00
fb_defio.c
fb_defio: Push file_update_time() into fb_deferred_io_mkwrite()
2012-07-31 01:02:44 +04:00
fb_draw.h
fbdev: Make pixel_to_pat() failure mode more friendly
2012-07-29 12:25:06 +00:00
fb_notify.c
video: Add export.h for THIS_MODULE/EXPORT_SYMBOL to drivers/video
2011-10-31 19:31:33 -04:00
fb_sys_fops.c
fbcmap.c
fbcvt.c
fbmem.c
fbdev: add events for early fb event support
2012-05-29 16:22:28 -07:00
fbmon.c
fbdev: fix parsing of standard timings
2011-09-01 00:31:05 +00:00
fbsysfs.c
fb: handle NULL pointers in framebuffer release
2012-05-29 13:00:03 +00:00
ffb.c
video: ffb: fix ffb_probe error path
2011-03-22 16:18:51 +09:00
fm2fb.c
Fix common misspellings
2011-03-31 11:26:23 -03:00
fsl-diu-fb.c
drivers/video: fsl-diu-fb: don't initialize the THRESHOLDS registers
2012-05-13 13:08:56 +00:00
g364fb.c
g364fb: use display information in info not in var for panning
2011-08-19 10:31:09 +02:00
gbefb.c
Fix common misspellings
2011-03-31 11:26:23 -03:00
grvga.c
grvga: Fix error handling issues
2012-07-08 14:03:17 +00:00
gxt4500.c
gxt4500: use display information in info not in var for panning
2011-08-19 10:31:17 +02:00
hecubafb.c
hecubafb: add module_put on error path in hecubafb_probe()
2011-06-24 17:00:39 +09:00
hgafb.c
module_param: make bool parameters really bool (drivers & misc)
2012-01-13 09:32:20 +10:30
hitfb.c
hpfb.c
video: hpfb: use resource_size()
2011-03-22 16:07:32 +09:00
i740_reg.h
Resurrect Intel740 driver: i740fb
2012-02-15 04:31:21 +00:00
i740fb.c
video: Fix typo in drivers/video
2012-07-24 12:58:15 +02:00
igafb.c
doc: fix broken references
2011-09-27 18:08:04 +02:00
imsttfb.c
imsttfb: use display information in info not in var for panning
2011-08-19 10:31:39 +02:00
imxfb.c
video imxfb: do not depend on grouped clocks
2012-04-25 17:03:37 +02:00
jz4740_fb.c
Kconfig
video: auo_k190x: add driver for AUO-K1901 variant
2012-04-29 19:35:42 +00:00
leo.c
macfb.c
macfb: fix black and white modes
2012-01-22 14:50:02 +01:00
macmodes.c
macmodes.h
Makefile
video: auo_k190x: add driver for AUO-K1901 variant
2012-04-29 19:35:42 +00:00
maxinefb.c
metronomefb.c
video: Convert vmalloc/memset to vzalloc
2011-06-02 17:25:35 +09:00
modedb.c
fbdev: fix indentation in modedb.c
2011-09-14 16:40:52 +00:00
mx3fb.c
mx3fb: avoid screen flash when panning with fb_set_var
2012-06-27 06:59:51 +00:00
mxsfb.c
video: mxsfb: add simple device tree probe
2012-07-03 13:22:37 +08:00
n411.c
neofb.c
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
nuc900fb.c
video: convert drivers/video/* to use module_platform_driver()
2011-12-03 22:08:42 +00:00
nuc900fb.h
Fix common misspellings
2011-03-31 11:26:23 -03:00
offb.c
offb: Fix setting of the pseudo-palette for >8bpp
2012-01-03 12:09:25 +11:00
output.c
p9100.c
platinumfb.c
video: platinumfb: Add __devexit_p at necessary place
2011-10-15 00:19:58 +00:00
platinumfb.h
pm2fb.c
module_param: make bool parameters really bool (drivers & misc)
2012-01-13 09:32:20 +10:30
pm3fb.c
module_param: make bool parameters really bool (drivers & misc)
2012-01-13 09:32:20 +10:30
pmag-aa-fb.c
pmag-ba-fb.c
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
pmagb-b-fb.c
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
ps3fb.c
video: irq: Remove IRQF_DISABLED
2011-10-03 15:52:22 +00:00
pvr2fb.c
drivers/video/pvr2fb.c: ensure arguments to request_irq and free_irq are compatible
2012-03-13 23:17:31 +00:00
pxa3xx-gcu.c
video: pxa3xx-gcu: Simplify the logic to exit while loop in pxa3xx_gcu_wait_idle
2012-04-09 16:18:15 +00:00
pxa3xx-gcu.h
pxa168fb.c
drivers/video/pxa168fb.c: use devm_ functions
2012-02-24 00:49:59 +00:00
pxa168fb.h
pxafb.c
video: pxafb: add clk_prepare/clk_unprepare calls
2012-03-21 10:29:01 +00:00
pxafb.h
ARM: pxafb: rework pxafb overlay memory management
2011-03-16 17:37:03 +08:00
q40fb.c
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
s1d13xxxfb.c
s3c-fb.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2012-07-24 13:34:56 -07:00
s3c2410fb.c
video: s3c2410: fix checkpatch error and warnings
2011-12-03 22:10:43 +00:00
s3c2410fb.h
s3fb.c
s3fb: Add Virge/MX (86C260)
2012-07-08 14:03:50 +00:00
sa1100fb.c
FB: sa11x0: convert to use platform resource and ioremap()
2012-02-24 09:39:59 +00:00
sa1100fb.h
FB: sa11x0: convert to use platform resource and ioremap()
2012-02-24 09:39:59 +00:00
sbuslib.c
Drivers: video: sbuslib: fixed a brace coding style issue
2011-11-22 01:00:24 +00:00
sbuslib.h
sgivwfb.c
sh7760fb.c
video: convert drivers/video/* to use module_platform_driver()
2011-12-03 22:08:42 +00:00
sh_mipi_dsi.c
fbdev: sh_mipi_dsi: fix a section mismatch
2012-06-20 10:02:53 +02:00
sh_mobile_hdmi.c
fbdev: sh_mobile_hdmi: add HDMI Control Register support
2012-05-13 13:07:59 +00:00
sh_mobile_lcdcfb.c
fbdev: sh_mobile_lcdc: Fix vertical panning step
2012-07-29 01:17:07 +00:00
sh_mobile_lcdcfb.h
fbdev: sh_mobile_lcdc: Fix pan offset computation in YUV mode
2012-07-19 12:15:26 +02:00
sh_mobile_meram.c
sh_mobile_meram: Add direct MERAM allocation API
2012-07-19 02:05:22 +02:00
skeletonfb.c
skeletonfb: fixed module exit function typo.
2012-04-15 21:44:02 +00:00
sm501fb.c
video: convert drivers/video/* to use module_platform_driver()
2011-12-03 22:08:42 +00:00
smscufx.c
fbdev updates for 3.6
2012-08-01 10:45:12 -07:00
sstfb.c
module_param: make bool parameters really bool (drivers & misc)
2012-01-13 09:32:20 +10:30
sticore.h
Fix common misspellings
2011-03-31 11:26:23 -03:00
stifb.c
sunxvr500.c
video: Fix typo in drivers/video
2012-07-24 12:58:15 +02:00
sunxvr1000.c
sunxvr2500.c
svgalib.c
svga: Make svga_set_timings() take an iomem regbase pointer.
2011-03-22 15:47:22 +09:00
syscopyarea.c
sysfillrect.c
sysimgblt.c
tcx.c
video: add missing framebuffer_release in error path
2011-03-22 16:35:44 +09:00
tdfxfb.c
module_param: make bool parameters really bool (drivers & misc)
2012-01-13 09:32:20 +10:30
tgafb.c
tmiofb.c
video: irq: Remove IRQF_DISABLED
2011-10-03 15:52:22 +00:00
tridentfb.c
tridentfb: use display information in info not in var for panning
2011-08-19 10:35:18 +02:00
udlfb.c
fbdev updates for 3.5
2012-06-01 16:57:51 -07:00
uvesafb.c
connector/userns: replace netlink uses of cap_raised() with capable()
2012-05-10 23:21:39 -04:00
valkyriefb.c
video: Fix speficied typo
2011-06-24 17:14:39 +09:00
valkyriefb.h
vesafb.c
vesafb: fix memory leak
2011-07-04 16:02:48 +09:00
vfb.c
module_param: make bool parameters really bool (drivers & misc)
2012-01-13 09:32:20 +10:30
vga16fb.c
vga16fb: use display information in info not in var for panning
2011-08-19 10:35:34 +02:00
vgastate.c
vt8500lcdfb.c
video: convert drivers/video/* to use module_platform_driver()
2011-12-03 22:08:42 +00:00
vt8500lcdfb.h
vt8623fb.c
vt8623fb: use display information in info not in var for panning
2011-08-19 10:36:20 +02:00
w100fb.c
video: w100fb: Reduce sleep mode battery discharge
2012-07-08 14:03:02 +00:00
w100fb.h
wm8505fb.c
video: convert drivers/video/* to use module_platform_driver()
2011-12-03 22:08:42 +00:00
wm8505fb_regs.h
wmt_ge_rops.c
video: convert drivers/video/* to use module_platform_driver()
2011-12-03 22:08:42 +00:00
wmt_ge_rops.h
xen-fbfront.c
drivers/video/xen-fbfront.c: add missing cleanup code
2012-05-07 06:41:56 -04:00
xilinxfb.c
video: convert drivers/video/* to use module_platform_driver()
2011-12-03 22:08:42 +00:00