twx-linux/include/linux
Suleiman Souhlal 513daadd15 ide: use correct IDE error recovery
IDE error recovery is using IDLE IMMEDIATE if the drive is busy or has DRQ set.
This violates the ATA spec (can only send IDLE IMMEDIATE when drive is not
busy) and really hoses up some drives (modern drives will not be able to
recover using this error handling).  The correct thing to do is issue a SRST
followed by a SET FEATURES command.  This is what Western Digital recommends
for error recovery and what Western Digital says Windows does.  It also does
not violate the ATA spec as far as I can tell.

Bart:
* port the patch over the current tree
* undo the recalibration code removal
* send SET FEATURES command after checking for good drive status
* don't check whether the current request is of REQ_TYPE_ATA_{CMD,TASK}
  type because we need to send SET FEATURES before handling any requests
* some pre-ATA4 drives require INITIALIZE DEVICE PARAMETERS command before
  other commands (except IDENTIFY) so send SET FEATURES only if there are
  no pending drive->special requests
* update comments and patch description
* any bugs introduced by this patch are mine and not Suleiman's :-)

Signed-off-by: Suleiman Souhlal <suleiman@google.com>
Acked-by: Alan Cox <alan@redhat.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2007-03-26 23:03:20 +02:00
..
amba
byteorder
dvb
hdlc
isdn [PATCH] Fix buffer overflow and races in capi debug functions 2007-03-01 14:53:39 -08:00
lockd
mmc mmc: require explicit support for high-speed 2007-03-06 13:26:55 +01:00
mtd [MTD] [OneNAND] Classify the page data and oob buffer 2007-03-09 08:08:09 +00:00
netfilter
netfilter_arp
netfilter_bridge
netfilter_ipv4 [NETFILTER]: conntrack: fix {nf,ip}_ct_iterate_cleanup endless loops 2007-03-05 13:25:18 -08:00
netfilter_ipv6
nfsd
raid
spi [PATCH] spi: destroy workqueue after spi_unregister_master 2007-03-16 19:25:04 -07:00
sunrpc [PATCH] knfsd: fix recently introduced problem with shutting down a busy NFS server 2007-03-06 09:30:26 -08:00
tc_act
tc_ematch
usb USB: add a blacklist for devices that can't handle some things we throw at them. 2007-02-23 15:03:46 -08:00
8250_pci.h
a.out.h
ac97_codec.h
acct.h
acpi_pmtmr.h
acpi.h
adb.h
adfs_fs_i.h
adfs_fs_sb.h
adfs_fs.h
aer.h
affs_hardblocks.h
agp_backend.h
agpgart.h
aio_abi.h
aio.h
amifd.h
amifdreg.h
amigaffs.h
apm_bios.h
apm-emulation.h
arcdevice.h
arcfb.h
ata.h libata: test major version in ata_id_is_sata() 2007-02-23 05:37:11 -05:00
atalk.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_suni.h
atm_tcp.h
atm_zatm.h
atm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmel_pdc.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
attribute_container.h
audit.h [PATCH] linux/audit.h needs linux/types.h 2007-03-06 09:30:25 -08:00
auto_fs4.h [PATCH] autofs4: header file update 2007-02-20 17:10:15 -08:00
auto_fs.h
auxvec.h
awe_voice.h
ax25.h
b1lli.h
b1pcmcia.h
backing-dev.h [PATCH] nfs: fix congestion control 2007-03-16 19:25:05 -07:00
backlight.h backlight: Separate backlight properties from backlight ops pointers 2007-02-20 09:26:53 +00:00
baycom.h
bcd.h
bfs_fs.h
binfmts.h
bio.h
bit_spinlock.h
bitmap.h
bitops.h
bitrev.h
blkdev.h
blkpg.h
blktrace_api.h
blockgroup_lock.h
bootmem.h [PATCH] FRV: fix unannotated variable declarations 2007-03-22 19:39:05 -07:00
bottom_half.h
bpqether.h
buffer_head.h
bug.h
cache.h
calc64.h
capability.h
capi.h
cciss_ioctl.h
cd1400.h
cdev.h
cdk.h
cdrom.h [PATCH] cdrom: use unsigned bitfields 2007-02-20 17:10:14 -08:00
cfag12864b.h [PATCH] cfag12864b: fix crash when built-in and no parport present 2007-02-20 17:10:14 -08:00
chio.h
circ_buf.h
clk.h
clockchips.h
clocksource.h
cm4000_cs.h
cn_proc.h
cobalt-nvram.h
coda_cache.h
coda_fs_i.h
coda_linux.h
coda_proc.h
coda_psdev.h
coda.h
coff.h
com20020.h
compat_ioctl.h
compat.h [PATCH] Add epoll compat_ code to fs/compat.c 2007-03-08 07:38:22 -08:00
compiler-gcc3.h
compiler-gcc4.h
compiler-gcc.h
compiler-intel.h
compiler.h
completion.h
comstats.h
concap.h
configfs.h
connector.h
console_struct.h
console.h
consolemap.h
cpu.h
cpufreq.h Revert "[CPUFREQ] constify cpufreq_driver where possible." 2007-02-26 14:55:48 -08:00
cpumask.h [PATCH] Convert highest_possible_processor_id to nr_cpu_ids 2007-02-20 17:10:13 -08:00
cpuset.h
cramfs_fs_sb.h
cramfs_fs.h
crash_dump.h
crc16.h
crc32.h
crc32c.h
crc-ccitt.h
crypto.h
cryptohash.h
ctype.h
cuda.h
cyclades.h
cyclomx.h
cycx_cfm.h
cycx_drv.h
cycx_x25.h
dcache.h
dccp.h
dcookies.h
debug_locks.h
debugfs.h
delay.h
delayacct.h
device-mapper.h
device.h [PATCH] sysfs and driver core: add callback helper, used by SCSI and S390 2007-03-15 15:29:26 -07:00
devpts_fs.h
dio.h
dirent.h
dlm_device.h
dlm.h
dm9000.h
dm-ioctl.h
dma-mapping.h
dmaengine.h
dmapool.h
dmi.h
dn.h
dnotify.h
dqblk_v1.h
dqblk_v2.h
dqblk_xfs.h
ds1286.h
ds17287rtc.h
dtlk.h
edd.h
efi.h
efs_dir.h
efs_fs_i.h
efs_fs_sb.h
efs_fs.h
efs_vh.h
eisa.h
elevator.h
elf-em.h
elf-fdpic.h
elf.h
elfcore.h
elfnote.h
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h
eventpoll.h
ext2_fs_sb.h
ext2_fs.h
ext3_fs_i.h
ext3_fs_sb.h
ext3_fs.h
ext3_jbd.h
ext4_fs_extents.h Fix misspellings of "agressive". 2007-02-17 19:20:16 +01:00
ext4_fs_i.h
ext4_fs_sb.h
ext4_fs.h
ext4_jbd2.h
fadvise.h
fault-inject.h
fb.h backlight: Rework backlight/fb interaction simplifying, lots 2007-02-20 08:38:46 +00:00
fcdevice.h
fcntl.h
fd1772.h
fd.h
fddidevice.h
fdreg.h
fib_rules.h
file.h
filter.h
firmware.h
flat.h
font.h
freezer.h
fs_enet_pd.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fs.h
fsl_devices.h
fsnotify.h
fuse.h
futex.h
gameport.h
gen_stats.h
genalloc.h
generic_acl.h
generic_serial.h
genetlink.h
genhd.h
getcpu.h
gfp.h
gfs2_ondisk.h
gigaset_dev.h
gpio_keys.h [PATCH] gpio_keys driver shouldn't be ARM-specific 2007-03-05 07:57:51 -08:00
hardirq.h
harrier_defs.h
hash.h
hayesesp.h
hdlc.h
hdlcdrv.h
hdpu_features.h
hdreg.h
hdsmart.h
hid-debug.h
hid.h HID: fix Logitech DiNovo Edge touchwheel and Logic3 /SpectraVideo middle button 2007-03-01 09:54:44 +01:00
hiddev.h
highmem.h
highuid.h
hil_mlc.h
hil.h
hippidevice.h
hp_sdc.h
hpet.h
hrtimer.h [PATCH] hrtimers: hrtimer_clock_base description typo 2007-03-06 09:30:24 -08:00
htirq.h
hugetlb.h [PATCH] Fix get_unmapped_area and fsync for hugetlb shm segments 2007-03-01 17:18:39 -08:00
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hysdn_if.h
i2c-algo-bit.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-algo-sgi.h
i2c-dev.h
i2c-id.h
i2c-isa.h
i2c-ocores.h
i2c-pnx.h
i2c-pxa.h
i2c.h
i2o-dev.h
i2o.h
i8k.h
ibmtr.h
icmp.h
icmpv6.h
ide.h ide: use correct IDE error recovery 2007-03-26 23:03:20 +02:00
idr.h
if_addr.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h
if_cablemodem.h
if_ec.h
if_eql.h
if_ether.h
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h
if_ltalk.h
if_packet.h
if_plip.h
if_ppp.h
if_pppox.h [PPPOE]: Use ifindex instead of device pointer in key lookups. 2007-03-05 13:25:28 -08:00
if_shaper.h
if_slip.h
if_strip.h
if_tr.h
if_tun.h
if_tunnel.h
if_vlan.h [VLAN]: Avoid a 4-order allocation. 2007-03-02 20:44:51 -08:00
if_wanpipe_common.h
if_wanpipe.h
if.h
igmp.h bonding: Improve IGMP join processing 2007-03-06 06:08:11 -05:00
in6.h
in_route.h
in.h
inet_diag.h
inet.h
inetdevice.h
init_task.h
init.h
initrd.h
inotify.h
input.h
interrupt.h [PATCH] Declare init_irq_proc before we use it. 2007-02-19 14:21:50 -08:00
io.h
ioc3.h
ioc4.h
ioctl32.h
ioctl.h
ioport.h
ioprio.h
ip6_tunnel.h
ip_mp_alg.h
ip.h
ipc.h
ipmi_msgdefs.h
ipmi_smi.h
ipmi.h
ipsec.h
ipv6_route.h
ipv6.h
ipx.h
irda.h
irq_cpustat.h
irq.h [PATCH] FRV: Missing error defs 2007-03-01 14:53:38 -08:00
irqflags.h
irqreturn.h
isa.h
isapnp.h
isdn_divertif.h
isdn_ppp.h
isdn.h
isdnif.h
isicom.h
iso_fs.h
istallion.h
ixjuser.h
jbd2.h
jbd.h
jffs2.h
jhash.h
jiffies.h
journal-head.h
joystick.h
kallsyms.h
kbd_diacr.h
kbd_kern.h [PATCH] swsusp: fix suspend when console is in VT_AUTO+KD_GRAPHICS mode 2007-03-16 19:25:05 -07:00
Kbuild
kd.h
kdev_t.h [PATCH] rework reserved major handling 2007-02-20 17:10:13 -08:00
kernel_stat.h
kernel.h
kernelcapi.h
kexec.h
key-ui.h
key.h
keyboard.h
keyctl.h
kfifo.h
klist.h
kmalloc_sizes.h
kmod.h Revert "Driver core: let request_module() send a /sys/modules/kmod/-uevent" 2007-02-23 14:54:57 -08:00
kobj_map.h
kobject.h
kprobes.h
kref.h
ks0108.h [PATCH] cfag12864b: fix crash when built-in and no parport present 2007-02-20 17:10:14 -08:00
kthread.h
ktime.h [PATCH] fix MTIME_SEC_MAX on 32-bit 2007-03-16 19:25:07 -07:00
kvm_para.h KVM: Add host hypercall support for vmx 2007-03-04 11:12:40 +02:00
kvm.h KVM: Bump API version 2007-03-04 11:12:42 +02:00
lapb.h
latency.h
lcd.h backlight: Separate backlight properties from backlight ops pointers 2007-02-20 09:26:53 +00:00
leds.h
libata.h libata: add CONFIG_PM to libata core layer 2007-03-02 18:30:35 -05:00
libps2.h
license.h
limits.h
linkage.h
linux_logo.h
list.h
llc.h
lm_interface.h
lock_dlm_plock.h
lockdep.h [PATCH] lockdep: lockdep_depth vs. debug_locks 2007-03-22 19:39:06 -07:00
log2.h Correct trivial typo in log2.h. 2007-02-17 19:17:37 +01:00
loop.h
lp.h
m41t00.h
m48t86.h
magic.h KVM: Move kvmfs magic number to <linux/magic.h> 2007-03-04 11:12:43 +02:00
major.h
matroxfb.h
mbcache.h
mc6821.h
mc146818rtc.h
mca-legacy.h
mca.h
memory_hotplug.h
memory.h
mempolicy.h
mempool.h
meye.h
migrate.h [PATCH] Page migration: Fix vma flag checking 2007-03-05 07:57:51 -08:00
mii.h
minix_fs.h [PATCH] minix v3: fix superblock definition 2007-02-20 17:10:13 -08:00
miscdevice.h
mm_inline.h
mm_types.h
mm.h [PATCH] mm/{,tiny-}shmem.c cleanups 2007-03-01 14:53:35 -08:00
mman.h
mmtimer.h
mmzone.h
mnt_namespace.h
mod_devicetable.h [PARISC] rename *_ANY_ID to PA_*_ANY_ID in the exported header 2007-02-17 01:09:12 -05:00
module.h
moduleloader.h
moduleparam.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2007-02-19 13:29:02 -08:00
mount.h
mpage.h
mqueue.h
mroute.h
msdos_fs.h
msg.h
msi.h [PATCH] msi: Safer state caching. 2007-03-12 16:31:50 -07:00
mtio.h
mutex-debug.h
mutex.h
mv643xx.h mv643xx_eth: Place explicit port number in mv643xx_eth_platform_data 2007-03-06 06:14:54 -05:00
n_r3964.h
namei.h
nbd.h
ncp_fs_i.h
ncp_fs_sb.h ncpfs: make sure server connection survives a kill 2007-03-06 13:26:27 +01:00
ncp_fs.h
ncp_mount.h
ncp_no.h
ncp.h
neighbour.h
net.h
netdevice.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h
netlink.h
netpoll.h
netrom.h
nfs2.h
nfs3.h
nfs4_acl.h
nfs4_mount.h
nfs4.h
nfs_fs_i.h
nfs_fs_sb.h [PATCH] nfs: fix congestion control 2007-03-16 19:25:05 -07:00
nfs_fs.h [PATCH] nfs: fix congestion control 2007-03-16 19:25:05 -07:00
nfs_idmap.h
nfs_mount.h
nfs_page.h
nfs_xdr.h
nfs.h
nfsacl.h
nfsd_idmap.h
nls.h
nmi.h
node.h
nodemask.h [PATCH] Replace highest_possible_node_id() with nr_node_ids 2007-02-20 17:10:13 -08:00
notifier.h
nsc_gpio.h
nsproxy.h
nubus.h
numa.h
nvram.h
oom.h
oprofile.h
page-flags.h [PATCH] Rename PG_checked to PG_owner_priv_1 2007-03-01 14:53:37 -08:00
pagemap.h
pagevec.h
param.h
parport_pc.h
parport.h
parser.h
pata_platform.h
patchkey.h
pci_hotplug.h
pci_ids.h atl1: add L1 device id to pci_ids, then use it 2007-02-17 15:17:05 -05:00
pci_regs.h [PATCH] msi: Safer state caching. 2007-03-12 16:31:50 -07:00
pci-acpi.h
pci.h [PATCH] pci: Repair pci_save/restore_state so we can restore one save many times. 2007-03-12 16:31:50 -07:00
pcieport_if.h
percpu_counter.h
percpu.h
personality.h
pfkeyv2.h
pfn.h
pg.h
phonedev.h
phy.h
pid_namespace.h
pid.h
pipe_fs_i.h
pkt_cls.h
pkt_sched.h
pktcdvd.h
platform_device.h
plist.h
pm_legacy.h
pm.h power management: fix struct layout and docs 2007-02-23 14:52:09 -08:00
pmu.h
pnp.h
pnpbios.h
poison.h
poll.h
posix_acl_xattr.h
posix_acl.h
posix_types.h
posix-timers.h
ppdev.h
ppp_channel.h
ppp_defs.h
ppp-comp.h
prctl.h
preempt.h
prefetch.h
prio_tree.h
proc_fs.h
profile.h
ps2esdi.h
ptrace.h
qnx4_fs.h
qnxtypes.h
quota.h
quotaio_v1.h
quotaio_v2.h
quotaops.h
radeonfb.h
radix-tree.h
raid_class.h
ramfs.h
random.h
raw.h
rbtree.h
rcupdate.h
reboot_fixups.h
reboot.h
reciprocal_div.h
reiserfs_acl.h
reiserfs_fs_i.h
reiserfs_fs_sb.h
reiserfs_fs.h
reiserfs_xattr.h
relay.h
resource.h
resume-trace.h
rio_drv.h
rio_ids.h
rio_regs.h
rio.h
rmap.h
romfs_fs.h
root_dev.h
rose.h
route.h
rslib.h
rtc-v3020.h
rtc.h
rtmutex.h
rtnetlink.h
rwsem-spinlock.h
rwsem.h
sc26198.h
scatterlist.h
scc.h
sched.h [PATCH] sched: remove SMT nice 2007-03-05 07:57:51 -08:00
screen_info.h
sctp.h
scx200_gpio.h
scx200.h
sdla_fr.h
sdla.h
seccomp.h
securebits.h
security.h [PATCH] sanitize security_getprocattr() API 2007-03-14 15:27:48 -07:00
selection.h
selinux_netlink.h
selinux.h
sem.h
seq_file.h
seqlock.h Various typo fixes. 2007-02-17 19:07:33 +01:00
serial167.h
serial_8250.h
serial_core.h
serial_pnx8xxx.h
serial_reg.h
serial.h
serialP.h
serio.h Input: i8042 - let serio bus suspend ports 2007-02-18 01:40:30 -05:00
shm.h [PATCH] Fix get_unmapped_area and fsync for hugetlb shm segments 2007-03-01 17:18:39 -08:00
shmem_fs.h
signal.h
skbuff.h
slab_def.h
slab.h
sm501-regs.h [PATCH] mfd: SM501 core driver 2007-02-20 17:10:14 -08:00
sm501.h [PATCH] mfd: SM501 core driver 2007-02-20 17:10:14 -08:00
smb_fs_i.h
smb_fs_sb.h
smb_fs.h
smb_mount.h
smb.h
smbno.h
smp_lock.h
smp.h
snmp.h
socket.h [NET]: Revert socket.h/stat.h ifdef hacks. 2007-02-28 09:41:59 -08:00
sockios.h
som.h
sonet.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types_up.h
spinlock_types.h
spinlock_up.h
spinlock.h [PATCH] timer/hrtimer: take per cpu locks in sane order 2007-03-05 07:57:53 -08:00
srcu.h
stacktrace.h
stallion.h
start_kernel.h
stat.h [NET]: Revert socket.h/stat.h ifdef hacks. 2007-02-28 09:41:59 -08:00
statfs.h
stddef.h
stop_machine.h
string.h
stringify.h
superhyway.h
suspend.h
svga.h
swap.h
swapops.h [PATCH] mincore warning fix 2007-02-20 17:10:13 -08:00
synclink.h
sys.h
syscalls.h
sysctl.h
sysdev.h
sysfs.h [PATCH] Fix build error due to not including <linux/errno.h> 2007-03-18 13:40:06 -07:00
sysrq.h
sysv_fs.h
task_io_accounting_ops.h
task_io_accounting.h
taskstats_kern.h
taskstats.h
tc.h
tcp.h
telephony.h
termios.h
textsearch_fsm.h
textsearch.h
tfrc.h
thread_info.h
threads.h
ticable.h
tick.h
tifm.h
time.h
timer.h
times.h
timex.h
tiocl.h
tipc_config.h
tipc.h
topology.h [PATCH] sched: remove SMT nice 2007-03-05 07:57:51 -08:00
toshiba.h
transport_class.h
trdevice.h
tsacct_kern.h
tty_driver.h
tty_flip.h
tty_ldisc.h
tty.h
types.h
uaccess.h
udf_fs_i.h
udf_fs_sb.h
udf_fs.h
udp.h
ufs_fs_i.h
ufs_fs_sb.h
ufs_fs.h [PATCH] ufs2: more correct work with time 2007-03-16 19:25:03 -07:00
uinput.h
uio.h
ultrasound.h
umem.h
un.h
unistd.h
unwind.h
usb_gadget.h
usb_gadgetfs.h
usb_usual.h USB Storage: indistinguishable devices with broken and unbroken firmware 2007-02-16 15:32:19 -08:00
usb.h USB: make autosuspend delay a module parameter 2007-02-23 15:03:46 -08:00
usbdevice_fs.h USB: use __u32 rather than u32 in userspace ioctls in usbdevice_fs.h 2007-02-16 15:32:20 -08:00
user.h
utime.h
uts.h
utsname.h
vermagic.h
vfs.h
via.h
video_decoder.h
video_encoder.h
video_output.h
videodev2.h V4L/DVB (5305): Mark VIDIOC_DBG_S/G_REGISTER as experimental 2007-03-01 13:09:46 -02:00
videodev.h
videotext.h
vmalloc.h
vmstat.h
vt_buffer.h
vt_kern.h [PATCH] swsusp: fix suspend when console is in VT_AUTO+KD_GRAPHICS mode 2007-03-16 19:25:05 -07:00
vt.h
wait.h
wanrouter.h
watchdog.h
wireless.h
workqueue.h
writeback.h [PATCH] throttle_vm_writeout(): don't loop on GFP_NOFS and GFP_NOIO allocations 2007-03-01 14:53:38 -08:00
x25.h
xattr.h
xfrm.h
yam.h
zconf.h
zlib.h
zorro_ids.h
zorro.h
zutil.h