[PATCH] scripts: dtc: fix a false alarm for node_name_chars_strict

Qun-Wei Lin posted 1 patch 2 years, 3 months ago
scripts/dtc/checks.c | 5 +++++
1 file changed, 5 insertions(+)
[PATCH] scripts: dtc: fix a false alarm for node_name_chars_strict
Posted by Qun-Wei Lin 2 years, 3 months ago
The function check_node_name_chars_strict issues a false alarm when
compiling an overlay dts.

/fragment@0/__overlay__: Character '_' not recommended in node name

This workaround will fix it by skip checking for node named __overlay__.

Signed-off-by: Qun-Wei Lin <qun-wei.lin@mediatek.com>
---
 scripts/dtc/checks.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/scripts/dtc/checks.c b/scripts/dtc/checks.c
index 781ba1129a8e..6ef4f2cd67b9 100644
--- a/scripts/dtc/checks.c
+++ b/scripts/dtc/checks.c
@@ -325,6 +325,11 @@ static void check_node_name_chars_strict(struct check *c, struct dt_info *dti,
 {
 	int n = strspn(node->name, c->data);
 
+	if (streq(node->name, "__overlay__")) {
+		/* HACK: Overlay fragments are a special case */
+		return;
+	}
+
 	if (n < node->basenamelen)
 		FAIL(c, dti, node, "Character '%c' not recommended in node name",
 		     node->name[n]);
-- 
2.18.0
Re: [PATCH] scripts: dtc: fix a false alarm for node_name_chars_strict
Posted by Frank Rowand 2 years, 3 months ago
On 5/31/22 01:33, Qun-Wei Lin wrote:
> The function check_node_name_chars_strict issues a false alarm when
> compiling an overlay dts.
> 
> /fragment@0/__overlay__: Character '_' not recommended in node name
> 
> This workaround will fix it by skip checking for node named __overlay__.

This is not a false alarm.

Do not special case node name "__overlay__".  This node name should never
occur in a modern overlay source file.

For details, see "Overlay Source Format" in the "Overlays" section of:
https://elinux.org/Device_Tree_Reference#Overlays

That paragraph also has a pointer to the correct format for overlay
source files, which is slides 29-34 of:
https://elinux.org/Device_Tree_Reference#Overlays

-Frank

> 
> Signed-off-by: Qun-Wei Lin <qun-wei.lin@mediatek.com>
> ---
>  scripts/dtc/checks.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/scripts/dtc/checks.c b/scripts/dtc/checks.c
> index 781ba1129a8e..6ef4f2cd67b9 100644
> --- a/scripts/dtc/checks.c
> +++ b/scripts/dtc/checks.c
> @@ -325,6 +325,11 @@ static void check_node_name_chars_strict(struct check *c, struct dt_info *dti,
>  {
>  	int n = strspn(node->name, c->data);
>  
> +	if (streq(node->name, "__overlay__")) {
> +		/* HACK: Overlay fragments are a special case */
> +		return;
> +	}
> +
>  	if (n < node->basenamelen)
>  		FAIL(c, dti, node, "Character '%c' not recommended in node name",
>  		     node->name[n]);
Re: [PATCH] scripts: dtc: fix a false alarm for node_name_chars_strict
Posted by Rob Herring 2 years, 3 months ago
On Tue, May 31, 2022 at 04:43:18PM -0400, Frank Rowand wrote:
> On 5/31/22 01:33, Qun-Wei Lin wrote:
> > The function check_node_name_chars_strict issues a false alarm when
> > compiling an overlay dts.
> > 
> > /fragment@0/__overlay__: Character '_' not recommended in node name
> > 
> > This workaround will fix it by skip checking for node named __overlay__.
> 
> This is not a false alarm.
> 
> Do not special case node name "__overlay__".  This node name should never
> occur in a modern overlay source file.

A dtbo -> dts pass will give warnings, so handling these nodes is 
worthwhile. Though thinking a bit more about it, I think this one is off 
by default, but W=2 turns it on.

Rob
Re: [PATCH] scripts: dtc: fix a false alarm for node_name_chars_strict
Posted by Frank Rowand 2 years, 3 months ago
On 5/31/22 17:49, Rob Herring wrote:
> On Tue, May 31, 2022 at 04:43:18PM -0400, Frank Rowand wrote:
>> On 5/31/22 01:33, Qun-Wei Lin wrote:
>>> The function check_node_name_chars_strict issues a false alarm when
>>> compiling an overlay dts.
>>>
>>> /fragment@0/__overlay__: Character '_' not recommended in node name
>>>
>>> This workaround will fix it by skip checking for node named __overlay__.
>>
>> This is not a false alarm.
>>
>> Do not special case node name "__overlay__".  This node name should never
>> occur in a modern overlay source file.
> 
> A dtbo -> dts pass will give warnings, so handling these nodes is 
> worthwhile. Though thinking a bit more about it, I think this one is off 
> by default, but W=2 turns it on.

Yes, at least as of 5.18-rc1 the warning is only if
'-W node_name_chars_strict', so a dtbo -> dts pass will not give the
warning for node __overlay__ by default.

-Frank

> 
> Rob
Re: [PATCH] scripts: dtc: fix a false alarm for node_name_chars_strict
Posted by Rob Herring 2 years, 3 months ago
On Tue, May 31, 2022 at 12:34 AM Qun-Wei Lin <qun-wei.lin@mediatek.com> wrote:
>
> The function check_node_name_chars_strict issues a false alarm when
> compiling an overlay dts.
>
> /fragment@0/__overlay__: Character '_' not recommended in node name
>
> This workaround will fix it by skip checking for node named __overlay__.
>
> Signed-off-by: Qun-Wei Lin <qun-wei.lin@mediatek.com>
> ---
>  scripts/dtc/checks.c | 5 +++++

We don't take patches for dtc. You must send them to upstream dtc and
then it will be sync'ed to the kernel tree.

>  1 file changed, 5 insertions(+)
>
> diff --git a/scripts/dtc/checks.c b/scripts/dtc/checks.c
> index 781ba1129a8e..6ef4f2cd67b9 100644
> --- a/scripts/dtc/checks.c
> +++ b/scripts/dtc/checks.c
> @@ -325,6 +325,11 @@ static void check_node_name_chars_strict(struct check *c, struct dt_info *dti,
>  {
>         int n = strspn(node->name, c->data);
>
> +       if (streq(node->name, "__overlay__")) {
> +               /* HACK: Overlay fragments are a special case */

Not a hack IMO.

However, this should be checking for any node name starting with '__'.

Also, doesn't 'fragment@0' cause a warning about missing 'reg'?