Thanks, applied as d2be5e8d92708ef2c0fdcfa86c9d351556379537.

Michael

[sent from post-receive hook]

On Thu, 08 Feb 2024 17:03:34 +0100, Alexander Dahl <[email protected]> wrote:
> Multi platform kernels built by the kernel-fit rule before are not
> usable in U-Boot, which adheres more strictly to the Flat Image Tree
> (FIT) spec than barebox does.  For image sub-type 'kernel' U-Boot
> expects valid 'load' and 'entry' addresses.  Setting those addresses to
> a generic value is impossible however for generic kernels, e.g. the
> DistroKit v7a kernel needs different addresses on at91 SAMA5 than
> on i.MX6.  barebox circumvents this by ignoring missing 'load' and
> 'entry' addresses and finding a suitable address by itself.  For using
> generic kernels in U-Boot you need sub-image type 'kernel_noload' and
> dummy addresses, which is also supported in barebox from v2024.01.0
> release onwards.
> 
> Link: 
> https://github.com/open-source-firmware/flat-image-tree/releases/download/v0.8/fit-specification-v0.8.pdf
> Link: 
> https://lore.barebox.org/barebox/[email protected]/
> Signed-off-by: Alexander Dahl <[email protected]>
> Message-Id: <[email protected]>
> Signed-off-by: Michael Olbrich <[email protected]>
> 
> diff --git a/platforms/kernel-fit.in b/platforms/kernel-fit.in
> index 0e82889b9ede..5b160c57ddf6 100644
> --- a/platforms/kernel-fit.in
> +++ b/platforms/kernel-fit.in
> @@ -17,14 +17,31 @@ menuconfig KERNEL_FIT
>  
>  if KERNEL_FIT
>  
> +config KERNEL_FIT_NOLOAD
> +     bool
> +     prompt "Sub-image type 'kernel_noload'"
> +     help
> +       Use 'kernel_noload' as sub-image type for the kernel, setting
> +       the load address and entry address to dummy values as required
> +       by the FIT image specification.
> +       Useful for booting kernels supporting multiple boards with
> +       U-Boot, e.g. the platform-v7a kernel of DistroKit.
> +       U-Boot supports this since release v2011.12.
> +
> +       Note: barebox added support with release v2024.01.0.
> +       You can leave this option disabled if you only use barebox.
> +       You should not enable this if you use older barebox versions.
> +
>  config KERNEL_FIT_LOAD
>       string
> +     depends on !KERNEL_FIT_NOLOAD
>       prompt "Kernel load address (optional)"
>       help
>         Required by most bootloaders. Optional for Barebox.
>  
>  config KERNEL_FIT_ENTRY
>       string
> +     depends on !KERNEL_FIT_NOLOAD
>       prompt "Kernel entry address (optional)"
>       help
>         Required by most bootloaders. Optional for Barebox.
> diff --git a/scripts/lib/ptxd_make_fit_image.sh 
> b/scripts/lib/ptxd_make_fit_image.sh
> index dd0f63b7b72d..4b99e6fbfec3 100644
> --- a/scripts/lib/ptxd_make_fit_image.sh
> +++ b/scripts/lib/ptxd_make_fit_image.sh
> @@ -19,20 +19,30 @@ ptxd_make_image_fit_its() {
>               kernel {
>                       description = "kernel";
>                       data = /incbin/("${image_kernel}");
> -                     type = "kernel";
>                       arch = "$(ptxd_get_ptxconf PTXCONF_ARCH_STRING)";
>                       os = "linux";
>                       compression = "none";
>  EOF
> -    if [ -n "$(ptxd_get_ptxconf PTXCONF_KERNEL_FIT_LOAD)" ]; then
> +    if [ -n "$(ptxd_get_ptxconf PTXCONF_KERNEL_FIT_NOLOAD)" ]; then
>          cat << EOF
> -                     load = <$(ptxd_get_ptxconf PTXCONF_KERNEL_FIT_LOAD)>;
> +                     type = "kernel_noload";
> +                     load = <0x00000000>;
> +                     entry = <0x00000000>;
>  EOF
> -    fi
> -    if [ -n "$(ptxd_get_ptxconf PTXCONF_KERNEL_FIT_ENTRY)" ]; then
> +    else
>          cat << EOF
> +                     type = "kernel";
> +EOF
> +        if [ -n "$(ptxd_get_ptxconf PTXCONF_KERNEL_FIT_LOAD)" ]; then
> +            cat << EOF
> +                     load = <$(ptxd_get_ptxconf PTXCONF_KERNEL_FIT_LOAD)>;
> +EOF
> +        fi
> +        if [ -n "$(ptxd_get_ptxconf PTXCONF_KERNEL_FIT_ENTRY)" ]; then
> +            cat << EOF
>                       entry = <$(ptxd_get_ptxconf PTXCONF_KERNEL_FIT_ENTRY)>;
>  EOF
> +        fi
>      fi
>      cat << EOF
>                       hash-1 {

Reply via email to