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

David Gibson <[email protected]> Fri, 19 Jun 2026 14:15:36 +1000
Newsgroups org.kernel.vger.devicetree-compiler
Message-ID <ajTCaMB1ZIfUMlgp@zatzit>
--Tn/ccXvv4d/cKgK6
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, Jun 18, 2026 at 10:24:38PM +0200, Herve Codina wrote:
> On Thu, 18 Jun 2026 18:16:05 +1000
> David Gibson <[email protected]> wrote:
>=20
> > On Wed, Jun 17, 2026 at 09:58:03PM -0500, Rob Herring wrote:
> > > On Wed, Jun 17, 2026 at 6:35=E2=80=AFPM Brian Norris <briannorris@chr=
omium.org> wrote: =20
> > > >
> > > > Hi Rob,
> > > >
> > > > On Wed, Jun 17, 2026 at 05:54:42PM -0500, Rob Herring wrote: =20
> > > > > I would argue (and did the last time this came up IIRC) the overl=
ay =20
> > > >
> > > > 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/20230308091539.11178-1-qun-wei.lin@medi=
atek.com/
> > > >
> > > > I don't think it had a satisfying conclusion though.
> > > > =20
> > > > > should target the parent node instead and then you can put in
> > > > > #address-cells and #size-cells in the overlay to make it pass che=
cks
> > > > > (and make 'reg' parsable without applying the overlay). =20
> > > >
> > > > This implies we can't actually target the appropriate node via phan=
dle
> > > > 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 nam=
e 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. =20
> > >=20
> > > Why can't we use the parent node phandle? =20
> >=20
> > 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.
> >=20
> > 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.
> >=20
> > Targeting the parent node is not a good solution.
> >=20
> > > > 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 warnin=
gs
> > > > for the possibly-correct, and more ergnomic approach. =20
> > >=20
> > > 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. =20
> >=20
> > Yeah, the suggested patch is also not a good solution, comments on
> > that email.
>=20
> For #address-cells/#size-cells, you can also have the properties set in t=
he dtso
> file either in the __overlay__ node or if, some other DT properties are n=
eeded,
> in the fragment node.
>   https://elixir.bootlin.com/linux/v7.1/source/drivers/misc/lan966x_pci.d=
tso#L25

Setting #address-cells or #size-cells in __overlay__ or descendents
thereof is reasonable, but won't address the relevant case here: here
the problem is the check on 'reg' of the target node, which depends on
#*-cells of the *parent* node, which doesn't exist within the overlay
fragment.

You _could_ set #*-cells in the fragment@ node, and I think that will
fool the check.  It's a real hack, though, and I'd consider at best
dubiously conforming to the overlay spec.

> 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. Othe=
rwise,
> an error is returned.
>   https://elixir.bootlin.com/linux/v7.1/source/drivers/of/overlay.c#L322
>=20
> 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.

But I'm guessing #*-cells in the fragment node *won't* be checked,
because that's not "applied" as such - it generally just has metadata
for the fragment.
>=20
> It is not yet perfect but it is better than nothing.
>=20
> Best regards,
> Herv=C3=A9
>=20

--=20
David Gibson (he or they)	| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you, not the other way
				| around.
http://www.ozlabs.org/~dgibson

--Tn/ccXvv4d/cKgK6
Content-Type: application/pgp-signature; name=signature.asc

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEO+dNsU4E3yXUXRK2zQJF27ox2GcFAmo0wlkACgkQzQJF27ox
2GcoaBAAqVjNeXto5Brq2JpiSska1WO66STqzm9I62sbFvLgiQ6YDbZuUP6OZOWQ
6bF4dXV36nY6WGBzrjCeSs/++DuQEToedAssTlLX9EgYdcMJYN2Z78eqca9L6KcY
HZ93AKSFIoTF6ykzGXB2mOERf+XTNgJoQBZniBzGRG1iXnnzGhkwaqiVle4hzU6u
sT/9vRajt7xgfRnVxXk2XJ7JxPkCsVQrMjs2urBAWo3MtC73nI142q0zcBHjkzje
szcx7ThgngKsptAPXX9HV9WmPnpVwfuap1Zc2vBjgQpgLD5Tnhbcl5bXtflS7awZ
44Fm4KEmfj8CGdRC2IykPB3TVea693XVl+FFhn1nU1TNxEsntcXMEx91lSpGijAT
3zLFPKQR0gvqi1dmgG1JcAisY4FJhM0R/L8Bp2gW0Wy3g6+dvctlIYFl16CVKvxt
+mRE1aZVitkz/tUKC1ztL6GCzAwJTNKwbPEUSzmGinbJJJLkLqgrNDEFDpmvBVfY
98DPt8wC4CKVgR8nNSfK3zz9ud5MS99q3FBPr8rE6TK+3SboZe5mz8ohjfdFphR4
ARs3EyUTEljaumnnwwgNJiNvOXiO2o0k8X4eO/Z53/InxxSFhjSOs8Zt8NIJkZrQ
2vohCixV8Z7f731apdvmLvF44ZPf80iryl54HBr57DGdNojWQFg=
=3GP7
-----END PGP SIGNATURE-----

--Tn/ccXvv4d/cKgK6--