[PATCH v2] of: Fix "dma-ranges" handling for bus controllers

Robin Murphy robin.murphy at arm.com
Tue Oct 4 04:10:22 PDT 2022


On 2022-09-30 20:39, Rob Herring wrote:
> On Thu, 29 Sep 2022 13:48:38 +0100, Robin Murphy wrote:
>> Commit 951d48855d86 ("of: Make of_dma_get_range() work on bus nodes")
>> relaxed the handling of "dma-ranges" for any leaf node on the assumption
>> that it would still represent a usage error for the property to be
>> present on a non-bus leaf node. However there turns out to be a fiddly
>> case where a bus also represents a DMA-capable device in its own right,
>> such as a PCIe root complex with an integrated DMA engine on its
>> platform side. In such cases, "dma-ranges" translation is entirely valid
>> for devices discovered behind the bus, but should not be erroneously
>> applied to the bus controller device itself which operates in its
>> parent's address space. Fix this by restoring the previous behaviour for
>> the specific case where a device is configured via its own OF node,
>> since it is logical to assume that a device should never represent its
>> own parent bus.
>>
>> Reported-by: Serge Semin <Sergey.Semin at baikalelectronics.ru>
>> Signed-off-by: Robin Murphy <robin.murphy at arm.com>
>> ---
>>
>> v2: Fix !HAS_DMA build error
>>
>>   drivers/of/address.c    | 4 +++-
>>   drivers/of/device.c     | 9 ++++++++-
>>   drivers/of/of_private.h | 5 +++++
>>   3 files changed, 16 insertions(+), 2 deletions(-)
>>
> 
> Applied, thanks!
> 
> I assume this was not tagged with Fixes or stable because there is not
> yet a user that needs it? I didn't add it either because I'm a bit
> worried about regressions and applying this just before the merge
> window. So send it to stable later if anyone cares.

Indeed this was only brought to light by a patch series that Serge is 
working on, so although it's technically a fix I don't believe it's 
affecting any in-tree users yet, thus doesn't warrant backporting.

Cheers,
Robin.



More information about the linux-arm-kernel mailing list