linux/drivers/of
Robin Murphy 7232888366 of: restrict DMA configuration
Moving DMA configuration to happen later at driver probe time had the
unnoticed side-effect that we now perform DMA configuration for *every*
device represented in DT, rather than only those explicitly created by
the of_platform and PCI code.

As Christoph points out, this is not really the best thing to do. Whilst
there may well be other DMA-capable buses that can benefit from having
their children automatically configured after the bridge has probed,
there are also plenty of others like USB, MDIO, etc. that definitely do
not support DMA and should not be indiscriminately processed.

The good news is that in most cases the DT "dma-ranges" property serves
as an appropriate indicator - per a strict interpretation of the spec,
anything lacking a "dma-ranges" property should be considered not to
have a mapping of DMA address space from its children to its parent,
thus anything for which of_dma_get_range() does not succeed does not
need DMA configuration. Certain bus types have a general expectation of
DMA capability and carry a well-established precedent that an absent
"dma-ranges" implies the same as the empty property, so we automatically
opt those in to DMA configuration regardless, to avoid regressing most
existing platforms.

Fixes: 09515ef5dd ("of/acpi: Configure dma operations at probe time for platform/amba/pci bus devices")
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2017-09-01 09:49:17 +02:00
..
unittest-data vsprintf: Add %p extension "%pOF" for device tree 2017-06-27 12:36:40 -05:00
Kconfig mtd: Kill the OF_MTD Kconfig option 2016-09-23 09:35:16 +02:00
Makefile of: Move OF property and graph API from base.c to property.c 2017-06-01 08:50:45 -05:00
address.c of: address.c header comment typo 2017-06-22 11:15:00 -05:00
base.c Merge branch 'dt/property-move' into dt/next 2017-07-05 08:31:52 -05:00
device.c of: restrict DMA configuration 2017-09-01 09:49:17 +02:00
dynamic.c of: make __of_attach_node() static 2017-06-22 11:16:35 -05:00
fdt.c DeviceTree for 4.13: 2017-07-07 10:37:54 -07:00
fdt_address.c of: use pr_fmt prefix for all console printing 2016-07-18 16:57:42 -05:00
irq.c of: irq: fix of_irq_to_resource() error check 2017-07-21 16:58:55 -05:00
of_mdio.c of_mdio: move of_mdio_parse_addr to header file 2017-06-13 14:00:16 -04:00
of_net.c of_net: factor out repetitive code from of_get_mac_address() 2015-03-29 08:56:17 +01:00
of_numa.c of: fix "/cpus" reference leak in of_numa_parse_cpu_nodes() 2017-04-18 11:04:12 -05:00
of_pci.c of/pci: Remove unused MSI controller helpers 2017-03-14 15:10:11 -05:00
of_pci_irq.c OF/PCI: Update of_irq_parse_and_map_pci() comment 2017-07-02 16:14:28 -05:00
of_private.h of: find_node_by_full_name rewrite to compare each level 2017-06-22 12:38:29 -05:00
of_reserved_mem.c Partially Revert "of: fix sparse warnings in fdt, irq, reserved mem, and resolver code" 2017-05-11 10:26:22 -05:00
overlay.c of: detect invalid phandle in overlay 2017-06-22 11:19:09 -05:00
pdt.c of: Eliminate of_allnodes list 2014-11-04 13:29:38 +00:00
platform.c DeviceTree for 4.13: 2017-07-07 10:37:54 -07:00
property.c device property: Fix usecount for of_graph_get_port_parent() 2017-08-01 15:15:42 +01:00
resolver.c of: find_node_by_full_name rewrite to compare each level 2017-06-22 12:38:29 -05:00
unittest.c vsprintf: Add %p extension "%pOF" for device tree 2017-06-27 12:36:40 -05:00