public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Sean Anderson <seanga2@gmail.com>
To: u-boot@lists.denx.de
Subject: [PATCH 00/49] image: Reduce #ifdefs and ad-hoc defines in image code
Date: Tue, 4 May 2021 19:24:25 -0400	[thread overview]
Message-ID: <fee751a1-180b-6b31-3594-586f11549069@gmail.com> (raw)
In-Reply-To: <20210504214016.GA17669@bill-the-cat>

Hi Tom,

On 5/4/21 5:40 PM, Tom Rini wrote:
> On Mon, May 03, 2021 at 05:10:47PM -0600, Simon Glass wrote:
> 
>> Much of the image-handling code predates the introduction of Kconfig and
>> has quite a few #ifdefs in it. It also uses its own IMAGE_... defines to
>> help reduce the #ifdefs, which is unnecessary now that we can use
>> IS_ENABLED() et al.
>>
>> The image code is also where quite a bit of code is shared with the host
>> tools. At present this uses a lot of checks of USE_HOSTCC.
>>
>> This series introduces 'host' Kconfig options and a way to use
>> CONFIG_IS_ENABLED() to check them. This works in a similar way to SPL, so
>>
>>     CONFIG_IS_ENABLED(FIT)
>>
>> will evaluate to true on the host build (USE_HOSTCC) if CONFIG_HOST_FIT is
>> enabled. This allows quite a bit of clean-up of the image.h header file
>> and many of the image C files.
>>
>> The 'host' Kconfig options should help to solve a more general problem in
>> that we mostly want the host tools to build with all features enabled, no
>> matter which features the 'target' build actually uses. This is a pain to
>> arrange at present, but with 'host' Kconfigs, we can just define them all
>> to y.
>>
>> There are cases where the host tools do not have features which are
>> present on the target, for example environment and physical addressing.
>> To help with this, some of the core image code is split out into
>> image-board.c and image-host.c files.
>>
>> Even with these changes, some #ifdefs remain (101 down to 42 in
>> common/image*). But the code is somewhat easier to follow and there are
>> fewer build paths.
>>
>> In service of the above, this series includes a patch to add an API function
>> for zstd, so the code can be dropped from bootm.c
>>
>> It also introduces a function to handle manual relocation.
> 
> I like this idea overall.  The good news is this reduces the size in a
> few places.  The bad news, but I can live with if we can't restructure
> the changes more, is a few functions grow a bit.  This shows the good
> and the bad (something like sama5d2_ptc_ek_mmc shows only growth, to be
> clear):
What tool do you use to generate this output? Thanks.

--Sean

