diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-25 05:12:11 (GMT) |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-25 05:12:11 (GMT) |
commit | 7491612c7d2cf560bb96dc02bb53d555b41adbb8 (patch) | |
tree | e06601f7996a18732c112729078094671a8d4658 | |
parent | baac35c4155a8aa826c70acee6553368ca5243a2 (diff) | |
parent | 453d3131ec7aab82eaaa8401a50522a337092aa8 (diff) | |
download | linux-7491612c7d2cf560bb96dc02bb53d555b41adbb8.tar.xz |
Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
ahci: disable FPDMA auto-activate optimization on NVIDIA AHCI
-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 b343903..a6a736a 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) 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; |