[U-Boot] [PATCH] efi_loader: make pool allocations cacheline aligned
Heinrich Schuchardt
xypron.glpk at gmx.de
Wed Aug 2 01:21:28 UTC 2017
On 08/01/2017 10:00 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 <robdclark at 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);
>
> if (size == 0) {
> *buffer = NULL;
>
NAK
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.
Could you, please, use
scripts/getmaintainer.pl
to determine the addressees of patches.
Best regards
Heinrich
More information about the U-Boot
mailing list