[PATCH 04/12] x86: Make sure the SPL image ends on a suitable boundary

Simon Glass sjg at chromium.org
Sun Jan 24 18:06:23 CET 2021


Hi Bin,

On Wed, 20 Jan 2021 at 22:35, Bin Meng <bmeng.cn at gmail.com> wrote:
>
> Hi Simon,
>
> On Sun, Jan 17, 2021 at 5:54 AM Simon Glass <sjg at chromium.org> wrote:
> >
> > The part of U-Boot that actually ends up in u-boot-nodtb.bin is not built
> > with any particular alignment. It ends at the start of the BSS section.
> > The BSS section selects its own alignment, which may larger.
>
> I don't see start of the BSS section has alignment in the linker script.
>
> > This means that there can be a gap of a few bytes between the image
> > ending and BSS starting.
> >
> > Since u-boot.bin is build by joining u-boot-nodtb.bin and u-boot.dtb (with
> > perhaps some padding for BSS), the expected result is not obtained. U-Boot
> > uses the end of BSS to find the devicetree, so this means that it cannot
> > be found.
>
> Please explain this in more details, maybe showing a failure case with
> exact bss start/size and where U-Boot expects to get the device tree
> but it's not
>
> >
> > Add 32-byte alignment of BSS so that the image size is correct and
> > appending the devicetree will place it at the end of BSS.
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > ---
> >
> >  arch/x86/cpu/u-boot-spl.lds | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/arch/x86/cpu/u-boot-spl.lds b/arch/x86/cpu/u-boot-spl.lds
> > index e6c22895b35..e0c70b076b8 100644
> > --- a/arch/x86/cpu/u-boot-spl.lds
> > +++ b/arch/x86/cpu/u-boot-spl.lds
> > @@ -43,6 +43,7 @@ SECTIONS
> >                 __binman_sym_start = .;
> >                 KEEP(*(SORT(.binman_sym*)));
> >                 __binman_sym_end = .;
> > +               . = ALIGN(32);
>
> Is 32 safe enough?

I'll send a new version expanding this. I have not seen >32-byte
alignment so far.

>
> >         }
> >
> >          _image_binary_end = .;
> > --

Regards,
Simon


More information about the U-Boot mailing list