diff options
Diffstat (limited to 'drivers/pci/quirks.c')
| -rw-r--r-- | drivers/pci/quirks.c | 29 | 
1 files changed, 9 insertions, 20 deletions
| diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 653660e3ba9e..dcb229de1acb 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -206,16 +206,11 @@ DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID,  				PCI_CLASS_BRIDGE_HOST, 8, quirk_mmio_always_on);  /* - * The Mellanox Tavor device gives false positive parity errors.  Mark this - * device with a broken_parity_status to allow PCI scanning code to "skip" - * this now blacklisted device. + * The Mellanox Tavor device gives false positive parity errors.  Disable + * parity error reporting.   */ -static void quirk_mellanox_tavor(struct pci_dev *dev) -{ -	dev->broken_parity_status = 1;	/* This device gives false positives */ -} -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX, PCI_DEVICE_ID_MELLANOX_TAVOR, quirk_mellanox_tavor); -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX, PCI_DEVICE_ID_MELLANOX_TAVOR_BRIDGE, quirk_mellanox_tavor); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX, PCI_DEVICE_ID_MELLANOX_TAVOR, pci_disable_parity); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX, PCI_DEVICE_ID_MELLANOX_TAVOR_BRIDGE, pci_disable_parity);  /*   * Deal with broken BIOSes that neglect to enable passive release, @@ -2585,10 +2580,8 @@ static int msi_ht_cap_enabled(struct pci_dev *dev)  /* Check the HyperTransport MSI mapping to know whether MSI is enabled or not */  static void quirk_msi_ht_cap(struct pci_dev *dev)  { -	if (dev->subordinate && !msi_ht_cap_enabled(dev)) { -		pci_warn(dev, "MSI quirk detected; subordinate MSI disabled\n"); -		dev->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MSI; -	} +	if (!msi_ht_cap_enabled(dev)) +		quirk_disable_msi(dev);  }  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT2000_PCIE,  			quirk_msi_ht_cap); @@ -2601,9 +2594,6 @@ static void quirk_nvidia_ck804_msi_ht_cap(struct pci_dev *dev)  {  	struct pci_dev *pdev; -	if (!dev->subordinate) -		return; -  	/*  	 * Check HT MSI cap on this chipset and the root one.  A single one  	 * having MSI is enough to be sure that MSI is supported. @@ -2611,10 +2601,8 @@ static void quirk_nvidia_ck804_msi_ht_cap(struct pci_dev *dev)  	pdev = pci_get_slot(dev->bus, 0);  	if (!pdev)  		return; -	if (!msi_ht_cap_enabled(dev) && !msi_ht_cap_enabled(pdev)) { -		pci_warn(dev, "MSI quirk detected; subordinate MSI disabled\n"); -		dev->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MSI; -	} +	if (!msi_ht_cap_enabled(pdev)) +		quirk_msi_ht_cap(dev);  	pci_dev_put(pdev);  }  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE, @@ -3922,6 +3910,7 @@ static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {  		reset_ivb_igd },  	{ PCI_VENDOR_ID_SAMSUNG, 0xa804, nvme_disable_and_flr },  	{ PCI_VENDOR_ID_INTEL, 0x0953, delay_250ms_after_flr }, +	{ PCI_VENDOR_ID_INTEL, 0x0a54, delay_250ms_after_flr },  	{ PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,  		reset_chelsio_generic_dev },  	{ 0 } | 
