diff options
author | grehan <grehan@FreeBSD.org> | 2003-06-27 10:11:54 +0000 |
---|---|---|
committer | grehan <grehan@FreeBSD.org> | 2003-06-27 10:11:54 +0000 |
commit | a82f10f6c9dbb0e3f1679ffde154f7c9fec9fca4 (patch) | |
tree | 275e6e53f70bc6d1367872d56376ad4611646f40 /sys/dev | |
parent | 050a15b860a3fa14418247c167ae6ad0a6e8168c (diff) | |
download | FreeBSD-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.c | 6 |
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; } |