On Tue, Mar 14, 2023 at 03:59:29PM +0100, Michael Riesch wrote: > Hi Sascha, > > On 3/10/23 10:42, Sascha Hauer wrote: > > The of_overlay command currently only supports applying overlays to the > > Linux device tree. Add an option to apply an overlay to the live tree. > > Using this option will apply the overlay and also triggers rescanning > > the device tree in case new devices have been added. > > > > Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> > > --- > > commands/of_overlay.c | 38 ++++++++++++++++++++++++++++++++++---- > > 1 file changed, 34 insertions(+), 4 deletions(-) > > > > diff --git a/commands/of_overlay.c b/commands/of_overlay.c > > index b3660b4bf1..1d68e31ef2 100644 > > --- a/commands/of_overlay.c > > +++ b/commands/of_overlay.c > > @@ -17,10 +17,20 @@ static int do_of_overlay(int argc, char *argv[]) > > struct fdt_header *fdt; > > struct device_node *overlay; > > size_t size; > > + bool live_tree = false; > > + int opt; > > > > - if (argc != 2) > > + if (argc < 2) > > return COMMAND_ERROR_USAGE; > > > > + while ((opt = getopt(argc, argv, "l")) > 0) { > > + switch (opt) { > > + case 'l': > > + live_tree = true; > > + break; > > + } > > + } > > + > > fdt = read_file(argv[optind], &size); > > of course this is not the intended usage, but "of_overlay -l" (i.e., > skipping the overlay argument) throws an exception. Okay, will fix. > > > if (!fdt) { > > printf("cannot read %s\n", argv[optind]); > > @@ -32,7 +42,14 @@ static int do_of_overlay(int argc, char *argv[]) > > if (IS_ERR(overlay)) > > return PTR_ERR(overlay); > > > > - ret = of_register_overlay(overlay); > > + if (live_tree) { > > + ret = of_overlay_apply_tree(of_get_root_node(), overlay); > > If I pass a meaningful argument ("of_overlay -l path_to_my_overlay"), I get > > ERROR: of_resolver: __symbols__ missing from base devicetree > cannot apply oftree overlay: Invalid argument > of_overlay: Invalid argument > > in return. The base device tree does not contain any __symbols__ > sections indeed. How can I activate the generation of this section? Please enable CONFIG_OF_OVERLAY_LIVE. Maybe we can improve this a bit to make this clearer somehow / somewhere, Sascha -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |