diff options
Diffstat (limited to 'drivers/pci/quirks.c')
| -rw-r--r-- | drivers/pci/quirks.c | 23 | 
1 files changed, 15 insertions, 8 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 4937a088d7d8..a3a1a0ea64f4 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -1571,7 +1571,7 @@ static void asus_hides_smbus_lpc_ich6_suspend(struct pci_dev *dev)  	pci_read_config_dword(dev, 0xF0, &rcba);  	/* use bits 31:14, 16 kB aligned */ -	asus_rcba_base = ioremap_nocache(rcba & 0xFFFFC000, 0x4000); +	asus_rcba_base = ioremap(rcba & 0xFFFFC000, 0x4000);  	if (asus_rcba_base == NULL)  		return;  } @@ -4784,7 +4784,7 @@ static int pci_quirk_enable_intel_lpc_acs(struct pci_dev *dev)  	if (!(rcba & INTEL_LPC_RCBA_ENABLE))  		return -EINVAL; -	rcba_mem = ioremap_nocache(rcba & INTEL_LPC_RCBA_MASK, +	rcba_mem = ioremap(rcba & INTEL_LPC_RCBA_MASK,  				   PAGE_ALIGN(INTEL_UPDCR_REG));  	if (!rcba_mem)  		return -ENOMEM; @@ -5074,18 +5074,25 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0422, quirk_no_ext_tags);  #ifdef CONFIG_PCI_ATS  /* - * Some devices have a broken ATS implementation causing IOMMU stalls. - * Don't use ATS for those devices. + * Some devices require additional driver setup to enable ATS.  Don't use + * ATS for those devices as ATS will be enabled before the driver has had a + * chance to load and configure the device.   */ -static void quirk_no_ats(struct pci_dev *pdev) +static void quirk_amd_harvest_no_ats(struct pci_dev *pdev)  { -	pci_info(pdev, "disabling ATS (broken on this device)\n"); +	if (pdev->device == 0x7340 && pdev->revision != 0xc5) +		return; + +	pci_info(pdev, "disabling ATS\n");  	pdev->ats_cap = 0;  }  /* AMD Stoney platform GPU */ -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x98e4, quirk_no_ats); -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x6900, quirk_no_ats); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x98e4, quirk_amd_harvest_no_ats); +/* AMD Iceland dGPU */ +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x6900, quirk_amd_harvest_no_ats); +/* AMD Navi14 dGPU */ +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x7340, quirk_amd_harvest_no_ats);  #endif /* CONFIG_PCI_ATS */  /* Freescale PCIe doesn't support MSI in RC mode */  |