summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata/chipsets/ata-via.c
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2010-07-10 15:36:27 +0000
committermav <mav@FreeBSD.org>2010-07-10 15:36:27 +0000
commit4895e1982dab6f0e5df6b297363fe7dcfb922dbd (patch)
tree0bbfb763aff8cb85b464369c13b5b5ebffa87f95 /sys/dev/ata/chipsets/ata-via.c
parente4e2e8edd34de4dc993090a450bec0770bc1b0f3 (diff)
downloadFreeBSD-src-4895e1982dab6f0e5df6b297363fe7dcfb922dbd.zip
FreeBSD-src-4895e1982dab6f0e5df6b297363fe7dcfb922dbd.tar.gz
If ata_sata_phy_reset() failed and ata_generic_reset() is not called, mark
channel as having no devices connected. This improves hot-unplug operation on legacy-emulating SATA controllers.
Diffstat (limited to 'sys/dev/ata/chipsets/ata-via.c')
-rw-r--r--sys/dev/ata/chipsets/ata-via.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/ata/chipsets/ata-via.c b/sys/dev/ata/chipsets/ata-via.c
index ec22020..8a65b6a 100644
--- a/sys/dev/ata/chipsets/ata-via.c
+++ b/sys/dev/ata/chipsets/ata-via.c
@@ -290,9 +290,12 @@ ata_via_reset(device_t dev)
if ((ctlr->chip->cfg2 & VIABAR) && (ch->unit > 1))
ata_generic_reset(dev);
- else
+ else {
if (ata_sata_phy_reset(dev, -1, 1))
ata_generic_reset(dev);
+ else
+ ch->devices = 0;
+ }
}
static int
OpenPOWER on IntegriCloud