Paul Walmsley
0cbbcffdf5
i2c-omap: Close suspected race between omap_i2c_idle() and omap_i2c_isr()
...
omap_i2c_idle() sets an internal flag, "dev->idle", instructing its
ISR to decline interrupts. It sets this flag before it actually masks
the interrupts on the I2C controller. This is problematic, since an
I2C interrupt could arrive after dev->idle is set, but before the
interrupt source is masked. When this happens, Linux disables the I2C
controller's IRQ, causing all future transactions on the bus to fail.
Symptoms, happening on about 7% of boots:
irq 56: nobody cared (try booting with the "irqpoll" option)
<warning traceback here>
Disabling IRQ #56
i2c_omap i2c_omap.1: controller timed out
In omap_i2c_idle(), this patch sets dev->idle only after the interrupt
mask write to the I2C controller has left the ARM write buffer.
That's probably the major offender. For additional prophylaxis, in
omap_i2c_unidle(), the patch clears the dev->idle flag before
interrupts are enabled, rather than afterwards.
The patch has survived twenty-two reboots on the 3430SDP here without
wedging I2C1. Not absolutely dispositive, but promising!
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
2008-11-21 13:39:45 -08:00
..
accessibility
acpi
acpi: fix oops in acpi_system_wakeup_device_seq_show
2008-11-16 10:09:34 -08:00
amba
ata
libata: improve phantom device detection
2008-11-14 18:51:57 -05:00
atm
auxdisplay
base
sysfs: Fix return values for sysdev_store_{ulong,int}
2008-10-29 15:03:49 -07:00
block
cciss: fix DEBUG printk formats
2008-11-19 18:50:00 -08:00
bluetooth
bpa10x: free sk_buff with kfree_skb
2008-10-31 00:40:19 -07:00
cdrom
gdrom: Fix compile error
2008-10-28 17:46:02 +09:00
char
Merge branch 'doc-subdirs' of git://git.kernel.org/pub/scm/linux/kernel/git/rdunlap/linux-docs
2008-11-15 11:51:03 -08:00
clocksource
connector
cpufreq
cpuidle
regression: disable timer peek-ahead for 2.6.28
2008-11-09 16:28:42 -08:00
crypto
dca
[4/4] dca: fixup initialization dependency
2008-11-10 15:01:03 -08:00
dio
dma
dmaengine: struct device - replace bus_id with dev_name(), dev_set_name()
2008-11-11 13:12:33 -07:00
edac
i5000-edac: hold reference to mci kobject
2008-11-12 17:17:16 -08:00
eisa
firewire
firewire: struct device - replace bus_id with dev_name(), dev_set_name()
2008-10-31 08:48:25 +01:00
firmware
trivial: dmi_scan typo
2008-11-07 08:25:43 -08:00
gpio
gpiolib: extend gpio label column width in debugfs file
2008-11-19 18:49:57 -08:00
gpu
drm/i915: Move legacy breadcrumb out of the reserved status page area
2008-11-11 18:03:28 +10:00
hid
HID: don't grab devices with no input
2008-11-14 14:10:01 +01:00
hwmon
drivers/hwmon/applesmc.c: add generic MacPro support
2008-11-19 18:49:59 -08:00
i2c
i2c-omap: Close suspected race between omap_i2c_idle() and omap_i2c_isr()
2008-11-21 13:39:45 -08:00
ide
Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6
2008-11-15 18:58:37 -08:00
idle
i7300_idle: Kconfig, show menu only on x86_64
2008-10-28 00:14:47 -04:00
ieee1394
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6
2008-11-06 15:55:34 -08:00
infiniband
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
2008-11-12 10:56:31 -08:00
input
saner FASYNC handling on file close
2008-11-01 09:49:46 -07:00
isdn
isdn: remove extra byteswap in isdn_net_ciscohdlck_slarp_send_reply
2008-11-16 23:03:45 -08:00
leds
remove unused #include <version.h>'s
2008-11-01 09:50:12 -07:00
lguest
macintosh
mca
md
dm: avoid destroying table in dm_any_congested
2008-11-13 23:39:14 +00:00
media
V4L/DVB (9624): CVE-2008-5033: fix OOPS on tvaudio when controlling bass/treble
2008-11-14 14:39:47 -02:00
memstick
message
trivial: MPT fusion - remove long dead code
2008-11-07 08:25:43 -08:00
mfd
mfd: Correct WM8350 I2C return code usage
2008-11-16 19:58:47 +01:00
misc
GRU: fix for debug option
2008-11-19 18:49:57 -08:00
mmc
mmc: struct device - replace bus_id with dev_name(), dev_set_name()
2008-11-08 21:37:46 +01:00
mtd
[ARM] cdb89712: avoid namespace clashes with SRAM_ and BOOTROM_ constants
2008-11-13 15:05:03 +00:00
net
atl2: don't request irq on resume if netif running
2008-11-20 04:18:25 -08:00
nubus
of
OF-device: Don't overwrite numa_node in device registration
2008-10-31 16:12:01 +11:00
oprofile
oprofile: fix memory ordering
2008-10-27 19:15:41 +01:00
parisc
parport
Parport driver: disable pc-style parport on Blackfin systems
2008-11-18 08:10:08 -08:00
pci
Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-11-20 13:13:03 -08:00
pcmcia
pcmcia: ensure correct logging in do_io_probe
2008-11-09 21:47:47 +01:00
pnp
drivers: remove duplicated #include
2008-11-04 08:18:19 -08:00
power
ps3
powerpc/ps3: Fix compile error in ps3-lpm.c
2008-11-05 19:59:08 +11:00
rapidio
regulator
regulator: Use menuconfig in Kconfig
2008-11-09 14:49:23 +00:00
rtc
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
2008-11-17 07:54:47 -08:00
s390
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
2008-11-15 11:38:02 -08:00
sbus
drivers: remove duplicated #include
2008-11-04 08:18:19 -08:00
scsi
[SCSI] dpt_i2o: fix transferred data length for scsi_set_resid()
2008-11-15 11:10:14 -06:00
serial
serial: sh-sci: Reorder the SCxTDR write after the TDxE clear.
2008-11-13 17:46:06 +09:00
sh
sn
spi
spi_imx: full duplex dma corruption bugfix
2008-11-19 18:49:58 -08:00
ssb
SSB: hide empty sub menu
2008-11-10 13:50:17 -08:00
staging
Don't ask twice about not including staging drivers
2008-11-09 12:47:04 -08:00
tc
telephony
telephony: trivial: fix up email address
2008-11-11 09:30:23 -08:00
thermal
uio
saner FASYNC handling on file close
2008-11-01 09:49:46 -07:00
usb
USB: ACE1001 patch for cp2101.c
2008-11-19 22:01:35 -08:00
uwb
video
drivers/video/backlight/da903x.c: introduce one more missing kfree
2008-11-19 18:50:00 -08:00
virtio
w1
W1 OMAP: Fix OMAP LDP boot crash
2008-11-19 18:50:00 -08:00
watchdog
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
2008-11-11 09:24:31 -08:00
xen
xen: fix scrub_page()
2008-11-17 19:11:26 +01:00
zorro
Kconfig
regulator: Build on non-ARM platforms
2008-10-28 21:47:17 +00:00
Makefile
Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb
2008-10-26 16:35:46 -07:00