Thread (19 messages) 19 messages, 5 authors, 2015-11-18

[PATCH V5 8/9] PCI: OF: Move of_pci_dma_configure() to pci_dma_configure()

From: arnd@arndb.de (Arnd Bergmann)
Date: 2015-11-18 12:42:35
Also in: linux-acpi, linux-pci, lkml

On Wednesday 18 November 2015 12:00:32 Robin Murphy wrote:
On 17/11/15 15:00, Robin Murphy wrote:
quoted
On 28/10/15 22:50, Suravee Suthikulpanit wrote:
quoted
Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
Acked-by: Rob Herring <robh+dt@kernel.org>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Hanjun Guo <redacted>
CC: Rafael J. Wysocki <redacted>
[...]
quoted
quoted
+/**
+ * pci_dma_configure - Setup DMA configuration
+ * @dev: ptr to pci_dev struct of the PCI device
+ *
+ * Function to update PCI devices's DMA configuration using the same
+ * info from the OF node of host bridge's parent (if any).
+ */
+static void pci_dma_configure(struct pci_dev *dev)
+{
+    struct device *bridge = pci_get_host_bridge_device(dev);
+
+    if (IS_ENABLED(CONFIG_OF) && dev->dev.of_node) {
Previously I was seeing of_dma_configure, and thus of_iommu_configure,
called for every PCI device on Juno. The check above now prevents this
happening, since the PCI devices are probed directly from the bus and
don't have OF nodes of their own. They now get left in some
half-configured state where arch_setup_dma_ops isn't called either.
Just to follow up on that, Arnd's patch to tidy up dma_get_ops (now 
queued[1]) makes this even worse, since preventing arch_setup_dma_ops 
being called means the PCI devices now get the dummy DMA ops which leave 
the drivers failing to probe at all, IOMMU hacks or not 
Ok, glad we found that with my patch then. We really have to
configure the DMA (offset/size/coherency/iommu) for all devices that might
be masters, otherwise things can randomly go wrong.

	ARnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help