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:
parent
2d07ad44e7
commit
455ed25b59
|
@ -4835,6 +4835,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);
|
||||
}
|
||||
|
||||
/*
|
||||
* 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 {
|
||||
u16 vendor;
|
||||
u16 device;
|
||||
|
@ -4980,6 +5000,8 @@ static const struct pci_dev_acs_enabled {
|
|||
{ PCI_VENDOR_ID_NXP, 0x8d9b, pci_quirk_nxp_rp_acs },
|
||||
/* Zhaoxin Root/Downstream Ports */
|
||||
{ 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 }
|
||||
};
|
||||
|
||||
|
|
|
@ -3012,6 +3012,8 @@
|
|||
#define PCI_DEVICE_ID_INTEL_VMD_9A0B 0x9a0b
|
||||
#define PCI_DEVICE_ID_INTEL_S21152BB 0xb152
|
||||
|
||||
#define PCI_VENDOR_ID_WANGXUN 0x8088
|
||||
|
||||
#define PCI_VENDOR_ID_SCALEMP 0x8686
|
||||
#define PCI_DEVICE_ID_SCALEMP_VSMP_CTL 0x1010
|
||||
|
||||
|
|
Loading…
Reference in New Issue