From 644a9e8948c908fa549db928bc5c1689fadc9cfc Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Thu, 30 Oct 2003 23:54:37 -0500 Subject: [PATCH] [libata] fix bugs in SATA reset code path --- drivers/scsi/libata-core.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index 06259aedd262b..4906684e1f025 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c @@ -1086,6 +1086,11 @@ void sata_phy_reset(struct ata_port *ap) if (ap->flags & ATA_FLAG_PORT_DISABLED) return; + if (ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT)) { + ata_port_disable(ap); + return; + } + ata_bus_reset(ap); } @@ -1339,9 +1344,13 @@ void ata_bus_reset(struct ata_port *ap) outb(ap->ctl, ioaddr->ctl_addr); /* determine if device 0/1 are present */ - dev0 = ata_dev_devchk(ap, 0); - if (slave_possible) - dev1 = ata_dev_devchk(ap, 1); + if (ap->flags & ATA_FLAG_SATA_RESET) + dev0 = 1; + else { + dev0 = ata_dev_devchk(ap, 0); + if (slave_possible) + dev1 = ata_dev_devchk(ap, 1); + } if (dev0) devmask |= (1 << 0); -- 2.53.0