summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorgrehan <grehan@FreeBSD.org>2003-06-27 10:11:54 +0000
committergrehan <grehan@FreeBSD.org>2003-06-27 10:11:54 +0000
commita82f10f6c9dbb0e3f1679ffde154f7c9fec9fca4 (patch)
tree275e6e53f70bc6d1367872d56376ad4611646f40 /sys/dev
parent050a15b860a3fa14418247c167ae6ad0a6e8168c (diff)
downloadFreeBSD-src-a82f10f6c9dbb0e3f1679ffde154f7c9fec9fca4.zip
FreeBSD-src-a82f10f6c9dbb0e3f1679ffde154f7c9fec9fca4.tar.gz
Prevent probing the secondary channel on CMD646 controllers if the
channel has been disabled by BIOS. This prevents a bus timeout machine check on B&W G3 PowerMacs, which have a primary-only CMD646 on the motherboard. Approved by: sos Obtained from: NetBSD
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ata/ata-chipset.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/ata/ata-chipset.c b/sys/dev/ata/ata-chipset.c
index 1df8d36..e831fce 100644
--- a/sys/dev/ata/ata-chipset.c
+++ b/sys/dev/ata/ata-chipset.c
@@ -1509,6 +1509,12 @@ ata_sii_chipinit(device_t dev)
}
else
ctlr->setmode = ata_cmd_setmode;
+
+ if ((pci_read_config(dev, 0x51, 1) & 0x08) != 0x08) {
+ device_printf(dev, "secondary channel disabled\n");
+ ctlr->channels = 1;
+ }
+
return 0;
}
OpenPOWER on IntegriCloud