>              px30-core-edimm2.2-px30: all -36 rodata -24 text -12
>                 u-boot: add: 0/0, grow: 3/-4 bytes: 36/-48 (-12)
>                   function                                   old     new   delta
>                   boot_get_fdt                               896     924     +28
>                   image_decomp                               372     376      +4
>                   boot_get_ramdisk                           868     872      +4
>                   do_bootm_vxworks                           552     540     -12
>                   do_bootm_rtems                             124     112     -12
>                   do_bootm_plan9                             228     216     -12
>                   do_bootm_netbsd                            324     312     -12
>              odroid-c2      : all -105 bss +128 rodata -65 text -168
>                 u-boot: add: 0/0, grow: 2/-3 bytes: 108/-172 (-64)
>                   function                                   old     new   delta
>                   images                                     504     608    +104
>                   image_decomp                               372     376      +4
>                   image_setup_linux                          108      96     -12
>                   boot_get_ramdisk                           620     580     -40
>                   boot_get_fdt                               660     540    -120
>              origen         : all +47 bss +96 rodata -57 text +8
>                 u-boot: add: 0/0, grow: 15/-2 bytes: 180/-104 (76)
>                   function                                   old     new   delta
>                   images                                     288     340     +52
>                   do_bootm_states                           1304    1348     +44
>                   do_bootz                                   164     176     +12
>                   do_bootm_vxworks                           332     344     +12
>                   image_setup_libfdt                         168     176      +8
>                   image_decomp                               156     164      +8
>                   bootm_find_images                          212     220      +8
>                   boot_prep_linux                            276     284      +8
>                   image_setup_linux                           54      58      +4
>                   do_bootm_standalone                         60      64      +4
>                   do_bootm_plan9                             104     108      +4
>                   do_bootm_netbsd                            168     172      +4
>                   boot_prep_vxworks                           48      52      +4
>                   boot_jump_vxworks                            6      10      +4
>                   boot_jump_linux                            148     152      +4
>                   boot_get_ramdisk                           420     392     -28
>                   boot_get_fdt                               420     344     -76
> 
> And looking at ls1088ardb_sdcard_qspi_SECURE_BOOT I think there might be
> something wrong as that looks to drop all crypto algos from SPL.  Other
> layerscape SECURE_BOOT configs show this as well.  It does however seem
> to clear up some other issues around unused code, so a deeper dive on
> which patch is dropping stuff is needed.  I see a huge drop on
> am65x_evm_a53 / j721e_evm_a72 SPL as well but I can test those and at
> least the basic case is fine.  socfpga_agilex_atf is one I don't know
> about being right or wrong.  socfpga_agilex_vab dropping hashing code
> does look worrying however, but maybe it's a configuration issue in the
> end?
> 

  parent reply	other threads:[~2021-05-04 23:24 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-03 23:10 [PATCH 00/49] image: Reduce #ifdefs and ad-hoc defines in image code Simon Glass
2021-05-03 23:10 ` [PATCH 01/49] Add support for an owned buffer Simon Glass
2021-05-04  6:59   ` Rasmus Villemoes
2021-05-05 23:37     ` Simon Glass
2021-05-03 23:10 ` [PATCH 02/49] compiler: Add a comment to host_build() Simon Glass
2021-05-04  7:01   ` Rasmus Villemoes
2021-05-03 23:10 ` [PATCH 03/49] zstd: Create a function for use from U-Boot Simon Glass
2021-05-03 23:10 ` [PATCH 04/49] btrfs: Use U-Boot API for decompression Simon Glass
2021-05-03 23:25   ` Qu Wenruo
2021-05-03 23:45   ` Marek Behun
2021-05-04 16:58     ` Simon Glass
2021-05-03 23:10 ` [PATCH 05/49] image: Avoid switch default in image_decomp() Simon Glass
2021-05-03 23:10 ` [PATCH 06/49] image: Update zstd to avoid reporting error twice Simon Glass
2021-05-03 23:10 ` [PATCH 07/49] gzip: Avoid use of u64 Simon Glass
2021-05-03 23:10 ` [PATCH 08/49] image: Update image_decomp() to avoid ifdefs Simon Glass
2021-05-03 23:10 ` [PATCH 09/49] image: Split board code out into its own file Simon Glass
2021-05-03 23:10 ` [PATCH 10/49] image: Fix up checkpatch warnings in image-board.c Simon Glass
2021-05-03 23:10 ` [PATCH 11/49] image: Split host code out into its own file Simon Glass
2021-05-03 23:10 ` [PATCH 12/49] image: Create a function to do manual relocation Simon Glass
2021-05-04  7:17   ` Rasmus Villemoes
2021-05-07  2:45     ` Simon Glass
2021-05-03 23:11 ` [PATCH 13/49] image: Avoid #ifdefs for " Simon Glass
2021-05-03 23:11 ` [PATCH 14/49] image: Remove ifdefs around image_setup_linux() el at Simon Glass
2021-05-03 23:11 ` [PATCH 15/49] image: Add Kconfig options for FIT in the host build Simon Glass
2021-05-03 23:11 ` [PATCH 16/49] kconfig: Add host support to CONFIG_IS_ENABLED() Simon Glass
2021-05-04  7:28   ` Rasmus Villemoes
2021-05-03 23:11 ` [PATCH 17/49] image: Shorten FIT_ENABLE_SHAxxx_SUPPORT Simon Glass
2021-05-03 23:11 ` [PATCH 18/49] image: Rename SPL_SHAxxx_SUPPORT to SPL_FIT_SHAxxx Simon Glass
2021-05-03 23:11 ` [PATCH 19/49] hash: Use Kconfig to enable hashing in host tools Simon Glass
2021-05-03 23:11 ` [PATCH 20/49] hash: Drop some #ifdefs in hash.c Simon Glass
2021-05-03 23:11 ` [PATCH 21/49] image: Drop IMAGE_ENABLE_FIT Simon Glass
2021-05-03 23:11 ` [PATCH 22/49] image: Drop IMAGE_ENABLE_OF_LIBFDT Simon Glass
2021-05-03 23:11 ` [PATCH 23/49] image: Use Kconfig to enable CONFIG_FIT_VERBOSE on host Simon Glass
2021-05-03 23:11 ` [PATCH 24/49] image: Rename CONFIG_FIT_ENABLE_RSASSA_PSS_SUPPORT Simon Glass
2021-05-03 23:11 ` [PATCH 25/49] image: Use Kconfig to enable FIT_RSASSA_PSS on host Simon Glass
2021-05-03 23:11 ` [PATCH 26/49] Kconfig: Rename SPL_CRC32_SUPPORT to SPL_CRC32 Simon Glass
2021-05-03 23:11 ` [PATCH 27/49] image: Drop IMAGE_ENABLE_CRC32 Simon Glass
2021-05-03 23:11 ` [PATCH 28/49] Kconfig: Rename SPL_MD5_SUPPORT to SPL_MD5 Simon Glass
2021-05-03 23:11 ` [PATCH 29/49] image: Drop IMAGE_ENABLE_MD5 Simon Glass
2021-05-03 23:11 ` [PATCH 30/49] image: Drop IMAGE_ENABLE_SHA1 Simon Glass
2021-05-03 23:11 ` [PATCH 31/49] image: Drop IMAGE_ENABLE_SHAxxx Simon Glass
2021-05-03 23:11 ` [PATCH 32/49] image: Drop IMAGE_BOOT_GET_CMDLINE Simon Glass
2021-05-03 23:11 ` [PATCH 33/49] image: Drop IMAGE_OF_BOARD_SETUP Simon Glass
2021-05-03 23:11 ` [PATCH 34/49] image: Drop IMAGE_OF_SYSTEM_SETUP Simon Glass
2021-05-03 23:11 ` [PATCH 35/49] image: Drop IMAGE_ENABLE_IGNORE Simon Glass
2021-05-03 23:11 ` [PATCH 36/49] image: Drop IMAGE_ENABLE_SIGN/VERIFY defines Simon Glass
2021-05-03 23:11 ` [PATCH 37/49] image: Drop IMAGE_ENABLE_BEST_MATCH Simon Glass
2021-05-03 23:11 ` [PATCH 38/49] image: Drop IMAGE_ENABLE_EN/DECRYPT defines Simon Glass
2021-05-03 23:11 ` [PATCH 39/49] image: Tidy up fit_unsupported_reset() Simon Glass
2021-05-03 23:11 ` [PATCH 40/49] image: Drop unnecessary #ifdefs from image.h Simon Glass
2021-05-03 23:11 ` [PATCH 41/49] image: Drop #ifdefs for fit_print_contents() Simon Glass
2021-05-03 23:11 ` [PATCH 42/49] image: Drop most #ifdefs in image-board.c Simon Glass
2021-05-03 23:11 ` [PATCH 43/49] image: Reduce variable scope in boot_get_ramdisk() Simon Glass
2021-05-03 23:11 ` [PATCH 44/49] image: Split up boot_get_ramdisk() Simon Glass
2021-05-03 23:11 ` [PATCH 45/49] image: Remove #ifdefs from select_ramdisk() Simon Glass
2021-05-03 23:11 ` [PATCH 46/49] image: Remove some #ifdefs from image-fit and image-fit-sig Simon Glass
2021-05-03 23:11 ` [PATCH 47/49] image: Reduce variable scope in boot_get_fdt() Simon Glass
2021-05-03 23:11 ` [PATCH 48/49] image: Split up boot_get_fdt() Simon Glass
2021-05-03 23:11 ` [PATCH 49/49] image: Remove #ifdefs from select_fdt() Simon Glass
2021-05-04 21:40 ` [PATCH 00/49] image: Reduce #ifdefs and ad-hoc defines in image code Tom Rini
2021-05-04 21:49   ` Simon Glass
2021-05-04 23:24   ` Sean Anderson [this message]
2021-05-05  1:11     ` Tom Rini
2021-05-05 23:38   ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fee751a1-180b-6b31-3594-586f11549069@gmail.com \
    --to=seanga2@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox