Hi Tom,

On 22/6/20 12:25, Walter Lozano wrote:
Hi Tom,

On 22/6/20 11:20, Tom Rini wrote:
On Mon, Jun 22, 2020 at 11:12:40AM -0300, Walter Lozano wrote:
Hi Tom,

On 19/6/20 18:48, Tom Rini wrote:
On Fri, Jun 19, 2020 at 06:11:36PM -0300, Walter Lozano wrote:

Based on several reports and discussions it is clear that U-Boot's
footprint is always a concern, and any kind of reduction is an
improvement.

This series is a proposal to  help reducing the footprint by parsing
information provided in DT and drivers in different ways and adding
additional intelligence to dtoc. The current version implements the basic functionality in dtoc but this is no fully integrated, however it will allow
us to discuss this approach.

Firstly, based on the compatible strings found in drivers, include only DT nodes
which are supported by any driver present in U-Boot.

Secondly, generate struct udevice_id entries only for nodes present in DT,
which will allow to avoid including additional data.

These are the first steps for further improvements as proposed in the specific
patches in this series.

This work is based on the work of Simon Glass present in [1] which adds
support to dtoc for parsing compatible strings.

[1] https://gitlab.denx.de/u-boot/custodians/u-boot-dm/-/tree/dtoc-working
I applied this series on top of the above tree, but there's no rule for
<generated/compatible.h> so is something missing? Thanks!

Thanks for taking the time to check this RFC.

As you pointed, the Makefile needs to be tweaked in order to be able to run
a build, that is what I meant by "not fully integrated", also some
additional stuff are missing. However, I thought that sending this RFC
explaining the idea will be nice in order to confirm if the approaches
proposed make sense for the community and at least the one to handle
compatible strings is different from the linker list suggestion.
I think I like the idea, but I need to give a build a spin and poke
things harder.  What do I need to do to manually have this build+link?
Thanks!

Well, I don't think this version will give you something to fully test, as there are several pieces missing, but the fact you think you like the idea is good starting point.

Just to do some testing you can try


Shrink a dtb with

./tools/dtoc/dtoc shrink -d u-boot.dtb

this will shrink u-boot.dtb and create u-boot-shrink.dtb by only include nodes with compatible strings present in drivers


Generate include/generated/compatible.h

./tools/dtoc/dtoc compatible -d u-boot.dtb -o include/generated/compatible.h

this will generate compatible.h but the code does not yet support struct udevice_id with data in struct udevice_id and does not filter anything.


I will continue working on these features but any early feedback is welcome.


To be able to test this a bit more I reworked and back ported the patches and add a bit more of work on top, such as

- Add Makefile rules (need to be improved)

- Add support for checking enabled drivers for dtb shrink (need to be improved as parsing probably does not take into account no common situations)

- Add support for defining constants based on compatible strings enabled

This work can be found in

https://gitlab.collabora.com/wlozano/u-boot/-/tree/wip

The drawback is that this implementation doesn't take advantage of the new abstractions found in the Simon's work, but I think it could still be useful to test the idea, and discuss if it makes sense.

I have done some testing in my iMX6 Hummingboard but I have found some issues not related to this work in MMC, which I need to debug.

Regards,

Walter

Reply via email to