[PATCH v4 0/4] Ensure 16 alignment of reserved memory in board_f.c

Patrick Delaunay patrick.delaunay at st.com
Tue Mar 10 10:15:01 CET 2020


It is a V4 with only cosmetics udpate (s/insure/ensure)
for the V3 serie:

V2 was:

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
I always align the reserved memory to 16 bytes with a new function

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(-)


More information about the U-Boot mailing list