On Mon, Jan 23, 2017 at 07:01:38PM +0530, Lokesh Vutla wrote: > Tom, > > On Monday 23 January 2017 06:28 PM, Tom Rini wrote: > > On Mon, Jan 23, 2017 at 02:23:40PM +0530, Lokesh Vutla wrote: > >> > >> > >> On Friday 20 January 2017 07:23 AM, Andre Przywara wrote: > >>> At the moment we load two images from a FIT image: the actual U-Boot > >>> image and the DTB. Both times we have very similar code to deal with > >>> alignment requirement the media we load from imposes upon us. > >>> Factor out this code into a new function, which we just call twice. > >>> > >>> Signed-off-by: Andre Przywara <andre.przyw...@arm.com> > >>> --- > >>> common/spl/spl_fit.c | 122 > >>> +++++++++++++++++++++------------------------------ > >>> 1 file changed, 51 insertions(+), 71 deletions(-) > >>> > >>> diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c > >>> index 381ed1f..d4149c5 100644 > >>> --- a/common/spl/spl_fit.c > >>> +++ b/common/spl/spl_fit.c > >>> @@ -138,19 +138,58 @@ static int get_aligned_image_size(struct > >>> spl_load_info *info, int data_size, > >>> return (data_size + info->bl_len - 1) / info->bl_len; > >>> } > >>> > >>> +static int spl_load_fit_image(struct spl_load_info *info, ulong sector, > >>> + void *fit, ulong base_offset, int node, > >>> + struct spl_image_info *image_info) > >>> +{ > >>> + ulong offset; > >>> + size_t length; > >>> + ulong load, entry; > >>> + void *src; > >>> + ulong overhead; > >>> + int nr_sectors; > >>> + > >>> + offset = fdt_getprop_u32(fit, node, "data-offset") + base_offset; > >>> + length = fdt_getprop_u32(fit, node, "data-size"); > >>> + load = fdt_getprop_u32(fit, node, "load"); > >>> + if (load == -1U && image_info) > >>> + load = image_info->load_addr; > >> > >> What if load_addr is not aligned with ARCH_DMA_MINALIGN like in case of > >> DT loading (u-boot's load_addr + size cannot be always aligned with > >> DMA). I keep getting this error when loading DT: "FAT: Misaligned buffer > >> address (808675a0)." > > > > My immediate concern here is that we've found another way we're going to > > run into the same old problems of 'large kernel BSS stomps on DT (or > > initrd) on ARM32 (arm64 won't because the Image format includes end of > > BSS as a field). If your FDT isn't at base+128MiB (and you have > > > 128MiB DDR), something is wrong :) > > I guess the problem here is FDT for u-boot, which is loaded at the end > of u-boot which depends on u-boot's load address and size. I agree that > for kernel the DTB is loaded at base + 128MB. or am I missing something?
Ah, sorry. misread, nevermind. -- Tom
signature.asc
Description: Digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot