Hi Faiz, [snip]
> >>> I guess what you really want to do is to allocate buffer for "mbr" > >>> dynamically of size which is max(sizeof(legacy_mbr), dev_desc->blksz). > >>> > >> > >> With the assumption that blksz is always greater than > >> sizeof(legacy_mbr), this should work: > >> > >> ALLOC_CACHE_ALIGN_BUFFER(legacy_mbr, mbr, DIV_ROUND_UP(dev_desc->blksz, > >> sizeof(legacy_mbr))); > > > > No this won't work. See ALLOC_CACHE_ALIGN_BUFFER does static allocation > > in compile-time while blksz is set in runtime. > > > > That's why I mentioned switch to runtime allocation. > > > > Hmm. So the problem isn't as much about allocating too much in the > buffer but about using dynamically determined size for static array > declaration. In fact it was a problem of huge static allocation I discovered just by chance building U-Boot for a very memory-limited device, see [1]. > This is being used all over this disk/part_dos.c file. > Shouldn't we fix all of that? Not sure how it has been working all along. That part I don't quite understand. What's being used, where and how? And what's the problem with dynamic allocation of the buffer for MBR? [1] https://elinux.org/images/d/d6/U-Boot-Bootloader-for-IoT-Platform-Alexey-Brodkin-Synopsys-2.pdf -Alexey _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot