Thread (13 messages) flat view 13 messages, 3 authors, 2017-03-30

[RFC PATCH 3/3] of: fix node traversing in of_dma_get_range

From: robin.murphy@arm.com (Robin Murphy)
Date: 2017-03-27 14:45:29
Also in: linux-devicetree, linux-iommu, linux-pci, lkml

Hi Rob,

On 27/03/17 15:34, Rob Herring wrote:
On Sat, Mar 25, 2017 at 12:31 AM, Oza Pawandeep [off-list ref] wrote:
quoted
it jumps to the parent node without examining the child node.
also with that, it throws "no dma-ranges found for node"
for pci dma-ranges.

this patch fixes device node traversing for dma-ranges.
What's the DT look like that doesn't work?
The problem is the bodge in pci_dma_configure() where we don't have an
OF node for the actual device itself, so pass in the host bridge's OF
node instead. This happens to work well enough for dma-coherent, but I
don't think dma-ranges was even considered at the time.

As it happens I'm currently halfway through writing an experiment
wherein pci_dma_configure() creates a temporary child node for the
of_dma_configure() call if no other suitable alternative (e.g. some
intermediate bridge node) exists. How hard are you likely to NAK that
approach? ;)
dma-ranges is supposed to be a bus property, not a device's property.
So looking at the parent is correct behavior generally.
Indeed, this patch as-is will break currently correct DTs (because we
won't find dma-ranges on the device, so will bail before even looking at
the parent as we should).

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