All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick Wildt <patrick@blueri.se>
To: u-boot@lists.denx.de
Subject: [PATCH 1/3] spl: fit: Minimally parse OS properties with FIT_IMAGE_TINY
Date: Fri, 8 May 2020 11:47:31 +0200	[thread overview]
Message-ID: <20200508094731.GA80498@ryzen.blueri.se> (raw)
In-Reply-To: <20200507232035.31892-1-samuel@sholland.org>

On Thu, May 07, 2020 at 06:20:33PM -0500, Samuel Holland wrote:
> Some boards, specifically 64-bit Allwinner boards (sun50i), are
> extremely limited on SPL size. One strategy that was used to make space
> was to remove the FIT "os" property parsing code, because it uses a
> rather large lookup table.
> 
> However, this forces the legacy FIT parsing code path, which requires
> the "firmware" entry in the FIT to reference the U-Boot binary, even if
> U-Boot is not the next binary in the boot sequence (for example, on
> sun50i boards, ATF is run first).
> 
> This prevents the same FIT image from being used with a SPL with
> CONFIG_SPL_FIT_IMAGE_TINY=n and CONFIG_SPL_ATF=y, because the boot
> method selection code looks at `spl_image.os`, which is only set from
> the "firmware" entry's "os" property.
> 
> To be able to use CONFIG_SPL_ATF=y, the "firmware" entry in the FIT
> must be ATF, and U-Boot must be a loadable. For this to work, we need to
> parse the "os" property just enough to tell U-Boot from other images, so
> we can find it in the loadables list to append the FDT, and so we don't
> try to append the FDT to ATF (which could clobber adjacent firmware).
> 
> So add the minimal code necessary to distinguish U-Boot/non-U-Boot
> loadables with CONFIG_SPL_FIT_IMAGE_TINY=y. This adds about 300 bytes,
> much less than the 7400 bytes added by CONFIG_SPL_FIT_IMAGE_TINY=n.
> 
> Signed-off-by: Samuel Holland <samuel@sholland.org>

Acked-by: Patrick Wildt <patrick@blueri.se>

> ---
>  common/spl/Kconfig   |  4 +---
>  common/spl/spl_fit.c | 17 ++++++++++++++++-
>  2 files changed, 17 insertions(+), 4 deletions(-)
> 
> diff --git a/common/spl/Kconfig b/common/spl/Kconfig
> index 9feadb5e43..f2fa12354d 100644
> --- a/common/spl/Kconfig
> +++ b/common/spl/Kconfig
> @@ -448,9 +448,7 @@ config SPL_FIT_IMAGE_TINY
>  	  Enable this to reduce the size of the FIT image loading code
>  	  in SPL, if space for the SPL binary is very tight.
>  
> -	  This removes the detection of image types (which forces the
> -	  first image to be treated as having a U-Boot style calling
> -	  convention) and skips the recording of each loaded payload
> +	  This skips the recording of each loaded payload
>  	  (i.e. loadable) into the FDT (modifying the loaded FDT to
>  	  ensure this information is available to the next image
>  	  invoked).
> diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
> index c51e4beb1c..b9dd4211aa 100644
> --- a/common/spl/spl_fit.c
> +++ b/common/spl/spl_fit.c
> @@ -464,7 +464,22 @@ static int spl_fit_record_loadable(const void *fit, int images, int index,
>  static int spl_fit_image_get_os(const void *fit, int noffset, uint8_t *os)
>  {
>  #if CONFIG_IS_ENABLED(FIT_IMAGE_TINY) && !defined(CONFIG_SPL_OS_BOOT)
> -	return -ENOTSUPP;
> +	const char *name = fdt_getprop(fit, noffset, FIT_OS_PROP, NULL);
> +
> +	if (!name)
> +		return -ENOENT;
> +
> +	/*
> +	 * We don't care what the type of the image actually is,
> +	 * only whether or not it is U-Boot. This saves some
> +	 * space by omitting the large table of OS types.
> +	 */
> +	if (!strcmp(name, "u-boot"))
> +		*os = IH_OS_U_BOOT;
> +	else
> +		*os = IH_OS_INVALID;
> +
> +	return 0;
>  #else
>  	return fit_image_get_os(fit, noffset, os);
>  #endif
> -- 
> 2.24.1
> 

  parent reply	other threads:[~2020-05-08  9:47 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-07 23:20 [PATCH 1/3] spl: fit: Minimally parse OS properties with FIT_IMAGE_TINY Samuel Holland
2020-05-07 23:20 ` [PATCH 2/3] mksunxi_fit_atf.sh: Update FIT component descriptions Samuel Holland
2020-05-08  9:45   ` Patrick Wildt
2020-05-09 19:02     ` Samuel Holland
2020-05-09 19:09       ` Patrick Wildt
2020-05-07 23:20 ` [PATCH 3/3] sunxi: Add support for including SCP firmware Samuel Holland
2020-05-08  9:47 ` Patrick Wildt [this message]
2020-06-01 17:04 ` [PATCH 1/3] spl: fit: Minimally parse OS properties with FIT_IMAGE_TINY Jagan Teki

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=20200508094731.GA80498@ryzen.blueri.se \
    --to=patrick@blueri.se \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.