Index: sys/dev/ahci/ahci.c =================================================================== --- sys/dev/ahci/ahci.c (revision 218413) +++ sys/dev/ahci/ahci.c (working copy) @@ -240,7 +240,7 @@ static struct { {0x0abe10de, 0x00, "NVIDIA MCP79", AHCI_Q_NOAA}, {0x0abf10de, 0x00, "NVIDIA MCP79", AHCI_Q_NOAA}, {0x0d8410de, 0x00, "NVIDIA MCP89", AHCI_Q_NOAA}, - {0x0d8510de, 0x00, "NVIDIA MCP89", AHCI_Q_NOAA}, + {0x0d8510de, 0x00, "NVIDIA MCP89", AHCI_Q_NOFORCE|AHCI_Q_NOAA}, {0x0d8610de, 0x00, "NVIDIA MCP89", AHCI_Q_NOAA}, {0x0d8710de, 0x00, "NVIDIA MCP89", AHCI_Q_NOAA}, {0x0d8810de, 0x00, "NVIDIA MCP89", AHCI_Q_NOAA}, Index: sys/dev/ata/chipsets/ata-nvidia.c =================================================================== --- sys/dev/ata/chipsets/ata-nvidia.c (revision 218413) +++ sys/dev/ata/chipsets/ata-nvidia.c (working copy) @@ -178,10 +178,12 @@ ata_nvidia_probe(device_t dev) return ENXIO; ata_set_desc(dev); - if (ctlr->chip->cfg1 & NVAHCI) + if ((ctlr->chip->chipid == ATA_NFORCE_MCP89_A1 && + pci_get_subclass(dev) == PCIS_STORAGE_IDE) || + (ctlr->chip->cfg1 & NVAHCI) == 0) + ctlr->chipinit = ata_nvidia_chipinit; + else ctlr->chipinit = ata_ahci_chipinit; - else - ctlr->chipinit = ata_nvidia_chipinit; return (BUS_PROBE_DEFAULT); }