]> git.baikalelectronics.ru Git - kernel.git/commit
libata: improve phantom device detection
authorTejun Heo <tj@kernel.org>
Thu, 13 Nov 2008 01:04:46 +0000 (10:04 +0900)
committerJeff Garzik <jgarzik@redhat.com>
Fri, 14 Nov 2008 23:51:57 +0000 (18:51 -0500)
commit22101c426eba5f896a1aca3d6c1cb3d7cf8ac71c
tree6b0d6a504c11bbea7096706065c31bd12e7d7e78
parent43fbee1dae3dadba1973d7197de0acd4e932493d
libata: improve phantom device detection

Currently libata uses four methods to detect device presence.

1. PHY status if available.
2. TF register R/W test (only promotes presence, never demotes)
3. device signature after reset
4. IDENTIFY failure detection in SFF state machine

Combination of the above works well in most cases but recently there
have been a few reports where a phantom device causes unnecessary
delay during probe.  In both cases, PHY status wasn't available.  In
one case, it passed #2 and #3 and failed IDENTIFY with ATA_ERR which
didn't qualify as #4.  The other failed #2 but as it passed #3 and #4,
it still caused failure.

In both cases, phantom device reported diagnostic failure, so these
cases can be safely worked around by considering any !ATA_DRQ IDENTIFY
failure as NODEV_HINT if diagnostic failure is set.

Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/libata-sff.c