diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2021-11-05 19:28:42 +0300 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2021-11-05 19:28:42 +0300 |
commit | 1cac57a267c1692594413f27913adec85ba3b02a (patch) | |
tree | a53ec47abecf4b33d9dbe7c744f21de5b4fc7382 /drivers/pci/pci.c | |
parent | 5e19196c142f040a7d99bcc1540e2052c68231e8 (diff) | |
parent | 5ec0a6fcb60ea430f8ee7e0bec22db9b22f856d3 (diff) | |
download | linux-1cac57a267c1692594413f27913adec85ba3b02a.tar.xz |
Merge branch 'pci/enumeration'
- Rename pcibios_add_device() to pcibios_device_add() since it's called
from pci_device_add() (Oliver O'Halloran)
- Don't try to enable AtomicOps on VFs, since they can only be enabled on
the PF (Selvin Xavier)
* pci/enumeration:
PCI: Do not enable AtomicOps on VFs
PCI: Rename pcibios_add_device() to pcibios_device_add()
Diffstat (limited to 'drivers/pci/pci.c')
-rw-r--r-- | drivers/pci/pci.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 17e4341df0ff..3d98834ccc3a 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -2116,14 +2116,14 @@ void pcim_pin_device(struct pci_dev *pdev) EXPORT_SYMBOL(pcim_pin_device); /* - * pcibios_add_device - provide arch specific hooks when adding device dev + * pcibios_device_add - provide arch specific hooks when adding device dev * @dev: the PCI device being added * * Permits the platform to provide architecture specific functionality when * devices are added. This is the default implementation. Architecture * implementations can override this. */ -int __weak pcibios_add_device(struct pci_dev *dev) +int __weak pcibios_device_add(struct pci_dev *dev) { return 0; } @@ -3744,6 +3744,14 @@ int pci_enable_atomic_ops_to_root(struct pci_dev *dev, u32 cap_mask) struct pci_dev *bridge; u32 cap, ctl2; + /* + * Per PCIe r5.0, sec 9.3.5.10, the AtomicOp Requester Enable bit + * in Device Control 2 is reserved in VFs and the PF value applies + * to all associated VFs. + */ + if (dev->is_virtfn) + return -EINVAL; + if (!pci_is_pcie(dev)) return -EINVAL; |