[U-Boot] [PATCH v3 5/7] kconfig: switch to single .config configuration

Simon Glass sjg at chromium.org
Fri Feb 20 17:59:15 CET 2015


On 19 February 2015 at 22:24, Masahiro Yamada <yamada.m at jp.panasonic.com> wrote:
> When Kconfig for U-boot was examined, one of the biggest issues was
> how to support multiple images (Normal, SPL, TPL).  There were
> actually two options, "single .config" and "multiple .config".
> After some discussions and thought experiments, I chose the latter,
> i.e. to create ".config", "spl/.config", "tpl/.config" for Normal,
> SPL, TPL, respectively.
>
> It is true that the "multiple .config" strategy provided us the
> maximum flexibility and helped to avoid duplicating CONFIGs among
> Normal, SPL, TPL, but I have noticed some fatal problems:
>
> [1] It is impossible to share CONFIG options across the images.
>   If you change the configuration of Main image, you often have to
>   adjust some SPL configurations correspondingly.  Currently, we
>   cannot handle the dependencies between them.  It means one of the
>   biggest advantages of Kconfig is lost.
>
> [2] It is too painful to change both ".config" and "spl/.config".
>   Sunxi guys started to work around this problem by creating a new
>   configuration target.  Commit cbdd9a9737cc (sunxi: kconfig: Add
>   %_felconfig rule to enable FEL build of sunxi platforms.) added
>   "make *_felconfig" to enable CONFIG_SPL_FEL on both images.
>   Changing the configuration of multiple images in one command is a
>   generic demand.  The current implementation cannot propose any
>   good solution about this.
>
> [3] Kconfig files are getting ugly and difficult to understand.
>   Commit b724bd7d6349 (dm: Kconfig: Move CONFIG_SYS_MALLOC_F_LEN to
>   Kconfig) has sprinkled "if !SPL_BUILD" over the Kconfig files.
>
> [4] The build system got more complicated than it should be.
>   To adjust Linux-originated Kconfig to U-Boot, the helper script
>   "scripts/multiconfig.sh" was introduced.  Writing a complicated
>   text processor is a shell script sometimes caused problems.
>
> Now I believe the "single .config" will serve us better.  With it,
> all the problems above would go away.  Instead, we will have to add
> some CONFIG_SPL_* (and CONFIG_TPL_*) options such as CONFIG_SPL_DM,
> but we will not have much.  Anyway, this is what we do now in
> scripts/Makefile.spl.
>
> I admit my mistake with my apology and this commit switches to the
> single .config configuration.
>
> It is not so difficult to do that:
>
>  - Remove unnecessary processings from scripts/multiconfig.sh
>   This file will remain for a while to support the current defconfig
>   format.  It will be removed after more cleanups are done.
>
>  - Adjust some makefiles and Kconfigs
>
>  - Add some entries to include/config_uncmd_spl.h and the new file
>    scripts/Makefile.uncmd_spl.  Some CONFIG options that are not
>    supported on SPL must be disabled because one .config is shared
>    between SPL and U-Boot proper going forward.  I know this is not
>    a beautiful solution and I think we can do better, but let's see
>    how much we will have to describe them.
>
>  - update doc/README.kconfig
>
> More cleaning up patches will follow this.
>
> Signed-off-by: Masahiro Yamada <yamada.m at jp.panasonic.com>

Reviewed-by: Simon Glass <sjg at chromium.org>

I notice with seaboard there is a bit of a code size different. But I
don't think this matters.

06: kconfig: switch to single .config configuration
       arm: (for 1/1 boards)  all -839.0  bss +4.0  rodata -27.0
spl/u-boot-spl:all +16.0  spl/u-boot-spl:data +16.0  text -816.0
            seaboard       :  all -839  bss +4  rodata -27
spl/u-boot-spl:all +16  spl/u-boot-spl:data +16  text -816
               u-boot: add: 1/-11, grow: 0/-1 bytes: 4/-1352 (-1348)
                 function                                   old     new   delta
                 __div0                                       -       4      +4
                 __aeabi_idiv0                               12       -     -12
                 __lshrdi3                                   24       -     -24
                 __ashldi3                                   24       -     -24
                 __aeabi_llsr                                24       -     -24
                 __aeabi_llsl                                24       -     -24
                 __ashrdi3                                   26       -     -26
                 __aeabi_uidivmod                            26       -     -26
                 __aeabi_lasr                                26       -     -26
                 __aeabi_idivmod                             26       -     -26
                 raise                                       28       -     -28
                 __udivsi3                                  604     152    -452
                 __divsi3                                   660       -    -660
               spl-u-boot-spl: add: 0/0, grow: 1/0 bytes: 16/0 (16)
                 function                                   old     new   delta
                 gdata                                      184     200     +16

Regards,
Simon


More information about the U-Boot mailing list