diff options
Diffstat (limited to 'drivers/ata/ahci.c')
-rw-r--r-- | drivers/ata/ahci.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index b34390347c16..a6a736a7dbf2 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
@@ -3082,8 +3082,16 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
3082 | ahci_save_initial_config(pdev, hpriv); | 3082 | ahci_save_initial_config(pdev, hpriv); |
3083 | 3083 | ||
3084 | /* prepare host */ | 3084 | /* prepare host */ |
3085 | if (hpriv->cap & HOST_CAP_NCQ) | 3085 | if (hpriv->cap & HOST_CAP_NCQ) { |
3086 | pi.flags |= ATA_FLAG_NCQ | ATA_FLAG_FPDMA_AA; | 3086 | pi.flags |= ATA_FLAG_NCQ; |
3087 | /* Auto-activate optimization is supposed to be supported on | ||
3088 | all AHCI controllers indicating NCQ support, but it seems | ||
3089 | to be broken at least on some NVIDIA MCP79 chipsets. | ||
3090 | Until we get info on which NVIDIA chipsets don't have this | ||
3091 | issue, if any, disable AA on all NVIDIA AHCIs. */ | ||
3092 | if (pdev->vendor != PCI_VENDOR_ID_NVIDIA) | ||
3093 | pi.flags |= ATA_FLAG_FPDMA_AA; | ||
3094 | } | ||
3087 | 3095 | ||
3088 | if (hpriv->cap & HOST_CAP_PMP) | 3096 | if (hpriv->cap & HOST_CAP_PMP) |
3089 | pi.flags |= ATA_FLAG_PMP; | 3097 | pi.flags |= ATA_FLAG_PMP; |