
On 09/17/2018 04:45 AM, Alexander Graf wrote:
The UEFI spec mandates that runtime sections are 64kb aligned to enable support for 64kb page size OSs.
Where in the spec did you find this? I could neither find the term "runtime section" nor "64kb" in the text.
Best regards
Heinrich
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); 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);