linux/drivers
Russell King - ARM Linux 91d56b5cb5 mmc: block: improve error recovery from command channel errors
Command channel errors fall into four classes:

1. The command was issued with the card in the wrong state
2. The command failed to be received by the card correctly
3. The cards response failed to be received by the host (CRC error)
4. The card failed to respond to the card

For (1), in theory we should know that the card is in the correct state.
However, a failed stop command (or other failure) may result in the card
remaining in a data transfer state from the previous command.  If we
detect this condition, we try to recover by sending a stop command.

For the initial commands (set block count and the read/write command)
no data will have been transferred.  All that we need deal with is
retrying at this point.  A failed stop command can be remedied as
above.

If we are unable to recover the card (eg, the card ignores our requests
for status, or we don't recognise the error code) then we immediately
fail the request.

Change-Id: Ief109a57fd21a247381b38f1164c22f0344f0284
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Pawel Moll <pawel.moll@arm.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
2011-10-26 17:11:38 -07:00
..
accessibility
acpi Merge branches 'd3cold', 'bugzilla-37412' and 'bugzilla-38152' into release 2011-07-14 00:16:38 -04:00
amba
ata ahci: change 'masking port_map' printk to KERN_WARNING level 2011-06-29 10:10:07 -07:00
atm
auxdisplay
base PM: runtime: add might_sleep to PM runtime functions 2011-09-23 20:08:51 -07:00
bcma
block cciss: do not attempt to read from a write-only register 2011-08-04 21:58:38 -07:00
bluetooth Bluetooth: Add Atheros AR3012 one PID/VID supported 2011-07-11 11:59:27 -07:00
cdrom
char Merge commit 'v3.0' into android-3.0 2011-08-10 18:04:30 -07:00
clk
clocksource
connector
cpufreq power: cpufreq interactive governor: use default sample time 20ms 2011-10-20 11:59:03 -07:00
cpuidle cpuidle: governor: menu: don't use loadavg 2011-09-19 16:56:40 -07:00
crypto crypto: caam - fix operator precedence in shared descriptor allocation 2011-06-30 07:43:27 +08:00
dca
dio
dma
edac
eisa
firewire firewire: cdev: prevent race between first get_info ioctl and bus reset event queuing 2011-08-04 21:58:34 -07:00
firmware drivers/firmware/sigma.c needs MODULE_LICENSE 2011-08-04 21:58:38 -07:00
gpio gpio: wm831x: add a missing break in wm831x_gpio_dbg_show 2011-07-15 14:03:30 -06:00
gpu Merge commit 'v3.0.1' into android-3.0 2011-08-10 18:07:59 -07:00
hid HID: Add null check for hidinput. 2011-09-21 17:19:38 -07:00
hwmon hwmon: (max1111) Fix race condition causing NULL pointer exception 2011-07-17 18:39:19 +02:00
hwspinlock
i2c Merge branch 'for-30-rc5/all-i2c' of git://git.fluff.org/bjdooks/linux 2011-07-07 16:29:29 -07:00
ide
idle
ieee802154
infiniband IB/srp: Avoid duplicate devices from LUN scan 2011-08-04 21:58:34 -07:00
input input: evdev: do not block waiting for an event if fd is nonblock 2011-10-04 22:51:05 -07:00
isdn gigaset: call module_put before restart of if_open() 2011-06-17 15:27:32 -04:00
leds Merge commit 'v3.0-rc7' into android-3.0 2011-07-12 20:10:37 -07:00
lguest
macintosh
mca
md dm: fix idr leak on module removal 2011-08-04 21:58:43 -07:00
media si4713-i2c: avoid potential buffer overflow on si4713 2011-07-18 09:12:21 -07:00
memstick
message
mfd w1: ds1wm: add a reset recovery parameter 2011-07-08 21:14:44 -07:00
misc Merge commit 'v3.0.1' into android-3.0 2011-08-10 18:07:59 -07:00
mmc mmc: block: improve error recovery from command channel errors 2011-10-26 17:11:38 -07:00
mtd Merge commit 'v3.0-rc6' into android-3.0 2011-07-07 17:55:44 -07:00
net net: wireless: bcm4329: Prohibit FW access in case of FW crash 2011-10-26 14:01:32 -07:00
nfc
nubus
of
oprofile
parisc
parport
pci PCI: ARI is a PCIe v2 feature 2011-08-04 21:58:38 -07:00
pcmcia pcmcia: pxa2xx/vpac270: free gpios on exist rather than requesting 2011-07-11 14:26:34 +08:00
platform hp-wmi: fix use after free 2011-07-11 09:52:35 -04:00
pnp
power pda_power: add support for using otg transceiver events 2011-07-11 15:30:09 -07:00
pps
ps3
ptp
rapidio
regulator regulator: max8997: Fix setting inappropriate value for ramp_delay variable 2011-07-08 19:14:58 +01:00
rtc rtc alarm: fix bad index when canceling alarms[] 2011-09-07 19:49:49 -07:00
s390
sbus
scsi hpsa: do not attempt to read from a write-only register 2011-08-04 21:58:36 -07:00
sfi
sh
sn
spi spi/s3c64xx: Bug fix for SPI with different FIFO level 2011-07-06 15:03:08 +09:00
ssb ssb: fix init regression of hostmode PCI core 2011-07-07 13:06:08 -04:00
staging ram_console: pass in a boot info string 2011-10-25 16:40:00 -07:00
switch
target tcm_fc: Fix conversion spec warning 2011-06-24 00:09:16 +00:00
tc
telephony
thermal
tty Merge commit 'v3.0.1' into android-3.0 2011-08-10 18:07:59 -07:00
uio
usb usb: otg: Temporarily grab wakelock on charger and disconnect events 2011-09-26 23:36:48 -07:00
uwb
vhost
video Merge commit 'v3.0-rc6' into android-3.0 2011-07-07 17:55:44 -07:00
virtio
vlynq
w1 w1: ds1wm: add a reset recovery parameter 2011-07-08 21:14:44 -07:00
watchdog watchdog: shwdt: fix usage of mod_timer 2011-08-04 21:58:42 -07:00
xen Merge branch 'stable/bug.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen 2011-06-20 09:01:33 -07:00
zorro
Kconfig
Makefile