]> bbs.cooldavid.org Git - net-next-2.6.git/commit - drivers/ata/libata-core.c
[PATCH] libata: improve ata_bus_probe()
authorTejun Heo <htejun@gmail.com>
Sun, 2 Apr 2006 08:54:46 +0000 (17:54 +0900)
committerJeff Garzik <jeff@garzik.org>
Sun, 2 Apr 2006 14:02:57 +0000 (10:02 -0400)
commit14d2bac1877ed4e2cc940d1680db1a4f29225811
tree60b478485e7453dd5a41aea34699a305dd3c8d2c
parentcf176e1aa92eb2a3faea8409e841396a66413937
[PATCH] libata: improve ata_bus_probe()

Improve ata_bus_probe() such that configuration failures are handled
better.  Each device is given ATA_PROBE_MAX_TRIES chances, but any
non-transient error (revalidation failure with -ENODEV, configuration
failure with -EINVAL...) disables the device directly.  Any IO error
results in SATA PHY speed down and ata_set_mode() failure lowers
transfer mode.  The last try always puts a device into PIO-0.

After each failure, the whole port is reset to make sure that the
controller and all the devices are in a known and stable state.  The
reset also applies SATA SPD configuration if necessary.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/scsi/libata-core.c
include/linux/libata.h