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
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
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
via
video/via: Convert to kstrtou8_from_user
2012-05-08 17:00:12 +00:00
68328fb.c
acornfb.c
acornfb.h
amba-clcd.c
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
asiliantfb.c
atafb.c
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
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
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
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
carminefb.h
carminefb_regs.h
cfbcopyarea.c
cfbfillrect.c
cfbimgblt.c
cg3.c
cg6.c
cg14.c
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
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
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
fb_ddc.c
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
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
fbsysfs.c
fb: handle NULL pointers in framebuffer release
2012-05-29 13:00:03 +00:00
ffb.c
fm2fb.c
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
gbefb.c
grvga.c
grvga: Fix error handling issues
2012-07-08 14:03:17 +00:00
gxt4500.c
hecubafb.c
hgafb.c
module_param: make bool parameters really bool (drivers & misc)
2012-01-13 09:32:20 +10:30
hitfb.c
hpfb.c
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
imsttfb.c
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
modedb.c
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
nuc900fb.h
offb.c
output.c
p9100.c
platinumfb.c
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
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
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
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
sbuslib.h
sgivwfb.c
sh7760fb.c
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
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
stifb.c
sunxvr500.c
video: Fix typo in drivers/video
2012-07-24 12:58:15 +02:00
sunxvr1000.c
sunxvr2500.c
svgalib.c
syscopyarea.c
sysfillrect.c
sysimgblt.c
tcx.c
tdfxfb.c
module_param: make bool parameters really bool (drivers & misc)
2012-01-13 09:32:20 +10:30
tgafb.c
tmiofb.c
tridentfb.c
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
valkyriefb.h
vesafb.c
vfb.c
module_param: make bool parameters really bool (drivers & misc)
2012-01-13 09:32:20 +10:30
vga16fb.c
vgastate.c
vt8500lcdfb.c
vt8500lcdfb.h
vt8623fb.c
w100fb.c
video: w100fb: Reduce sleep mode battery discharge
2012-07-08 14:03:02 +00:00
w100fb.h
wm8505fb.c
wm8505fb_regs.h
wmt_ge_rops.c
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