On Fri, Aug 11, 2017 at 12:58 PM, Heinrich Schuchardt <xypron.g...@gmx.de> wrote: > On 08/10/2017 08:29 PM, Rob Clark wrote: >> This avoids printf() spam about file reads (such as loading an image) >> into unaligned buffers (and the associated memcpy()). And generally >> seems like a good idea. >> >> Signed-off-by: Rob Clark <robdcl...@gmail.com> >> --- >> lib/efi_loader/efi_memory.c | 5 +++-- >> 1 file changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/lib/efi_loader/efi_memory.c b/lib/efi_loader/efi_memory.c >> index 9e079f1fa3..2ba8d8b42b 100644 >> --- a/lib/efi_loader/efi_memory.c >> +++ b/lib/efi_loader/efi_memory.c >> @@ -43,7 +43,7 @@ void *efi_bounce_buffer; >> */ >> struct efi_pool_allocation { >> u64 num_pages; >> - char data[]; >> + char data[] __attribute__((aligned(ARCH_DMA_MINALIGN))); >> }; >> >> /* >> @@ -356,7 +356,8 @@ efi_status_t efi_allocate_pool(int pool_type, unsigned >> long size, >> { >> efi_status_t r; >> efi_physical_addr_t t; >> - u64 num_pages = (size + sizeof(u64) + EFI_PAGE_MASK) >> EFI_PAGE_SHIFT; >> + u64 num_pages = DIV_ROUND_UP(size + sizeof(struct efi_pool_allocation), >> + EFI_PAGE_SIZE); > > It seems you missed my mail dated 2017-08-02T01:21Z: > > With DIV_ROUND_UP you introduce a 64bit division. Depending on the > architecture this is only available via stdlib which is not available in > U-Boot. > > Please, use > + EFI_PAGE_MASK) >> EFI_PAGE_SHIFT; > as in the original line. >
I didn't miss it.. but I did disagree with it. It is an unsigned division by a power-of-two. The compiler turns this into a right-shift. So in fact both ways generate the same code, but the DIV_ROUND_UP() is more clear. BR, -R _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot