Re: [PATCH v2] checks: Remove check for graph child addresses

David Gibson <[email protected]>
Newsgroups org.kernel.vger.devicetree-compiler,org.kernel.vger.linux-renesas-soc
Message-ID <aKGQohIuFcK20AxL@zatzit>
On Sun, Aug 17, 2025 at 08:42:59AM +0200, Niklas Söderlund wrote:
> Hi David,
> 
> Thanks for your feedback.
> 
> On 2025-08-16 14:45:58 +1000, David Gibson wrote:
> > On Tue, Aug 12, 2025 at 06:51:22PM +0200, Niklas Söderlund wrote:
> > > The dtc graph_child_address check can't distinguish between bindings
> > > where there can only be a single endpoint, and cases where there can be
> > > multiple endpoints.
> > > 
> > > In cases where the bindings allow for multiple endpoints but only one is
> > > described false warnings about unnecessary #address-cells/#size-cells
> > > can be generated, but only if the endpoint described have an address of
> > > 0 (A), for single endpoints with a non-zero address (B) no warnings are
> > > generated.
> > > 
> > > A)
> > >     ports {
> > > 	#address-cells = <1>;
> > > 	#size-cells = <0>;
> > > 
> > > 	port@0 {
> > > 	    #address-cells = <1>;
> > > 	    #size-cells = <0>;
> > > 
> > > 	    sourceA: endpoint@0 {
> > > 		reg = <0>
> > > 	    };
> > > 	};
> > >     };
> > > 
> > > B)
> > >     ports {
> > > 	#address-cells = <1>;
> > > 	#size-cells = <0>;
> > > 
> > > 	port@0 {
> > > 	    #address-cells = <1>;
> > > 	    #size-cells = <0>;
> > > 
> > > 	    sourceB: endpoint@1 {
> > > 		reg = <1>
> > > 	    };
> > > 	};
> > >     };
> > > 
> > > Remove the check as it is somewhat redundant now that we can use schemas
> > > to validate the full node.
> > > 
> > > Signed-off-by: Niklas Söderlund
> > > <[email protected]>
> > 
> > This causes test suite failures.  You'll need to also remove the
> > explicit graph_child_address test from the testsuite.
> 
> Thanks for pointing this out. I'm no expert on DTC, this is the 
> references to it in tests/run_tests.sh? Is there any more locations I 
> should check?

No, that's it.  "make check" should run the full suite for you; good
practice before sending patches.  If you want you can use the github
MR mechanism which will also run the tests as part of its CI.
Old-school patches on the mailing list are fine too, though.

> > Note that this patch does technically cause an incompatible change:
> > when I suggested removing this I hadn't realised this was a single
> > check, rather than a piece of a larger check.  That means that anyone
> > configuring this test in their scripts will be broken by removing it.
> > This is probably an obscure enough case that I'm prepared to accept
> > it, though.
> > 
> > > ---
> > > Changes since v2
> > > - Rebase after 6.17-rc1 merge window closed.
> > > ---
> > >  checks.c | 27 +--------------------------
> > >  1 file changed, 1 insertion(+), 26 deletions(-)
> > > 
> > > diff --git a/checks.c b/checks.c
> > > index 7e3fed5005b3..2072e1ea82dc 100644
> > > --- a/checks.c
> > > +++ b/checks.c
> > > @@ -1894,31 +1894,6 @@ static void check_graph_endpoint(struct check *c, struct dt_info *dti,
> > >  }
> > >  WARNING(graph_endpoint, check_graph_endpoint, NULL, &graph_nodes);
> > >  
> > > -static void check_graph_child_address(struct check *c, struct dt_info *dti,
> > > -				      struct node *node)
> > > -{
> > > -	int cnt = 0;
> > > -	struct node *child;
> > > -
> > > -	if (node->bus != &graph_ports_bus && node->bus != &graph_port_bus)
> > > -		return;
> > > -
> > > -	for_each_child(node, child) {
> > > -		struct property *prop = get_property(child, "reg");
> > > -
> > > -		/* No error if we have any non-zero unit address */
> > > -                if (prop && propval_cell(prop) != 0 )
> > > -			return;
> > > -
> > > -		cnt++;
> > > -	}
> > > -
> > > -	if (cnt == 1 && node->addr_cells != -1)
> > > -		FAIL(c, dti, node, "graph node has single child node '%s', #address-cells/#size-cells are not necessary",
> > > -		     node->children->name);
> > > -}
> > > -WARNING(graph_child_address, check_graph_child_address, NULL, &graph_nodes, &graph_port, &graph_endpoint);
> > > -
> > >  static struct check *check_table[] = {
> > >  	&duplicate_node_names, &duplicate_property_names,
> > >  	&node_name_chars, &node_name_format, &property_name_chars,
> > > @@ -2005,7 +1980,7 @@ static struct check *check_table[] = {
> > >  
> > >  	&alias_paths,
> > >  
> > > -	&graph_nodes, &graph_child_address, &graph_port, &graph_endpoint,
> > > +	&graph_nodes, &graph_port, &graph_endpoint,
> > >  
> > >  	&always_fail,
> > >  };
> > 
> 
> 
> 

-- 
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
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEO+dNsU4E3yXUXRK2zQJF27ox2GcFAmihkJ4ACgkQzQJF27ox
2GcZmw//cwScFxuizGVPeFIwJRDFMKp/b+GA4anO79Wa7NZ5YmvjH//KsKPl3aJe
y7czk+70BytEUeHfECfCoTffZD/W4kfH8SyChz+4T7F9bpLGJpzBg7rciUG8QVXp
xmgEZYGxtIY08Qbh9buDg4PL2Ms71bgaER+PUADxL4pkGVYds1VgCohn0+edAl5a
tHqBYjevRULM/7p8i4ed7UR18gsovv3s9/fK8WsmlCoPw39kBZYdz5sw/Eby1EaJ
YM2vSb5oDZmbZPZKJz87OYDUa3T26q93ibyurQVXzPjBWVH/uiT6GIorkF49xqPq
BkLjzfpbhCMwbmTS6U6FWi2g4wjTpZ9d18vf5WJSqVWKODtyJy32TJ9u2EupL3FG
IWCo1p9R70qiWZ+lWpOedHE0D/tGfmEYTW5Sig/Oh5qDZexsWMR5p0loQ84raArt
VGCfxzwdjBfewkZurTd6XRO5TgCO9I1DB7Eq4B1C5nGOmvqC7FyDkMEHnHnml/Se
jQWl4KvybzGvEhIPcwI+TbtmQpThCkRxvKoDcqupQfvUMMpO14diFrZMZ63I35/d
tjzErSy15zMH5oHeMriYS1cYY80+/7jidlpHdTNFHzAsn/9i5j7cd0N3ywWO5HTB
v3XEkuviibOB9TkuiD7xtZlBZrkCJKZzQ9R3CPnqBP4cqmiVRD8=
=ZRj/
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.