[U-Boot] [PATCH] efi_loader: Align runtime section to 64kb

Alexander Graf agraf at suse.de
Mon Sep 17 11:43:12 UTC 2018



On 16.09.18 22:42, Heinrich Schuchardt wrote:
> On 09/17/2018 04:45 AM, Alexander Graf wrote:
>> The UEFI spec mandates that runtime sections are 64kb aligned to enable
> %s/kb/ kiB/g
> The spec requires a multiple of 64,000 not of 65,536.

The other way around you mean I guess? We do usually use "kb" for
multiples of 1024 though, no?

> 
>> support for 64kb page size OSs.
>>
>> This patch ensures that we extend the runtime section to 64kb to be spec
>> compliant.
>>
>> Signed-off-by: Alexander Graf <agraf at suse.de>
>> ---
>>  lib/efi_loader/efi_memory.c | 7 ++++---
>>  1 file changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/lib/efi_loader/efi_memory.c b/lib/efi_loader/efi_memory.c
>> index 4f8cb545ad..66ad54a152 100644
>> --- a/lib/efi_loader/efi_memory.c
>> +++ b/lib/efi_loader/efi_memory.c
>> @@ -11,6 +11,7 @@
>>  #include <mapmem.h>
>>  #include <watchdog.h>
>>  #include <linux/list_sort.h>
>> +#include <linux/sizes.h>
>>  
>>  DECLARE_GLOBAL_DATA_PTR;
>>  
>> @@ -526,10 +527,10 @@ static void add_u_boot_and_runtime(void)
>>  	uboot_pages = (gd->ram_top - uboot_start) >> EFI_PAGE_SHIFT;
>>  	efi_add_memory_map(uboot_start, uboot_pages, EFI_LOADER_DATA, false);
>>  
>> -	/* Add Runtime Services */
>> -	runtime_start = (ulong)&__efi_runtime_start & ~EFI_PAGE_MASK;
>> +	/* Add Runtime Services,must be 64kb aligned */
>> +	runtime_start = (ulong)&__efi_runtime_start & ~(SZ_64K - 1);
> 
> Please, add a comment in the code referring to the requirement in the
> UEFI spec.

Sure, it's part of 2.6.3 (AArch64 Platforms) in the 2.7 spec.


Alex


More information about the U-Boot mailing list