mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
PCI: Add ACS quirk for Wangxun NICs
[ Upstream commit a2b9b123cc ]
Wangxun has verified there is no peer-to-peer between functions for the
below selection of SFxxx, RP1000 and RP2000 NICS. They may be
multi-function devices, but the hardware does not advertise ACS capability.
Add an ACS quirk for these devices so the functions can be in independent
IOMMU groups.
Link: https://lore.kernel.org/r/20230207102419.44326-1-mengyuanlou@net-swift.com
Signed-off-by: Mengyuan Lou <mengyuanlou@net-swift.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
faa050d2ff
commit
01923e3196
@@ -4797,6 +4797,26 @@ static int pci_quirk_brcm_acs(struct pci_dev *dev, u16 acs_flags)
|
|||||||
PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF);
|
PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wangxun 10G/1G NICs have no ACS capability, and on multi-function
|
||||||
|
* devices, peer-to-peer transactions are not be used between the functions.
|
||||||
|
* So add an ACS quirk for below devices to isolate functions.
|
||||||
|
* SFxxx 1G NICs(em).
|
||||||
|
* RP1000/RP2000 10G NICs(sp).
|
||||||
|
*/
|
||||||
|
static int pci_quirk_wangxun_nic_acs(struct pci_dev *dev, u16 acs_flags)
|
||||||
|
{
|
||||||
|
switch (dev->device) {
|
||||||
|
case 0x0100 ... 0x010F:
|
||||||
|
case 0x1001:
|
||||||
|
case 0x2001:
|
||||||
|
return pci_acs_ctrl_enabled(acs_flags,
|
||||||
|
PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct pci_dev_acs_enabled {
|
static const struct pci_dev_acs_enabled {
|
||||||
u16 vendor;
|
u16 vendor;
|
||||||
u16 device;
|
u16 device;
|
||||||
@@ -4942,6 +4962,8 @@ static const struct pci_dev_acs_enabled {
|
|||||||
{ PCI_VENDOR_ID_NXP, 0x8d9b, pci_quirk_nxp_rp_acs },
|
{ PCI_VENDOR_ID_NXP, 0x8d9b, pci_quirk_nxp_rp_acs },
|
||||||
/* Zhaoxin Root/Downstream Ports */
|
/* Zhaoxin Root/Downstream Ports */
|
||||||
{ PCI_VENDOR_ID_ZHAOXIN, PCI_ANY_ID, pci_quirk_zhaoxin_pcie_ports_acs },
|
{ PCI_VENDOR_ID_ZHAOXIN, PCI_ANY_ID, pci_quirk_zhaoxin_pcie_ports_acs },
|
||||||
|
/* Wangxun nics */
|
||||||
|
{ PCI_VENDOR_ID_WANGXUN, PCI_ANY_ID, pci_quirk_wangxun_nic_acs },
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -3033,6 +3033,8 @@
|
|||||||
#define PCI_DEVICE_ID_INTEL_VMD_9A0B 0x9a0b
|
#define PCI_DEVICE_ID_INTEL_VMD_9A0B 0x9a0b
|
||||||
#define PCI_DEVICE_ID_INTEL_S21152BB 0xb152
|
#define PCI_DEVICE_ID_INTEL_S21152BB 0xb152
|
||||||
|
|
||||||
|
#define PCI_VENDOR_ID_WANGXUN 0x8088
|
||||||
|
|
||||||
#define PCI_VENDOR_ID_SCALEMP 0x8686
|
#define PCI_VENDOR_ID_SCALEMP 0x8686
|
||||||
#define PCI_DEVICE_ID_SCALEMP_VSMP_CTL 0x1010
|
#define PCI_DEVICE_ID_SCALEMP_VSMP_CTL 0x1010
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user