hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/pci/quirks.c
....@@ -4130,6 +4130,8 @@
41304130 /* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c49 */
41314131 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9230,
41324132 quirk_dma_func1_alias);
4133
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9235,
4134
+ quirk_dma_func1_alias);
41334135 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TTI, 0x0642,
41344136 quirk_dma_func1_alias);
41354137 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TTI, 0x0645,
....@@ -4804,6 +4806,26 @@
48044806 PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF);
48054807 }
48064808
4809
+/*
4810
+ * Wangxun 10G/1G NICs have no ACS capability, and on multi-function
4811
+ * devices, peer-to-peer transactions are not be used between the functions.
4812
+ * So add an ACS quirk for below devices to isolate functions.
4813
+ * SFxxx 1G NICs(em).
4814
+ * RP1000/RP2000 10G NICs(sp).
4815
+ */
4816
+static int pci_quirk_wangxun_nic_acs(struct pci_dev *dev, u16 acs_flags)
4817
+{
4818
+ switch (dev->device) {
4819
+ case 0x0100 ... 0x010F:
4820
+ case 0x1001:
4821
+ case 0x2001:
4822
+ return pci_acs_ctrl_enabled(acs_flags,
4823
+ PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF);
4824
+ }
4825
+
4826
+ return false;
4827
+}
4828
+
48074829 static const struct pci_dev_acs_enabled {
48084830 u16 vendor;
48094831 u16 device;
....@@ -4949,6 +4971,8 @@
49494971 { PCI_VENDOR_ID_NXP, 0x8d9b, pci_quirk_nxp_rp_acs },
49504972 /* Zhaoxin Root/Downstream Ports */
49514973 { PCI_VENDOR_ID_ZHAOXIN, PCI_ANY_ID, pci_quirk_zhaoxin_pcie_ports_acs },
4974
+ /* Wangxun nics */
4975
+ { PCI_VENDOR_ID_WANGXUN, PCI_ANY_ID, pci_quirk_wangxun_nic_acs },
49524976 { 0 }
49534977 };
49544978
....@@ -5309,6 +5333,7 @@
53095333 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x1487, quirk_no_flr);
53105334 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x148c, quirk_no_flr);
53115335 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x149c, quirk_no_flr);
5336
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x7901, quirk_no_flr);
53125337 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1502, quirk_no_flr);
53135338 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1503, quirk_no_flr);
53145339