From patchwork Tue Mar 10 09:15:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Delaunay X-Patchwork-Id: 243468 List-Id: U-Boot discussion From: patrick.delaunay at st.com (Patrick Delaunay) Date: Tue, 10 Mar 2020 10:15:01 +0100 Subject: [PATCH v4 0/4] Ensure 16 alignment of reserved memory in board_f.c Message-ID: <20200310091505.24862-1-patrick.delaunay@st.com> Hi, It is a V4 with only cosmetics udpate (s/insure/ensure) for the V3 serie: http://patchwork.ozlabs.org/project/uboot/list/?series=162918&state=* V2 was: http://patchwork.ozlabs.org/project/uboot/list/?series=154685&state=* After the first correction, only for bootstage alignment, I remove the stm32mp1 workaround in the 2nd patch. The 4th patch is a complete solution to alignment (proposed in comment 5 of http://patchwork.ozlabs.org/patch/1201452/#2327366) I always align the reserved memory to 16 bytes with a new function reserve_stack_aligned(). But this patch causes an issue on ARM 32 bits, as the relocated gd pointer is not initialized with gd->new_gd as expected now in reserve_global_data() but is hard-coded with: relocated gd = gd->bd - GD_SIZE {with GD_SIZE = sizeof(struct global_data)} After the 4rd patch, this assumption in not more true as sizeof(struct global_data) is not always 16 bytes aligned. This issue is solved with the 3rd patch of the serie arm: set the relocated gd with gd->new_gd Only tested on STM32MP157C-EV1 board (ARM32 architecture). Changes in v4: - replace insure by ensure in comment - replace insure by ensure Changes in v3: - rename reserve_sp to reserve_stack_aligned Changes in v2: - import: [U-Boot,v3] board_f.c: Insure gd->new_bootstage alignment - fix commit message s/bits/bytes/ Patrice Chotard (1): board_f.c: Ensure gd->new_bootstage alignment Patrick Delaunay (3): Revert "stm32mp1: remove the imply BOOTSTAGE" arm: set the relocated gd with gd->new_gd board_f.c: Ensure 16 alignment of start_addr_sp and reserved memory arch/arm/lib/crt0.S | 3 +-- arch/arm/mach-stm32mp/Kconfig | 2 ++ common/board_f.c | 27 ++++++++++++++++++--------- 3 files changed, 21 insertions(+), 11 deletions(-)