Re: [PATCH] devicetree: Enable generation of __symbols__ in all dtb files

Rob Herring
2017-08-16T15:22:29Z

On Tue, Aug 15, 2017 at 7:42 PM, Tom Rini <trini@konsulko.com> wrote:
> On Tue, Aug 15, 2017 at 04:50:40PM -0700, Frank Rowand wrote:
>> On 08/15/17 14:15, Tom Rini wrote:
>> > With support for stacked overlays being part of libfdt it is now
>> > possible and likely that overlays which require __symbols__ will be
>> > applied to the dtb files generated by the kernel. This is done by
>> > passing -@ to dtc. This does increase the filesize (and resident memory
>> > usage) based on the number of __symbol__ entries added to match the
>> > contents of the dts.
>> >
>> > Cc: Rob Herring <robh+dt@kernel.org>
>> > Cc: Frank Rowand <frowand.list@gmail.com>
>> > Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
>> > Cc: Michal Marek <mmarek@suse.com>
>> > Cc: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
>> > Cc: devicetree@vger.kernel.org
>> > Cc: linux-kernel@vger.kernel.org
>> > CC: linux-kbuild@vger.kernel.org
>> > Signed-off-by: Tom Rini <trini@konsulko.com>
>> > ---
>> > In order for a dtb file to be useful with all types of overlays, it
>> > needs to be generated with the -@ flag passed to dtc so that __symbols__
>> > are generated. This however is not free, and increases the resulting
>> > dtb file by up to approximately 50% today. In the current worst case
>> > this is moving from 88KiB to 133KiB. In talking with Frank about this,
>> > he outlined 3 possible ways (with the 4th option of something else
>> > entirely).
>> >
>> > 1. Make passing -@ to dtc be dependent upon some CONFIG symbol.
>> > 2. In the kernel, if the kernel does not have overlay support, discard
>> > the __symbols__ information that we've been passed.
>> > 3. Have the bootloader pass in, or not, __symbols__ information.
>>
>> I also was hoping that other people might have ideas for additional
>> approaches.
>
> Yes, please.

A couple of other options come to mind:

"make DTC_FLAGS='-@' dtbs" should already work. So there's already a
way to build what you want and the kernel is not setting the policy.

Do like we do for the unittests and make it a per board decision:

DTC_FLAGS_my-som-board.dtb := -@

Then boards that actually need it like SoMs can turn it on.

Rob