Skip to content

Commit 5cdd50d

Browse files
committed
Merge branch 'pci/virtualization'
- Add ACS quirk for Wangxun FF5xxx NICs, which don't advertise and ACS capability but do isolate functions as though PCI_ACS_RR and PCI_ACS_CR were set, so the functions can be in independent IOMMU groups (Mengyuan Lou) * pci/virtualization: PCI: Add ACS quirk for Wangxun FF5xxx NICs
2 parents ab02baf + aa46a37 commit 5cdd50d

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

drivers/pci/quirks.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4995,18 +4995,21 @@ static int pci_quirk_brcm_acs(struct pci_dev *dev, u16 acs_flags)
49954995
}
49964996

49974997
/*
4998-
* Wangxun 10G/1G NICs have no ACS capability, and on multi-function
4999-
* devices, peer-to-peer transactions are not be used between the functions.
5000-
* So add an ACS quirk for below devices to isolate functions.
4998+
* Wangxun 40G/25G/10G/1G NICs have no ACS capability, but on
4999+
* multi-function devices, the hardware isolates the functions by
5000+
* directing all peer-to-peer traffic upstream as though PCI_ACS_RR and
5001+
* PCI_ACS_CR were set.
50015002
* SFxxx 1G NICs(em).
50025003
* RP1000/RP2000 10G NICs(sp).
5004+
* FF5xxx 40G/25G/10G NICs(aml).
50035005
*/
50045006
static int pci_quirk_wangxun_nic_acs(struct pci_dev *dev, u16 acs_flags)
50055007
{
50065008
switch (dev->device) {
5007-
case 0x0100 ... 0x010F:
5008-
case 0x1001:
5009-
case 0x2001:
5009+
case 0x0100 ... 0x010F: /* EM */
5010+
case 0x1001: case 0x2001: /* SP */
5011+
case 0x5010: case 0x5025: case 0x5040: /* AML */
5012+
case 0x5110: case 0x5125: case 0x5140: /* AML */
50105013
return pci_acs_ctrl_enabled(acs_flags,
50115014
PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF);
50125015
}

0 commit comments

Comments
 (0)