Dave Airlie
ec5da7f8dc
fbcon: fix race condition between console lock and cursor timer
...
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.
Signed-off-by: David Airlie <airlied@redhat.com>
Acked-by: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: stable@vger.kernel.org
Tested-by: Josh Boyer <jwboyer@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-08-21 09:08:50 -07:00
..
accessibility
acpi
Power management fixes for 3.6-rc2
2012-08-12 21:34:09 +03:00
amba
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
2012-07-27 15:14:26 -07:00
ata
ARM: arm-soc Marvell Orion device-tree updates
2012-08-02 11:50:24 -07:00
atm
drivers/atm/iphase.c: fix error return code
2012-08-06 13:29:57 -07:00
auxdisplay
base
dmesg fix for 3.6-rc3
2012-08-20 13:13:47 -07:00
bcma
bcma: BCM43228 support
2012-08-02 13:51:46 -04:00
block
drbd: nuke pdflush from comments
2012-08-04 12:15:39 +04:00
bluetooth
cdrom
char
Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
2012-08-14 07:52:41 +03:00
clk
clk: validate pointer in __clk_disable()
2012-07-30 17:25:13 -07:00
clocksource
connector
cpufreq
drivers/cpufreq/pcc-cpufreq.c: fix error return code
2012-08-08 20:49:25 +02:00
cpuidle
cpuidle: Prevent null pointer dereference in cpuidle_coupled_cpu_notify
2012-08-17 19:37:08 +02:00
crypto
This patch series contains a major revamp of how we collect entropy
2012-07-31 19:07:42 -07:00
dca
devfreq
dio
dma
dma: tegra: enable/disable dma clock
2012-08-13 10:15:22 +05:30
edac
Merge branch 'devel'
2012-07-29 21:11:05 -03:00
eisa
extcon
extcon: extcon_gpio: Replace gpio_request_one by devm_gpio_request_one
2012-08-16 10:29:08 -07:00
firewire
- Small fixes and optimizations.
2012-07-30 09:32:39 -07:00
firmware
This patch series contains a major revamp of how we collect entropy
2012-07-31 19:07:42 -07:00
gpio
GPIO: gpio-pxa: fix building without CONFIG_OF
2012-08-14 07:50:36 +03:00
gpu
More USB patches for 3.6-rc3
2012-08-20 13:14:22 -07:00
hid
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
2012-07-31 18:47:44 -07:00
hsi
hv
This patch series contains a major revamp of how we collect entropy
2012-07-31 19:07:42 -07:00
hwmon
sections: Fix section conflicts in drivers/hwmon
2012-08-18 16:17:43 -07:00
hwspinlock
i2c
This patch series contains a major revamp of how we collect entropy
2012-07-31 19:07:42 -07:00
ide
idle
intel_idle: Check cpu_idle_get_driver() for NULL before dereferencing it.
2012-08-17 19:37:14 +02:00
ieee802154
iio
iio: lm3533-als: Fix build warnings
2012-08-16 20:24:38 +01:00
infiniband
Merge branches 'cma', 'ipoib', 'misc', 'mlx4', 'ocrdma', 'qib' and 'srp' into for-next
2012-08-16 09:38:39 -07:00
input
Input: eeti_ts: pass gpio value instead of IRQ
2012-08-09 15:16:41 +02:00
iommu
iommu/amd: Fix wrong check for ARRAY_SIZE()
2012-08-10 11:34:08 +02:00
isdn
mISDN: Bugfix for layer2 fixed TEI mode
2012-08-06 13:22:50 -07:00
leds
leds: renesas: fix error handling
2012-08-13 14:34:02 +08:00
lguest
macintosh
md
md/raid10: fix problem with on-stack allocation of r10bio structure.
2012-08-18 09:51:42 +10:00
media
USB: spca506: remove __devinit* from the struct usb_device_id table
2012-08-17 17:50:44 -07:00
memory
memstick
message
drivers/message/i2o/i2o_config.c: bound allocation
2012-07-30 17:25:17 -07:00
mfd
More USB patches for 3.6-rc3
2012-08-20 13:14:22 -07:00
misc
ti-st: Fix check for pdata->chip_awake function pointer
2012-08-16 12:32:34 -07:00
mmc
Merge branch 'dmaengine' of git://git.linaro.org/people/rmk/linux-arm
2012-08-01 16:41:07 -07:00
mtd
arm-soc: bug fixes for v3.6-rc2
2012-08-12 21:31:44 +03:00
net
More USB patches for 3.6-rc3
2012-08-20 13:14:22 -07:00
nfc
nubus
of
Devicetree updates for 3.6
2012-07-24 14:07:22 -07:00
oprofile
parisc
PCI changes for the 3.6 merge window:
2012-07-24 16:17:07 -07:00
parport
pci
PCI: EHCI: Fix crash during hibernation on ASUS computers
2012-08-15 11:51:19 -06:00
pcmcia
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
2012-07-27 15:14:26 -07:00
pinctrl
drivers/pinctrl/pinctrl-nomadik.c: drop devm_kfree of devm_kzalloc'd data
2012-08-07 14:34:12 +02:00
platform
ideapad: add Lenovo IdeaPad Z570 support (part 3)
2012-08-20 12:44:41 -04:00
pnp
power
Merge branch 'for-linus-3.6' of git://dev.laptop.org/users/dilinger/linux-olpc
2012-08-02 11:52:39 -07:00
pps
pps: return PTR_ERR on error in device_create
2012-07-30 17:25:21 -07:00
ps3
ptp
pwm
pwm: pwm-tiehrpwm: PWM driver support for EHRPWM
2012-07-26 07:45:20 +02:00
rapidio
regulator
regulator: twl-regulator: fix up VINTANA1/VINTANA2
2012-08-15 17:19:01 +01:00
remoteproc
A batch of remoteproc patches for 3.6:
2012-07-26 16:19:08 -07:00
rpmsg
A batch of remoteproc patches for 3.6:
2012-07-26 16:19:08 -07:00
rtc
RTC: Avoid races between RTC alarm wakeup and suspend.
2012-08-08 20:49:16 +02:00
s390
s390/sclp_sdias: Add missing break and "fall through"
2012-08-08 07:32:55 -07:00
sbus
scsi
Merge branch 'for-3.6/core' of git://git.kernel.dk/linux-block
2012-08-01 09:02:41 -07:00
sfi
sh
sh: intc: Handle domain association for sparseirq pre-allocated vectors.
2012-08-09 13:21:05 +09:00
sn
spi
spi: Updates for 3.6
2012-08-20 13:05:27 -07:00
ssb
staging
More USB patches for 3.6-rc3
2012-08-20 13:14:22 -07:00
target
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2012-08-01 10:26:23 -07:00
tc
thermal
The tag contains just a few battery-related changes for v3.6. It's is
2012-07-31 18:08:25 -07:00
tty
pmac_zilog,kdb: Fix console poll hook to return instead of loop
2012-08-16 12:20:20 -07:00
uio
usb
More USB patches for 3.6-rc3
2012-08-20 13:14:22 -07:00
uwb
vfio
vfio: Add PCI device driver
2012-07-31 08:16:24 -06:00
vhost
tcm_vhost: Initial merge for vhost level target fabric driver
2012-07-29 13:49:10 -07:00
video
fbcon: fix race condition between console lock and cursor timer
2012-08-21 09:08:50 -07:00
virt
virtio
vlynq
vme
w1
1-Wire: Add support for the maxim ds1825 temperature sensor
2012-08-16 12:33:59 -07:00
watchdog
ARM: arm-soc Marvell Orion device-tree updates
2012-08-02 11:50:24 -07:00
xen
PCI changes for the 3.6 merge window:
2012-07-24 16:17:07 -07:00
zorro
Kconfig
vfio: VFIO core
2012-07-31 08:16:22 -06:00
Makefile
vfio: VFIO core
2012-07-31 08:16:22 -06:00