On Sun, Mar 27, 2022 at 02:26:20PM -0600, Simon Glass wrote: > When every member of a linker list is aligned by the compiler, we can no > longer rely on the sizeof of the struct to determine the number of > entries. > > For example, if the struct size is 0x90 but every entry is aligned to 0xa0 > by the compiler, the linker list entries takes more space in memory and > the calculation of the number of entries is incorrect. For example, we may > see 0x12 entries when there are only 0x11. > > This is a real problem. There may be a general solution, although I cannot > currently think of one. So far it only bites with OF_PLATDATA_RT which > creates a pointer to each entry of the 'struct udevice' linker_list. This > does not happen without that option, so it only affects SPL. > > Work around it by manually calculating the aligned size of struct udevice, > then using that for the n_ent calculation. > > Note: the alignment fix to linker list was here: > > 0b2fa98aa5e linker_lists: Fix alignment issue > > Signed-off-by: Simon Glass Applied to u-boot/master, thanks! -- Tom