Commit 184d7e0d authored by Ard Biesheuvel's avatar Ard Biesheuvel
Browse files

efi/libstub/arm: Relax FDT alignment requirement



The arm64 kernel no longer requires the FDT blob to fit inside a
naturally aligned 2 MB memory block, so remove the code that aligns
the allocation to 2 MB.

Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
parent 6f05106e
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -57,13 +57,6 @@ efi_status_t __efi_rt_asm_wrapper(void *, const char *, ...);

/* arch specific definitions used by the stub code */

/*
 * AArch64 requires the DTB to be 8-byte aligned in the first 512MiB from
 * start of kernel and may not cross a 2MiB boundary. We set alignment to
 * 2MiB so we know it won't cross a 2MiB boundary.
 */
#define EFI_FDT_ALIGN	SZ_2M   /* used by allocate_new_fdt_and_exit_boot() */

/*
 * In some configurations (e.g. VMAP_STACK && 64K pages), stacks built into the
 * kernel need greater alignment than we require the segments to be padded to.
+1 −5
Original line number Diff line number Diff line
@@ -199,10 +199,6 @@ static efi_status_t update_fdt_memmap(void *fdt, struct efi_boot_memmap *map)
	return EFI_SUCCESS;
}

#ifndef EFI_FDT_ALIGN
# define EFI_FDT_ALIGN EFI_PAGE_SIZE
#endif

struct exit_boot_struct {
	efi_memory_desc_t	*runtime_map;
	int			*runtime_entry_count;
@@ -281,7 +277,7 @@ efi_status_t allocate_new_fdt_and_exit_boot(void *handle,
	pr_efi("Exiting boot services and installing virtual address map...\n");

	map.map = &memory_map;
	status = efi_high_alloc(MAX_FDT_SIZE, EFI_FDT_ALIGN,
	status = efi_high_alloc(MAX_FDT_SIZE, EFI_PAGE_SIZE,
				new_fdt_addr, max_addr);
	if (status != EFI_SUCCESS) {
		pr_efi_err("Unable to allocate memory for new device tree.\n");