Re: [RFC PATCH v2 0/4] Add device tree build information

From: Alexandre Torgue
Date: Mon Mar 02 2020 - 07:56:35 EST


Hi Franck

On 2/28/20 6:47 PM, Frank Rowand wrote:
Hi Alexandred,

Ping.


Sorry I was off last week.

-Frank


On 2/21/20 11:47 AM, Frank Rowand wrote:
On 2/21/20 10:14 AM, Alexandre Torgue wrote:
(with title it's better ;)

Hi,

The goal of this series is to add device tree build information in dtb.
This information can be dtb build date, where devicetree files come from,
who built the dtb ... Actually, same kind of information that you can find
in the Linux banner which is printout during kernel boot. Having the same
kind of information for device tree is useful for debugging and maintenance.

A file (dtb-build.txt) containing a string with build information (e.g.,
>From Linux 5.5.0-rc1 by alex the Mon Jan 13 18:25:38 CET 2020) is generated by
"gen_dtb_build_info.sh" script.

This file has to be included manually in each dts file that would like to use
this build information.

In the RFC series, you said:

"I gonna prepare a V2 with David proposition (to use overlay format) by
keeping in mind not to modify existing dts(i) files."

https://lore.kernel.org/linux-devicetree/9d83a36c-78c5-3452-bb48-209d68c46038@xxxxxx/

But here in v2 instead requires including dtb-build.txt.

This would require modifying every single main .dts file to get the build info
I would prefer the method that Ian and David came up with (sorry, no lore link,
it did not go to lkml). Extract from David's email:

Date: Tue, 21 Jan 2020 13:05:25 +1100
From: David Gibson <david@xxxxxxxxxxxxxxxxxxxxx>
Subject: Re: [RFC PATCH 1/3] dtc: Add dtb build information option

> Given that dts files are run through the C preprocessor before being
> fed to dtc, the build script could use the '-include' flag to force-
> include a fragment containing generated build info without any need to
> modify existing dts files.

Uh... maybe. -include will essentially prepend the forced file, which
is a bit awkward for our purposes. It means that the prepended file
would need the /dts-v1/ tag, and we couldn't have it in the main files
which would be a bit confusing. I think it would also cause problems
with any /memreserve/ tags and means that the main tree could in
theory overwrite the build information which we don't necessarily
want.

I guess we could build things the other way around: have the main .dts
file specified with -include and have the dts on the dtc commandline
be a fixed one with the build information. It'd be a little weird,
though.

-Frank

Yes. I try briefly this idea but I got issues with dts-v1 tag. I agree, it is cleaner to not modify input dts file. I can rework int this way.

regards
Alex



of/fdt.c is modified to printout "build-info" property during Kernel boot and
scripts/Makefile.lib is modified to call "gen_dtb_build_info.sh" script.

Patch 1 & 2 script and of/fdt.c updates
Patch 3 is an example of use in stm32mp157c-dk2.dts file.
Patch 4 is a tentative to make it automatic (not yet 100% functional).

regards
Alex

Changes since v1;
- Remove modification in dtc (no more -B option)
- Generate a file containing build info which is directly included in dts
file.


Regards
Alex

Alexandre Torgue (4):
scripts: Add script to generate dtb build information
of: fdt: print dtb build information
ARM: dts: stm32: Add dtb build information entry for stm32mp157c-dk2
script: make automatic dtb build info generation

arch/arm/boot/dts/stm32mp157c-dk2.dts | 1 +
drivers/of/fdt.c | 9 +++++++++
scripts/Makefile.lib | 3 +++
scripts/gen_dtb_build_info.sh | 12 ++++++++++++
4 files changed, 25 insertions(+)
create mode 100755 scripts/gen_dtb_build_info.sh