[PATCH] ahci: do not fail softreset if PHY reports no device
authorTejun Heo <htejun@gmail.com>
Sun, 2 Apr 2006 16:58:06 +0000 (01:58 +0900)
committerJeff Garzik <jeff@garzik.org>
Tue, 4 Apr 2006 12:44:24 +0000 (08:44 -0400)
All softreset methods are responsible for detecting device presence
and succeed softreset in such cases.  AHCI didn't use to check for
device presence before proceeding with softreset and this caused
unnecessary reset retrials during probing.  This patch adds presence
detection to AHCI softreset.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/scsi/ahci.c

index 0c5f0c844d211d393d07af97f6622bea342d3a05..ff48066d4c4f93c656b5472288691b3ff2ed0793 100644 (file)
@@ -549,6 +549,12 @@ static int ahci_softreset(struct ata_port *ap, int verbose, unsigned int *class)
 
        DPRINTK("ENTER\n");
 
+       if (!sata_dev_present(ap)) {
+               DPRINTK("PHY reports no device\n");
+               *class = ATA_DEV_NONE;
+               return 0;
+       }
+
        /* prepare for SRST (AHCI-1.1 10.4.1) */
        rc = ahci_stop_engine(ap);
        if (rc) {