Add support for reserving crashkernel memory in higher address ranges using the crashkernel=xxM,high command-line option.
With this feature, most of the crashkernel memory for kdump will be reserved in high memory regions, while only a small portion (64 MB) will be reserved in low memory for the kdump kernel. This helps free up low memory for other components that require allocations in that region. For example, if crashkernel=2G,high is specified, the kernel will reserve 2 GB of crashkernel memory near the end of system RAM and an additional 64 MB of low memory (below 1 GB) for RTAS to function properly. Currently, this feature is supported only on PPC64 systems with 64-bit RTAS instantiation and Radix MMU enabled. Two critical changes were made to support this feature: - CPU feature discovery is now performed before crashkernel reservation. This ensures the MMU type is determined before reserving crashkernel memory. (Patch 01/04) - RTAS instantiation has been moved to 64-bit mode. (Patch 02/04) Apply the following patch first, and then apply this patch series: https://lore.kernel.org/all/[email protected]/ Cc: Baoquan he <[email protected]> Cc: Hari Bathini <[email protected]> Cc: Madhavan Srinivasan <[email protected]> Cc: Mahesh Salgaonkar <[email protected]> Cc: Michael Ellerman <[email protected]> Cc: Ritesh Harjani (IBM) <[email protected]> Cc: Shivang Upadhyay <[email protected]> Sourabh Jain (4): powerpc/mmu: do MMU type discovery before crashkernel reservation powerpc: move to 64-bit RTAS powerpc/kdump: consider high crashkernel memory if enabled powerpc/kdump: add support for high crashkernel reservation arch/powerpc/include/asm/book3s/64/mmu.h | 1 + arch/powerpc/include/asm/crash_reserve.h | 8 +++++ arch/powerpc/include/asm/kexec.h | 1 + arch/powerpc/include/asm/mmu.h | 1 + arch/powerpc/include/asm/rtas.h | 11 ++++++ arch/powerpc/kernel/prom.c | 28 ++++++++------- arch/powerpc/kernel/prom_init.c | 26 +++++++++++--- arch/powerpc/kernel/rtas.c | 5 +++ arch/powerpc/kernel/rtas_entry.S | 17 ++++++++- arch/powerpc/kexec/core.c | 45 +++++++++++++++++------- arch/powerpc/kexec/elf_64.c | 10 ++++-- arch/powerpc/kexec/file_load_64.c | 5 +-- arch/powerpc/kexec/ranges.c | 24 +++++++++++-- arch/powerpc/mm/init_64.c | 27 ++++++++------ 14 files changed, 161 insertions(+), 48 deletions(-) -- 2.51.0
