Hi Masahiro, On 6 March 2016 at 20:07, Masahiro Yamada <yamada.masah...@socionext.com> wrote: > Hi Simon, > > > 2016-03-07 11:45 GMT+09:00 Simon Glass <s...@chromium.org>: >> This tool requires that the aliases node be the first node in the tree. But >> when it is not, it does not handle things gracefully. In fact it crashes. >> >> Fix this, and add a more helpful error message. >> >> Signed-off-by: Simon Glass <s...@chromium.org> >> Reported-by: Masahiro Yamada <yamada.masah...@socionext.com> > > > I think this patch would diplay a clearer hint, > but would not solve the root cause. > > > > fdtgrep still crashes with the following DTS:
Crashes? > > > / { > model = "UniPhier PH1-LD20 Reference Board"; > compatible = "socionext,ph1-ld20-ref", "socionext,ph1-ld20"; > > memory { > device_type = "memory"; > reg = <0 0x80000000 0 0xc0000000>; > }; > > chosen { > stdout-path = "serial0:115200n8"; > }; > > aliases { > serial0 = &serial0; > serial1 = &serial1; > serial2 = &serial2; > serial3 = &serial3; > i2c0 = &i2c0; > i2c1 = &i2c1; > i2c2 = &i2c2; > i2c3 = &i2c3; > i2c4 = &i2c4; > i2c5 = &i2c5; > i2c6 = &i2c6; > }; > }; > > > Error at 'fdt_find_regions': FDT_ERR_BADLAYOUT > /aliases node must come before all other nodes > Error: FDT_ERR_BADMAGIC You mean it gives an error? > > > > > > But, fdtgrep can accept the following: > > / { > model = "UniPhier PH1-LD20 Reference Board"; > compatible = "socionext,ph1-ld20-ref", "socionext,ph1-ld20"; > > aliases { > serial0 = &serial0; > serial1 = &serial1; > serial2 = &serial2; > serial3 = &serial3; > i2c0 = &i2c0; > i2c1 = &i2c1; > i2c2 = &i2c2; > i2c3 = &i2c3; > i2c4 = &i2c4; > i2c5 = &i2c5; > i2c6 = &i2c6; > }; > > memory { > device_type = "memory"; > reg = <0 0x80000000 0 0xc0000000>; > }; > > chosen { > stdout-path = "serial0:115200n8"; > }; > }; > > > > Should I really move the "aliases" node? > I do not think this restriction is reasonable. Agreed. Given that it now sorts the regions I'm not sure why that restriction is still there, actually. Looking a bit closer, it is really checking that the aliases node isn't last. It could probably work around it by using fdt_size_dt_structs() when node_end is -ve. Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot