From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bin Meng Date: Thu, 21 Jan 2021 13:35:00 +0800 Subject: [PATCH 04/12] x86: Make sure the SPL image ends on a suitable boundary In-Reply-To: <20210116145343.4.I66e525bc185416fb67c5ff72d9fadde9d60f7ae4@changeid> References: <20210116215359.1220766-1-sjg@chromium.org> <20210116145343.4.I66e525bc185416fb67c5ff72d9fadde9d60f7ae4@changeid> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Simon, On Sun, Jan 17, 2021 at 5:54 AM Simon Glass 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 > --- > > 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? > } > > _image_binary_end = .; > -- Regards, Bin