[U-Boot] switching to single .config configuration issues

Simon Glass sjg at chromium.org
Fri May 8 01:38:31 CEST 2015


+Tom

Hi Masahiro,

On 6 May 2015 at 22:04, Masahiro Yamada <yamada.masahiro at socionext.com> wrote:
> Hi.
>
> 2015-05-05 20:16 GMT+09:00 Yehuda Yitschak <yehuday at marvell.com>:
>> Hi Simon
>>
>>> -----Original Message-----
>>> From: sjg at google.com [mailto:sjg at google.com] On Behalf Of Simon Glass
>>> Sent: Tuesday, May 05, 2015 6:28
>>> To: Yehuda Yitschak
>>> Cc: Masahiro Yamada; Hanna Hawa; u-boot at lists.denx.de
>>> Subject: Re: [U-Boot] switching to single .config configuration issues
>>>
>>> Hi,
>>>
>>> On 4 May 2015 at 05:34, Yehuda Yitschak <yehuday at marvell.com> wrote:
>>> > Hey Simon
>>> >
>>> >> -----Original Message-----
>>> >> From: sjg at google.com [mailto:sjg at google.com] On Behalf Of Simon
>>> Glass
>>> >> Sent: Sunday, May 03, 2015 21:55
>>> >> To: Yehuda Yitschak
>>> >> Cc: Masahiro Yamada; Hanna Hawa; u-boot at lists.denx.de
>>> >> Subject: Re: [U-Boot] switching to single .config configuration
>>> >> issues
>>> >>
>>> >> Hi Yehuda,
>>> >>
>>> >> On 30 April 2015 at 01:21, Yehuda Yitschak <yehuday at marvell.com>
>>> wrote:
>>> >> > Hey Masahiro
>>> >> >
>>> >> >> -----Original Message-----
>>> >> >> From: Masahiro Yamada [mailto:yamada.masahiro at socionext.com]
>>> >> >> Sent: Thursday, April 30, 2015 4:46
>>> >> >> To: Yehuda Yitschak
>>> >> >> Cc: Simon Glass; Hanna Hawa; u-boot at lists.denx.de
>>> >> >> Subject: Re: [U-Boot] switching to single .config configuration
>>> >> >> issues
>>> >> >>
>>> >> >> Hi Yehuda,
>>> >> >>
>>> >> >>
>>> >> >> 2015-04-29 14:23 GMT+09:00 Yehuda Yitschak
>>> <yehuday at marvell.com>:
>>> >> >> > Hey Simon, Masahiro
>>> >> >> >
>>> >> >> > May I suggest an alternative solution to this issue.
>>> >> >> >
>>> >> >> > What if each Kconfigs option could be set as "y" (compile for
>>> >> >> > u-boot only )or "s" (compile for u-boot and SPL) Just as the
>>> >> >> > kernel can set Kconfig
>>> >> >> to "y" or "m".
>>> >> >> >
>>> >> >> > With minor modifications to the Makefile, SPL target will compile
>>> "obj-s"
>>> >> >> and u-boot  target will compile "obj-s" and "obj-y"
>>> >> >> >
>>> >> >> > What do you think ?
>>> >> >>
>>> >> >>
>>> >> >> Interesting.
>>> >> >>
>>> >> >> A little comments.
>>> >> >>
>>> >> >> - Is there any possibility that some files should be compiled for SPL
>>> only?
>>> >> >>    (I do not think we have much.)
>>> >> >>
>>> >> >>    Perhaps,   obj-y : for U-boot only
>>> >> >>               obj-s : for SPL only
>>> >> >>               oby-ys: for both
>>> >> >>       I am not sure..
>>> >> >
>>> >> > How about "a" (as in all targets) instead of "sy". It will look
>>> >> > better in the menuconfig square brackets Maybe TPL should also be
>>> added as "t"
>>> >> option.
>>> >> >
>>> >> >>
>>> >> >> - This idea is only applicable for bool options.
>>> >> >>   We still have to keep duplication for int/hex options   such as
>>> >> >> CONFIG_SPL_TEXT_BASE.
>>> >> >>
>>> >> >>   But, this idea will help clean up much because most of configs
>>> >> >> are
>>> >> boolean.
>>> >>
>>> >> I am still not sure what sorts of things are getting compiled int
>>> >> SPL, and thus causing problems. Can you please provide a few details?
>>> >
>>> > We are looking for a very small SPL image that will fit into internal SRAM.
>>> > Therefore we want to compile the minimal set of drivers into the SPL.
>>> > We have added all our drivers to Kconfig infrastructure (not mainlined
>>> > yet) and so each driver We add to u-boot (like PCIe) will be added to
>>> > SPL and would require manual removal using the dedicated H file
>
>
> Or we can use "ifndef CONFIG_SPL_BUILD" to keep drivers from being
> compiled into SPL.
> (and this is what we have done so far.  For example, drivers/mtd/nand/Makefile)
>
> ifndef CONFIG_SPL_BUILD
> obj-$(CONFIG_YOUR_OWN_DRIVER) += your_driver.o
> endif
>
> I know this is an ugly solution...

It works fine so long as no board wants the driver in SPL.

>
>
> BTW, barebox (U-boot v2) uses "pbl-y" for objects that should be compiled
> into a pre-bootloader (the same concept as what we call SPL).
>
> obj-(CONFIG_FOO)     += foo.o     <--- compiled for barebox proper
> pbl-(CONFIG_PBL_FOO) += foo.o     <--- compiled for pre-bootloader
>
> Better to bollow this idea?

A bit annoying that we then have to repeat every file twice (or three
times for TPL).

>
>
>>> I see. Let's see what Masahiro thinks about this. One good thing with this
>>> proposal is that we would still only have a single config source file (.config),
>>> but I cannot see how it could be implemented without having multiple
>>> output autoconf.h files.
>> Linux actually uses a single autoconf.h file by suffixing module configs with _MODULE.
>> Then all the other build scripts somehow take advantage of that
>
> Right.  This is the way we distinguish modules from built-in drivers in Linux.
>
> Maybe we can add _SPL suffix, but please let me clarify this idea.
> How does "select FOO" work?
>
> CONFIG_FOO should be enabled for U-Boot only (CONFIG_FOO=y), or also
> for SPL (CONFIG_FOO=a)?
> How about "depends on FOO"?
>

Do you then need to cover every combination of U-Boot, SPL, TPL?

>
>>> How many options do you need to add for manual removal?
>>
>> I don’t have the exact count but somewhere around 10-20.
>> However I think the number itself is not the issue.
>> The thing is that you have to update this list every time you modify your defconfig otherwise your SPL start bloating.
>> That is a bit of a nuisance considering defconfig changes may be frequent during development and ramp-up time
>
> I agree.

For this, your spl-y idea is probably easiest.

Regards,
Simon


More information about the U-Boot mailing list