linux/drivers
Tejun Heo 7d47e8d4d4 libata: put some intelligence into EH speed down sequence
The current EH speed down code is more of a proof that the EH
framework is capable of adjusting transfer speed in response to error.
This patch puts some intelligence into EH speed down sequence.  The
rules are..

* If there have been more than three timeout, HSM violation or
  unclassified DEV errors for known supported commands during last 10
  mins, NCQ is turned off.

* If there have been more than three timeout or HSM violation for known
  supported command, transfer mode is slowed down.  If DMA is active,
  it is first slowered by one grade (e.g. UDMA133->100).  If that
  doesn't help, it's slowered to 40c limit (UDMA33).  If PIO is
  active, it's slowered by one grade first.  If that doesn't help,
  PIO0 is forced.  Note that this rule does not change transfer mode.
  DMA is never degraded into PIO by this rule.

* If there have been more than ten ATA bus, timeout, HSM violation or
  unclassified device errors for known supported commands && speeding
  down DMA mode didn't help, the device is forced into PIO mode.  Note
  that this rule is considered only for PATA devices and is pretty
  difficult to trigger.

One error can only trigger one rule at a time.  After a rule is
triggered, error history is cleared such that the next speed down
happens only after some number of errors are accumulated.  This makes
sense because now speed down is done in bigger stride.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-02-21 04:58:16 -05:00
..
acorn [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
acpi backlight: Separate backlight properties from backlight ops pointers 2007-02-20 09:26:53 +00:00
amba
ata libata: put some intelligence into EH speed down sequence 2007-02-21 04:58:16 -05:00
atm atm: Use ARRAY_SIZE macro when appropriate 2007-02-17 15:30:48 -05:00
auxdisplay [PATCH] cfag12864b: fix crash when built-in and no parport present 2007-02-20 17:10:14 -08:00
base [PATCH] rework reserved major handling 2007-02-20 17:10:13 -08:00
block [PATCH] pktcdvd: Correctly set cmd_len field in pkt_generic_packet 2007-02-20 17:10:14 -08:00
bluetooth [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
cdrom [PATCH] sysctl: remove insert_at_head from register_sysctl 2007-02-14 08:09:59 -08:00
char [PATCH] tty: use NULL for ptrs 2007-02-20 17:10:14 -08:00
clocksource [PATCH] Allow early access to the power management timer 2007-02-16 08:13:58 -08:00
connector [PATCH] connector: some fixes for ia64 unaligned access errors 2007-01-05 23:55:29 -08:00
cpufreq Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq 2007-02-16 08:16:01 -08:00
crypto [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
dio
dma [PATCH] slab: remove SLAB_KERNEL 2006-12-07 08:39:24 -08:00
edac [PATCH] EDAC: Add Fully-Buffered DIMM APIs to core 2007-02-12 09:48:32 -08:00
eisa
fc4 [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
firmware [PATCH] docbook: add edd firmware interfaces 2007-02-11 10:51:32 -08:00
hid [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
hwmon hwmon/vt1211: Add probing of alternate config index port 2007-02-14 21:15:05 +01:00
i2c Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2007-02-19 13:29:02 -08:00
ide Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2007-02-19 13:29:02 -08:00
ieee1394 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2007-02-19 13:29:02 -08:00
infiniband Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2007-02-19 13:29:02 -08:00
input Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/dtor/input 2007-02-19 13:31:34 -08:00
isdn [PATCH] drivers/isdn/gigaset/: build asyncdata.o into the gigaset module 2007-02-20 17:10:16 -08:00
kvm [PATCH] i386: Convert i386 PDA code to use %fs 2007-02-13 13:26:20 +01:00
leds [PATCH] Fix leds-s3c24xx hardware.h reference 2007-01-05 23:55:21 -08:00
macintosh backlight: Separate backlight properties from backlight ops pointers 2007-02-20 09:26:53 +00:00
mca
md [PATCH] sysctl: remove insert_at_head from register_sysctl 2007-02-14 08:09:59 -08:00
media Storage class should be before const qualifier 2007-02-17 20:11:19 +01:00
message [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
mfd [PATCH] mfd: SM501 core driver 2007-02-20 17:10:14 -08:00
misc backlight: Separate backlight properties from backlight ops pointers 2007-02-20 09:26:53 +00:00
mmc Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-02-19 13:18:39 -08:00
mtd Merge git://git.infradead.org/mtd-2.6 2007-02-19 13:34:11 -08:00
net Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 2007-02-20 10:26:46 -08:00
nubus
oprofile [PATCH] mark struct file_operations const 5 2007-02-12 09:48:45 -08:00
parisc [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
parport [PATCH] parport_pc: fix parport_pc_probe_port section warning 2007-02-20 17:10:16 -08:00
pci Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2007-02-19 13:29:02 -08:00
pcmcia Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2007-02-19 13:29:02 -08:00
pnp Pull misc-for-upstream into release branch 2007-02-16 18:52:41 -05:00
ps3 [POWERPC] PS3: System manager support 2007-02-16 14:00:19 +11:00
rapidio [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
rtc [PATCH] at91_rtc updates 2007-02-20 17:10:15 -08:00
s390 [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
sbus Various typo fixes. 2007-02-17 19:07:33 +01:00
scsi Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-02-19 13:32:28 -08:00
serial [PATCH] 8250: Fix GCC4 signed/unsigned mismatch warning 2007-02-20 17:10:15 -08:00
sh
sn [PATCH] IOC3/IOC4: PCI mem space resources 2007-02-11 10:51:25 -08:00
spi [PATCH] spi_s3c2410_gpio.c spi mode 2 and 3 support 2007-02-20 17:10:16 -08:00
tc [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
telephony [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
usb backlight: Separate backlight properties from backlight ops pointers 2007-02-20 09:26:53 +00:00
video [PATCH] i810fb: fix i810_check_params section mismatch 2007-02-20 17:10:16 -08:00
w1 [PATCH] w1: Use ARRAY_SIZE macro when appropriate 2007-02-12 09:48:28 -08:00
zorro [PATCH] mark struct file_operations const 6 2007-02-12 09:48:45 -08:00
Kconfig [PATCH] drivers: add LCD support 2007-02-11 10:51:24 -08:00
Makefile [PATCH] drivers: add LCD support 2007-02-11 10:51:24 -08:00