diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2019-09-23 17:10:10 -0400 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2019-09-23 17:10:10 -0400 |
commit | 6ce54f0219c8794b603b0dea2673cfa1998a137c (patch) | |
tree | 717c8373d583316503e27c1b247d47290a15dc31 /drivers/pci/quirks.c | |
parent | a10a1f60c7a35f59bee803fe2796ec5172e73edb (diff) | |
parent | 0d8006ddbe89cbaedef06a8789ddefa1164a3a77 (diff) |
Merge branch 'pci/misc'
- Use devm_add_action_or_reset() helper (Fuqian Huang)
- Mark expected switch fall-through (Gustavo A. R. Silva)
- Convert sysfs device attributes from __ATTR() to DEVICE_ATTR() (Kelsey
Skunberg)
- Convert sysfs file permissions from S_IRUSR etc to octal (Kelsey
Skunberg)
- Move SR-IOV sysfs functions to iov.c (Kelsey Skunberg)
- Add pci_info_ratelimited() to ratelimit PCI messages separately
(Krzysztof Wilczynski)
- Fix "'static' not at beginning of declaration" warnings (Krzysztof
Wilczynski)
- Clean up resource_alignment parameter to not require static buffer
(Logan Gunthorpe)
- Add ACS quirk for iProc PAXB (Abhinav Ratna)
- Add pci_irq_vector() and other stubs for !CONFIG_PCI (Herbert Xu)
* pci/misc:
PCI: Add pci_irq_vector() and other stubs when !CONFIG_PCI
PCI: Add ACS quirk for iProc PAXB
PCI: Force trailing new line to resource_alignment_param in sysfs
PCI: Move pci_[get|set]_resource_alignment_param() into their callers
PCI: Clean up resource_alignment parameter to not require static buffer
PCI: Use static const struct, not const static struct
PCI: Add pci_info_ratelimited() to ratelimit PCI separately
PCI/IOV: Remove group write permission from sriov_numvfs, sriov_drivers_autoprobe
PCI/IOV: Move sysfs SR-IOV functions to iov.c
PCI: sysfs: Change permissions from symbolic to octal
PCI: sysfs: Change DEVICE_ATTR() to DEVICE_ATTR_WO()
PCI: sysfs: Define device attributes with DEVICE_ATTR*()
PCI: Mark expected switch fall-through
PCI: Use devm_add_action_or_reset()
Diffstat (limited to 'drivers/pci/quirks.c')
-rw-r--r-- | drivers/pci/quirks.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 9ac1a7564c9e..a5be6291ebb8 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
@@ -4465,6 +4465,19 @@ static int pci_quirk_mf_endpoint_acs(struct pci_dev *dev, u16 acs_flags) | |||
4465 | return acs_flags ? 0 : 1; | 4465 | return acs_flags ? 0 : 1; |
4466 | } | 4466 | } |
4467 | 4467 | ||
4468 | static int pci_quirk_brcm_acs(struct pci_dev *dev, u16 acs_flags) | ||
4469 | { | ||
4470 | /* | ||
4471 | * iProc PAXB Root Ports don't advertise an ACS capability, but | ||
4472 | * they do not allow peer-to-peer transactions between Root Ports. | ||
4473 | * Allow each Root Port to be in a separate IOMMU group by masking | ||
4474 | * SV/RR/CR/UF bits. | ||
4475 | */ | ||
4476 | acs_flags &= ~(PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF); | ||
4477 | |||
4478 | return acs_flags ? 0 : 1; | ||
4479 | } | ||
4480 | |||
4468 | static const struct pci_dev_acs_enabled { | 4481 | static const struct pci_dev_acs_enabled { |
4469 | u16 vendor; | 4482 | u16 vendor; |
4470 | u16 device; | 4483 | u16 device; |
@@ -4558,6 +4571,7 @@ static const struct pci_dev_acs_enabled { | |||
4558 | { PCI_VENDOR_ID_AMPERE, 0xE00A, pci_quirk_xgene_acs }, | 4571 | { PCI_VENDOR_ID_AMPERE, 0xE00A, pci_quirk_xgene_acs }, |
4559 | { PCI_VENDOR_ID_AMPERE, 0xE00B, pci_quirk_xgene_acs }, | 4572 | { PCI_VENDOR_ID_AMPERE, 0xE00B, pci_quirk_xgene_acs }, |
4560 | { PCI_VENDOR_ID_AMPERE, 0xE00C, pci_quirk_xgene_acs }, | 4573 | { PCI_VENDOR_ID_AMPERE, 0xE00C, pci_quirk_xgene_acs }, |
4574 | { PCI_VENDOR_ID_BROADCOM, 0xD714, pci_quirk_brcm_acs }, | ||
4561 | { 0 } | 4575 | { 0 } |
4562 | }; | 4576 | }; |
4563 | 4577 | ||