|
@@ -3082,8 +3082,16 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
ahci_save_initial_config(pdev, hpriv);
|
|
|
|
|
|
/* prepare host */
|
|
|
- if (hpriv->cap & HOST_CAP_NCQ)
|
|
|
- pi.flags |= ATA_FLAG_NCQ | ATA_FLAG_FPDMA_AA;
|
|
|
+ if (hpriv->cap & HOST_CAP_NCQ) {
|
|
|
+ pi.flags |= ATA_FLAG_NCQ;
|
|
|
+ /* Auto-activate optimization is supposed to be supported on
|
|
|
+ all AHCI controllers indicating NCQ support, but it seems
|
|
|
+ to be broken at least on some NVIDIA MCP79 chipsets.
|
|
|
+ Until we get info on which NVIDIA chipsets don't have this
|
|
|
+ issue, if any, disable AA on all NVIDIA AHCIs. */
|
|
|
+ if (pdev->vendor != PCI_VENDOR_ID_NVIDIA)
|
|
|
+ pi.flags |= ATA_FLAG_FPDMA_AA;
|
|
|
+ }
|
|
|
|
|
|
if (hpriv->cap & HOST_CAP_PMP)
|
|
|
pi.flags |= ATA_FLAG_PMP;
|