
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@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