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