diff options
author | Jean-Philippe Brucker <jean-philippe.brucker@arm.com> | 2019-04-11 15:40:27 +0300 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2019-04-12 00:17:53 +0300 |
commit | 9cb30a71acd45d65321c73160626f15fcdceba7a (patch) | |
tree | 24c1231798dc2569623e77e5ac3b3d828f6f28c5 /drivers/pci | |
parent | badd9f19f1992218b771c72e0cdc8825dd45938c (diff) | |
download | linux-9cb30a71acd45d65321c73160626f15fcdceba7a.tar.xz |
PCI: OF: Support "external-facing" property
Set the "untrusted" attribute to any PCIe port that has an
"external-facing" device tree property. Any device downstream of this port
will inherit the attribute and have only the strictest IOMMU protection.
Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/of.c | 14 |
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) |