Add helper to convert a struct resource to a peer DMA address.
Signed-off-by: Will Davis <[email protected]>
---
include/linux/pci.h | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/include/linux/pci.h b/include/linux/pci.h
index db0cb51..2a9deff 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1508,6 +1508,22 @@ static inline void pci_resource_to_user(const struct
pci_dev *dev, int bar,
}
#endif /* HAVE_ARCH_PCI_RESOURCE_TO_USER */
+#ifdef CONFIG_HAS_DMA_P2P
+static inline bool pci_resource_to_peer(struct pci_dev *dev,
+ struct pci_dev *peer,
+ struct resource *res,
+ dma_peer_addr_t *peer_addr) {
+ if (pci_peer_traffic_supported(dev, peer)) {
+ struct pci_bus_region region;
+
+ pcibios_resource_to_bus(dev->bus, ®ion, res);
+ *peer_addr = region.start;
+ return true;
+ }
+
+ return false;
+}
+#endif /* CONFIG_HAS_DMA_P2P */
/*
* The world is not perfect and supplies us with broken PCI devices.
--
2.5.1
_______________________________________________
iommu mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu