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.
> 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 <ag...@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. Best regards Heinrich > runtime_end = (ulong)&__efi_runtime_stop; > - runtime_end = (runtime_end + EFI_PAGE_MASK) & ~EFI_PAGE_MASK; > + runtime_end = (runtime_end + SZ_64K - 1) & ~(SZ_64K - 1); > runtime_pages = (runtime_end - runtime_start) >> EFI_PAGE_SHIFT; > efi_add_memory_map(runtime_start, runtime_pages, > EFI_RUNTIME_SERVICES_CODE, false); > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot