2823
2824
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_TI, 0xb800, fixup_ti816x_class);
2826
/* Some PCIe devices do not work reliably with the claimed maximum
2827
* payload size supported.
2829
static void __devinit fixup_mpss_256(struct pci_dev *dev)
2831
dev->pcie_mpss = 1; /* 256 bytes */
2833
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SOLARFLARE,
2834
PCI_DEVICE_ID_SOLARFLARE_SFC4000A_0, fixup_mpss_256);
2835
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SOLARFLARE,
2836
PCI_DEVICE_ID_SOLARFLARE_SFC4000A_1, fixup_mpss_256);
2837
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SOLARFLARE,
2838
PCI_DEVICE_ID_SOLARFLARE_SFC4000B, fixup_mpss_256);
2840
/* Intel 5000 and 5100 Memory controllers have an errata with read completion
2841
* coalescing (which is enabled by default on some BIOSes) and MPS of 256B.
2842
* Since there is no way of knowing what the PCIE MPS on each fabric will be
2843
* until all of the devices are discovered and buses walked, read completion
2844
* coalescing must be disabled. Unfortunately, it cannot be re-enabled because
2845
* it is possible to hotplug a device with MPS of 256B.
2847
static void __devinit quirk_intel_mc_errata(struct pci_dev *dev)
2852
if (pcie_bus_config == PCIE_BUS_TUNE_OFF)
2855
/* Intel errata specifies bits to change but does not say what they are.
2856
* Keeping them magical until such time as the registers and values can
2859
err = pci_read_config_word(dev, 0x48, &rcc);
2861
dev_err(&dev->dev, "Error attempting to read the read "
2862
"completion coalescing register.\n");
2866
if (!(rcc & (1 << 10)))
2871
err = pci_write_config_word(dev, 0x48, rcc);
2873
dev_err(&dev->dev, "Error attempting to write the read "
2874
"completion coalescing register.\n");
2878
pr_info_once("Read completion coalescing disabled due to hardware "
2879
"errata relating to 256B MPS.\n");
2881
/* Intel 5000 series memory controllers and ports 2-7 */
2882
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25c0, quirk_intel_mc_errata);
2883
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25d0, quirk_intel_mc_errata);
2884
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25d4, quirk_intel_mc_errata);
2885
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25d8, quirk_intel_mc_errata);
2886
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25e2, quirk_intel_mc_errata);
2887
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25e3, quirk_intel_mc_errata);
2888
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25e4, quirk_intel_mc_errata);
2889
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25e5, quirk_intel_mc_errata);
2890
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25e6, quirk_intel_mc_errata);
2891
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25e7, quirk_intel_mc_errata);
2892
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25f7, quirk_intel_mc_errata);
2893
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25f8, quirk_intel_mc_errata);
2894
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25f9, quirk_intel_mc_errata);
2895
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25fa, quirk_intel_mc_errata);
2896
/* Intel 5100 series memory controllers and ports 2-7 */
2897
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65c0, quirk_intel_mc_errata);
2898
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65e2, quirk_intel_mc_errata);
2899
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65e3, quirk_intel_mc_errata);
2900
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65e4, quirk_intel_mc_errata);
2901
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65e5, quirk_intel_mc_errata);
2902
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65e6, quirk_intel_mc_errata);
2903
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65e7, quirk_intel_mc_errata);
2904
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f7, quirk_intel_mc_errata);
2905
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f8, quirk_intel_mc_errata);
2906
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
2907
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
2825
2909
static void pci_do_fixups(struct pci_dev *dev, struct pci_fixup *f,
2826
2910
struct pci_fixup *end)