|
@@ -4026,6 +4026,68 @@ static void quirk_relaxedordering_disable(struct pci_dev *dev)
|
|
|
dev_info(&dev->dev, "Disable Relaxed Ordering Attributes to avoid PCIe Completion erratum\n");
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * Intel Xeon processors based on Broadwell/Haswell microarchitecture Root
|
|
|
+ * Complex has a Flow Control Credit issue which can cause performance
|
|
|
+ * problems with Upstream Transaction Layer Packets with Relaxed Ordering set.
|
|
|
+ */
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f01, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f02, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f03, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f04, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f05, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f06, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f07, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f08, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f09, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0a, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0b, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0c, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0d, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0e, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f01, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f02, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f03, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f04, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f05, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f06, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f07, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f08, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f09, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0a, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0b, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0c, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0d, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0e, PCI_CLASS_NOT_DEFINED, 8,
|
|
|
+ quirk_relaxedordering_disable);
|
|
|
+
|
|
|
/*
|
|
|
* Per PCIe r3.0, sec 2.2.9, "Completion headers must supply the same
|
|
|
* values for the Attribute as were supplied in the header of the
|