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 {
