Re: [PATCH] checks: Avoid warnings for reg override in __overlay__

Herve Codina <[email protected]> Thu, 18 Jun 2026 22:24:38 +0200
Newsgroups org.kernel.vger.devicetree-compiler
Organization Bootlin
Message-ID <[email protected]>
On Thu, 18 Jun 2026 18:16:05 +1000
David Gibson <[email protected]> wrote:

> On Wed, Jun 17, 2026 at 09:58:03PM -0500, Rob Herring wrote:
> > On Wed, Jun 17, 2026 at 6:35 PM Brian Norris <[email protected]> wrote:  
> > >
> > > Hi Rob,
> > >
> > > On Wed, Jun 17, 2026 at 05:54:42PM -0500, Rob Herring wrote:  
> > > > I would argue (and did the last time this came up IIRC) the overlay  
> > >
> > > I gave a quick look for prior art, but didn't go far enough. I see this
> > > was a similar conversation:
> > >
> > > [PATCH v2] checks: Suppress warnings on overlay fragments
> > > https://lore.kernel.org/all/[email protected]/
> > >
> > > I don't think it had a satisfying conclusion though.
> > >  
> > > > should target the parent node instead and then you can put in
> > > > #address-cells and #size-cells in the overlay to make it pass checks
> > > > (and make 'reg' parsable without applying the overlay).  
> > >
> > > This implies we can't actually target the appropriate node via phandle
> > > any more, and so we lose the ergonomics that phandles provide. Where
> > > previouly an overlay could be resilient to node renaming and other sorts
> > > of incompatibilities between a dtb and a dtbo (the overlay wouldn't
> > > apply if &foo isn't found), now we'd have to open-code the node name and
> > > maybe even its parent node name in the overlay. If either of those were
> > > wrong ... we wouldn't notice at all, unless there's an obvious
> > > functional breakage as a result.  
> > 
> > Why can't we use the parent node phandle?  
> 
> That assumes it has one, and that the name of the target node within
> its parent is fixed, not variable between boards that can take the
> same overlay.
> 
> This approach also normalises overwriting (presumably with the same
> values, but nothing verifies that) properties outside the device we're
> actually trying to update, exacerbating the write-anywhere problem
> that overlays already suffer from.
> 
> Targeting the parent node is not a good solution.
> 
> > > I acknowledge that it's difficult to parse and validate dtbos when they
> > > are low on context. But I don't see why we should emit false warnings
> > > for the possibly-correct, and more ergnomic approach.  
> > 
> > It just feels to me like we're disabling checks one by one on
> > overlays. And it's not just dtc checks we have to skip, but schema
> > checks too. We somewhat mitigate that by requiring (requesting really,
> > because it gets skipped) overlays to be applied to *something* at
> > build time, but that's the kernel tree which isn't everything.  
> 
> Yeah, the suggested patch is also not a good solution, comments on
> that email.
> 

For #address-cells/#size-cells, you can also have the properties set in the dtso
file either in the __overlay__ node or if, some other DT properties are needed,
in the fragment node.
  https://elixir.bootlin.com/linux/v7.1/source/drivers/misc/lan966x_pci.dtso#L25

Worth noting that, in linux code, when an overlay is applied if #address-cells
and/or #size-cells are identical to already existing ones, its fine. Otherwise,
an error is returned.
  https://elixir.bootlin.com/linux/v7.1/source/drivers/of/overlay.c#L322

We can have dtc checking reg values against #address-cells/#size-cells
and when the overlay is applied, there is guarantees the
#address-cells/#size-cells matches base DT existing ones.

It is not yet perfect but it is better than nothing.

Best regards,
Hervé