Re: [DT-OVERLAY PATCH] of: overlay: print the offending node name on fixup failure

From: Geert Uytterhoeven
Date: Tue Feb 25 2020 - 06:10:38 EST


Hi Luca,

On Tue, Feb 25, 2020 at 11:42 AM Luca Ceresoli <luca@xxxxxxxxxxxxxxxx> wrote:
> When a DT overlay has a fixup node that is not present in the base DT
> __symbols__, this error is printed:
>
> OF: resolver: overlay phandle fixup failed: -22
> create_overlay: Failed to create overlay (err=-22)
>
> which does not help much in finding the node that caused the problem.
>
> Add a debug print with the name of the fixup node that caused the
> error. The new output is:
>
> OF: resolver: node gpio9 not found in base DT, fixup failed
> OF: resolver: overlay phandle fixup failed: -22
> create_overlay: Failed to create overlay (err=-22)
>
> Signed-off-by: Luca Ceresoli <luca@xxxxxxxxxxxxxxxx>

Thanks for your patch!

Tested-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>

> NOTE: this patch is not for mainline!

Why not?

> It applies on top of the runtime overlay patches at
> git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git on
> branch topic/overlays, currently based on v5.6-rc1. This looked like the
> most up-to-date version of the overlay patches. Should there be a better
> place, please let me know.

Topic/overlays does not contain any changes to drivers/of/resolver.c,
so this patch is applicable to mainline, too.

> --- a/drivers/of/resolver.c
> +++ b/drivers/of/resolver.c
> @@ -321,8 +321,11 @@ int of_resolve_phandles(struct device_node *overlay)
>
> err = of_property_read_string(tree_symbols,
> prop->name, &refpath);
> - if (err)
> + if (err) {
> + pr_err("node %s not found in base DT, fixup failed",
> + prop->name);
> goto out;
> + }
>
> refnode = of_find_node_by_path(refpath);
> if (!refnode) {

Probably you want to print a helpful message here, too?

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds