summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2003-12-08 09:22:20 +0000
committersos <sos@FreeBSD.org>2003-12-08 09:22:20 +0000
commit8b107990e35b5710e01fb181bc18a6c1d394bbe9 (patch)
tree4105525fc2c17db4e27055f5cf2632468df4a6c8
parentab0bce9d34117f8a7b96ec8a3c86ed0e86d58ef8 (diff)
downloadFreeBSD-src-8b107990e35b5710e01fb181bc18a6c1d394bbe9.zip
FreeBSD-src-8b107990e35b5710e01fb181bc18a6c1d394bbe9.tar.gz
More errata fixing for the SiI3112A disaster chip:
Serialize access to the SATA channels, the chip messes up if both channels are used at the same time. The SiI3112 hereby takes the price as the most crappy SATA chip in existance by a significant amount. My advise to our userbase is to avoid this chip like the plague...
-rw-r--r--sys/dev/ata/ata-chipset.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/ata/ata-chipset.c b/sys/dev/ata/ata-chipset.c
index 217499d..1559ff8 100644
--- a/sys/dev/ata/ata-chipset.c
+++ b/sys/dev/ata/ata-chipset.c
@@ -1650,8 +1650,10 @@ ata_sii_chipinit(device_t dev)
pci_write_config(dev, 0xec, 0x40094009, 4);
ctlr->allocate = ata_sii_mio_allocate;
- if (ctlr->chip->max_dma >= ATA_SA150)
+ if (ctlr->chip->max_dma >= ATA_SA150) {
ctlr->setmode = ata_sata_setmode;
+ ctlr->locking = ata_serialize;
+ }
else
ctlr->setmode = ata_sii_setmode;
}
OpenPOWER on IntegriCloud