Index: sys/dev/ata/chipsets/ata-nvidia.c =================================================================== --- sys/dev/ata/chipsets/ata-nvidia.c (revision 217356) +++ sys/dev/ata/chipsets/ata-nvidia.c (working copy) @@ -170,6 +170,8 @@ ata_nvidia_probe(device_t dev) { ATA_NFORCE_MCP89_AA, 0, NVAHCI, 0, ATA_SA300, "nForce MCP89" }, { ATA_NFORCE_MCP89_AB, 0, NVAHCI, 0, ATA_SA300, "nForce MCP89" }, { 0, 0, 0, 0, 0, 0}} ; + static struct ata_chip_id quirk_apple_mcp89 = + { ATA_NFORCE_MCP89_A1, 0, 0, 0, ATA_UDMA6, "nForce MCP89" }; if (pci_get_vendor(dev) != ATA_NVIDIA_ID) return ENXIO; @@ -177,6 +179,14 @@ ata_nvidia_probe(device_t dev) if (!(ctlr->chip = ata_match_chip(dev, ids))) return ENXIO; + /* + * XXX Recent Apple Mac with this chipset does not work in SATA mode + * for an unknown reason. Force PATA mode for now. + */ + if (ctlr->chip->chipid == ATA_NFORCE_MCP89_A1 && + pci_get_subvendor(dev) == 0x106b && pci_get_subdevice(dev) == 0xcb89) + ctlr->chip = &quirk_apple_mcp89; + ata_set_desc(dev); if (ctlr->chip->cfg1 & NVAHCI) ctlr->chipinit = ata_ahci_chipinit;