summaryrefslogtreecommitdiff
path: root/drivers/pci/of.c
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2019-05-14 02:34:30 +0300
committerBjorn Helgaas <bhelgaas@google.com>2019-05-14 02:34:30 +0300
commit178901bf6a7d8e6d22fb8265a8886f1ba0272fc7 (patch)
tree99bf1c3a549db7c7044c30afcbefbb5f69ddd44f /drivers/pci/of.c
parent156752817cb090643f7e20094d17dbd2c3f14f0d (diff)
parent2dbce590117981196fe355efc0569bc6f949ae9b (diff)
downloadlinux-178901bf6a7d8e6d22fb8265a8886f1ba0272fc7.tar.xz
Merge branch 'pci/enumeration'
- Enable PCIe services for host controller drivers that use managed host bridge alloc (Jean-Philippe Brucker) - Add quirk to clear PCIe Retrain Link bit to work around Pericom bridge erratum (Stefan Mätje) - Add "external-facing" DT property to identify cases where we require IOMMU protection from untrusted devices (Jean-Philippe Brucker) - Support fixed bus numbers from bridge Enhanced Allocation capabilities (Subbaraya Sundeep) * pci/enumeration: PCI: Assign bus numbers present in EA capability for bridges PCI: OF: Support "external-facing" property dt-bindings: Add "external-facing" PCIe port property PCI: Rework pcie_retrain_link() wait loop PCI: Work around Pericom PCIe-to-PCI bridge Retrain Link erratum PCI: Factor out pcie_retrain_link() function PCI: Init PCIe feature bits for managed host bridge alloc
Diffstat (limited to 'drivers/pci/of.c')
-rw-r--r--drivers/pci/of.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/pci/of.c b/drivers/pci/of.c
index 3d32da15c215..67376cf45880 100644
--- a/drivers/pci/of.c
+++ b/drivers/pci/of.c
@@ -31,10 +31,16 @@ void pci_release_of_node(struct pci_dev *dev)
void pci_set_bus_of_node(struct pci_bus *bus)
{
- if (bus->self == NULL)
- bus->dev.of_node = pcibios_get_phb_of_node(bus);
- else
- bus->dev.of_node = of_node_get(bus->self->dev.of_node);
+ struct device_node *node;
+
+ if (bus->self == NULL) {
+ node = pcibios_get_phb_of_node(bus);
+ } else {
+ node = of_node_get(bus->self->dev.of_node);
+ if (node && of_property_read_bool(node, "external-facing"))
+ bus->self->untrusted = true;
+ }
+ bus->dev.of_node = node;
}
void pci_release_bus_of_node(struct pci_bus *bus)