This series addresses the kexec/kdump crash on arm64 system with many CPUs that was reported by Bhupesh. Patch #1 fixes the actual crash, but may result in memblock_reserve() to fail. This is fixed in patch #4, where the point that the persistent reservations are applied is moved to after memblock_allow_resize() has been called. Patches #2 and #3 contain some minor preparatory changes that are required on ARM to ensure that efi_apply_persistent_mem_reservations() can be called at some point (i.e., when memblock resizing is already permitted and early memremap() is still usable) Patches #5 and #6 optimize the EFI persistent memreserve infrastructure so that fewer memblock reservations are required. Changes since v1: - Russell pointed out that switching to ordinary memremap() was not possible this early, and so I refactored the ARM early boot code slightly so that we can keep using early_memremap(). Ard Biesheuvel (6): arm64: memblock: don't permit memblock resizing until linear mapping is up ARM: mm: permit memblock resizing right after mapping the linear region ARM: mm: permit early_memremap() to be used in paging_init() efi/arm: defer persistent reservations until after paging_init() efi: permit multiple entries in persistent memreserve data structure efi: reduce the amount of memblock reservations for persistent allocations arch/arm/kernel/setup.c | 2 - arch/arm/mm/init.c | 1 - arch/arm/mm/mmu.c | 5 ++ arch/arm64/kernel/setup.c | 1 + arch/arm64/mm/init.c | 2 - arch/arm64/mm/mmu.c | 2 + drivers/firmware/efi/efi.c | 59 ++++++++++++++------ drivers/firmware/efi/libstub/arm-stub.c | 2 +- include/linux/efi.h | 23 +++++++- 9 files changed, 72 insertions(+), 25 deletions(-) -- 2.19.1