linux/drivers
Sjoerd Simons 94732f7347 mmc: sdhci: Don't signal the sdio irq if it's not setup
[Not needed in newer kernels due to refactoring fixing this issue.]

With 3.14.29 (and older kernels) some of my I.mx6 Sabrelite boards were
crashing with the following oops:

  sdhci: Secure Digital Host Controller Interface driver
  sdhci: Copyright(c) Pierre Ossman
  sdhci-pltfm: SDHCI platform and OF driver helper
  sdhci-esdhc-imx 2198000.usdhc: could not get ultra high speed state, work on normal mode
  mmc0: no vqmmc regulator found
  mmc0: SDHCI controller on 2198000.usdhc [2198000.usdhc] using ADMA
  Unable to handle kernel NULL pointer dereference at virtual address 00000000
  pgd = c0004000
  [00000000] *pgd=00000000
  Internal error: Oops: 5 [#1] SMP ARM
  Modules linked in:
  CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.14.29 #1
  task: c08a7120 ti: c089c000 task.ti: c089c000
  PC is at wake_up_process+0x8/0x40
  LR is at sdhci_irq+0x748/0x9c4

Full boot log can be found at:
  http://storage.kernelci.org/stable/v3.14.29/arm-multi_v7_defconfig/lab-collabora/boot-imx6q-sabrelite.html

This happens if the sdhci interrupt status contains SDHCI_INT_CARD_INT,
while the sdio irq was never setup.  This patch fixes that in a minimal
way by checking if the sdio irq was setup.

In more recent kernels this bug went away due to refactoring done by
Russel King. So an alternative (potentially better?) fix for this patch
is to cherrypick the following patches from a recent kernel:

18258f7239 - genirq: Provide synchronize_hardirq()
bf3b5ec66b - mmc: sdio_irq: rework sdio irq handling
41005003bc - mmc: sdhci: clean up interrupt handling
781e989cf5 - mmc: sdhci: convert to new SDIO IRQ handling

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Tyler Baker <tyler.baker@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-01-29 17:40:51 -08:00
..
accessibility
acpi ACPI / PM: Fix PM initialization for devices that are not present 2015-01-16 06:59:34 -08:00
amba
ata sata_dwc_460ex: fix resource leak on error path 2015-01-29 17:40:50 -08:00
atm
auxdisplay
base driver core: Fix unbalanced device reference in drivers_probe 2015-01-16 06:59:31 -08:00
bcma Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-01-30 17:20:32 -08:00
block drbd: merge_bvec_fn: properly remap bvm->bi_bdev 2015-01-29 17:40:50 -08:00
bluetooth Bluetooth: Fix issue with USB suspend in btusb driver 2014-10-30 09:38:23 -07:00
bus bus: mvebu-mbus: fix support of MBus window 13 2015-01-29 17:40:49 -08:00
cdrom Merge branch 'for-3.14/drivers' of git://git.kernel.dk/linux-block 2014-01-30 11:40:10 -08:00
char hwrng: pseries - port to new read API and fix stack corruption 2014-11-21 09:23:01 -08:00
clk clk: Don't try to use a struct clk* after it could have been freed 2015-01-27 08:18:55 -08:00
clocksource clocksource: exynos_mct: Fix bitmask regression for exynos4_mct_write 2015-01-29 17:40:49 -08:00
connector net: Use netlink_ns_capable to verify the permisions of netlink messages 2014-06-26 15:15:38 -04:00
cpufreq intel_pstate: Correct BYT VID values. 2014-11-14 09:00:01 -08:00
cpuidle powerpc/powernv/cpuidle: Back-end cpuidle driver for powernv platform. 2014-01-29 17:02:24 +11:00
crypto crypto: prefix module autoloading with "crypto-" 2015-01-29 17:40:50 -08:00
dca
devfreq Merge branches 'pm-cpufreq' and 'pm-devfreq' 2014-01-29 11:48:23 +01:00
dio
dma dmaengine: dw: don't perform DMA when dmaengine_submit is called 2014-10-05 14:52:24 -07:00
edac cpc925_edac: Report UE events properly 2014-11-14 09:00:09 -08:00
eisa Revert "EISA: Initialize device before its resources" 2014-01-17 14:57:29 -07:00
extcon extcon: max14577: Properly handle regmap_irq_get_virq error 2014-06-30 20:11:52 -07:00
firewire firewire: cdev: prevent kernel stack leaking into ioctl arguments 2014-11-21 09:23:02 -08:00
firmware firmware: Do not use WARN_ON(!spin_is_locked()) 2014-09-17 09:19:08 -07:00
fmc drivers/fmc/fmc-write-eeprom.c: fix decimal permissions 2014-02-25 15:25:43 -08:00
gpio gpio: sysfs: fix gpio device-attribute leak 2015-01-29 17:40:48 -08:00
gpu drm/radeon: use rv515_ring_start on r5xx 2015-01-29 17:40:48 -08:00
hid HID: Add a new id 0x501a for Genius MousePen i608X 2015-01-16 06:59:31 -08:00
hsi
hv Drivers: hv: vmbus: Fix a race condition when unregistering a device 2015-01-16 06:59:32 -08:00
hwmon hwmon: (ds1621) Update zbits after conversion rate change 2014-10-05 14:52:19 -07:00
hwspinlock
i2c i2c: davinci: generate STP always when NACK is received 2014-12-16 09:34:26 -08:00
ide drivers: ide: Include appropriate header file in ide-pio-blacklist.c 2014-01-28 23:35:09 -08:00
idle ACPI and power management updates for 3.14-rc1 2014-01-24 15:51:02 -08:00
iio iio: st_sensors: Fix buffer copy 2014-11-14 09:00:01 -08:00
infiniband iser-target: Fix implicit termination of connections 2015-01-27 08:18:59 -08:00
input Input: evdev - fix EVIOCG{type} ioctl 2015-01-29 17:40:50 -08:00
iommu iommu/vt-d: Fix an off-by-one bug in __domain_mapping() 2015-01-16 06:59:31 -08:00
ipack
irqchip irqchip: gic: Fix core ID calculation when topology is read from DT 2014-07-28 08:06:02 -07:00
isdn isdnloop: several buffer overflows 2014-04-14 06:50:04 -07:00
leds leds: leds-pwm: properly clean up after probe failure 2014-06-07 10:28:18 -07:00
lguest
macintosh Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2014-01-27 21:11:26 -08:00
mailbox drivers/mailbox/omap: make mbox->irq signed for error handling 2014-01-23 16:36:53 -08:00
md dm cache: fix problematic dual use of a single migration count variable 2015-01-29 17:40:49 -08:00
media uvcvideo: Fix destruction order in uvc_delete() 2015-01-27 08:18:56 -08:00
memory memory: mvebu-devbus: fix the conversion of the bus width 2014-06-07 10:28:22 -07:00
memstick drivers/memstick/host/rtsx_pci_ms.c: fix ms card data transfer bug 2014-01-23 16:37:04 -08:00
message mptfusion: enable no_write_same for vmware scsi disks 2014-10-30 09:38:20 -07:00
mfd mfd: tc6393xb: Fail ohci suspend if full state restore is required 2015-01-08 10:00:48 -08:00
misc misc: genwqe: check for error from get_user_pages_fast() 2015-01-16 06:59:31 -08:00
mmc mmc: sdhci: Don't signal the sdio irq if it's not setup 2015-01-29 17:40:51 -08:00
mtd mtd: tests: abort torturetest on erase errors 2015-01-16 06:59:33 -08:00
net can: dev: fix crtlmode_supported check 2015-01-29 17:40:49 -08:00
nfc NFC: microread: Potential overflows in microread_target_discovered() 2014-10-05 14:52:18 -07:00
ntb
nubus
of of/base: Fix PowerPC address parsing hack 2014-12-06 15:55:35 -08:00
oprofile
parisc
parport parport: fix menu breakage 2014-07-31 12:52:56 -07:00
pci PCI: Mark Atheros AR93xx to avoid bus reset 2015-01-29 17:40:48 -08:00
pcmcia PCI changes for the v3.14 merge window: 2014-01-22 16:39:28 -08:00
phy usb: phy: twl4030-usb: Fix regressions to runtime PM on omaps 2014-10-05 14:52:14 -07:00
pinctrl pinctrl: Fix two deadlocks 2015-01-29 17:40:48 -08:00
platform hp_accel: Add support for HP ZBook 15 2015-01-27 08:18:55 -08:00
pnp ACPI / PNP: Fix acpi_pnp_match() 2014-08-07 14:52:37 -07:00
power power: bq2415x_charger: Fix memory leak on DTS parsing error 2014-11-21 09:23:03 -08:00
powercap
pps
ps3
ptp ptp_pch: Add dependency on HAS_IOMEM 2014-01-15 14:51:22 -08:00
pwm pwm: lp3943: Fix potential memory leak during request 2014-02-26 15:45:12 +01:00
rapidio rapidio/tsi721_dma: fix failure to obtain transaction descriptor 2014-08-07 14:52:37 -07:00
regulator regulator: max77693: Fix use of uninitialized regulator config 2014-11-14 09:00:13 -08:00
remoteproc
reset
rpmsg
rtc drivers/rtc/rtc-isl12057.c: fix masking of register values 2015-01-16 06:59:29 -08:00
s390 crypto: prefix module autoloading with "crypto-" 2015-01-29 17:40:50 -08:00
sbus bbc-i2c: Fix BBC I2C envctrl on SunBlade 2000 2014-08-14 09:38:26 +08:00
scsi ipr: wait for aborted command responses 2015-01-29 17:40:48 -08:00
sfi
sh
sn
spi spi: fsl: Fix problem with multi message transfers 2015-01-16 06:59:34 -08:00
ssb Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-01-30 17:20:32 -08:00
staging staging: r8188eu: Add new device ID for DLink GO-USB-N150 2014-12-06 15:55:36 -08:00
target iscsi,iser-target: Initiate termination only once 2015-01-27 08:18:58 -08:00
tc
thermal tick/powerclamp: Remove tick_nohz_idle abuse 2015-01-27 08:18:55 -08:00
tty tty: Fix pty master poll() after slave closes v2 2015-01-29 17:40:51 -08:00
uio
usb usb: musb: stuff leak of struct usb_hcd 2015-01-27 08:18:57 -08:00
uwb uwb: init beacon cache entry before registering uwb device 2014-10-05 14:52:14 -07:00
vfio vfio-pci: Fix the check on pci device type in vfio_pci_probe() 2015-01-27 08:18:56 -08:00
vhost vhost-scsi: Add missing virtio-scsi -> TCM attribute conversion 2015-01-27 08:18:58 -08:00
video video/logo: prevent use of logos after they have been freed 2015-01-27 08:18:55 -08:00
virt
virtio virtio_pci: fix virtio spec compliance on restore 2014-11-14 08:59:50 -08:00
vlynq drivers/vlynq/vlynq.c: fix another resource size off by 1 error 2014-01-23 16:36:55 -08:00
vme VME: Correct read/write alignment algorithm 2014-02-07 08:16:14 -08:00
w1 w1: fix w1_send_slave dropping a slave id 2014-05-06 07:59:26 -07:00
watchdog watchdog: kempld-wdt: Use the correct value when configuring the prescaler with the watchdog 2014-07-06 18:57:27 -07:00
xen Revert "swiotlb-xen: pass dev_addr to swiotlb_tbl_unmap_single" 2015-01-29 17:40:50 -08:00
zorro
Kconfig
Makefile