1*4882a593SmuzhiyunFrom edf186f45d543e318400195cc25175387ff3f5c4 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Andrea Adami <andrea.adami@gmail.com> 3*4882a593SmuzhiyunDate: Sun, 26 Aug 2018 21:40:06 +0200 4*4882a593SmuzhiyunSubject: [PATCH] arm- backport from oe-core 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunSigned-off-by: Andrea Adami <andrea.adami@gmail.com> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun--- 9*4882a593Smuzhiyun kexec/arch/arm/crashdump-arm.c | 5 ++++- 10*4882a593Smuzhiyun 1 file changed, 4 insertions(+), 1 deletion(-) 11*4882a593Smuzhiyun 12*4882a593Smuzhiyundiff --git a/kexec/arch/arm/crashdump-arm.c b/kexec/arch/arm/crashdump-arm.c 13*4882a593Smuzhiyunindex daa4788..3f72b38 100644 14*4882a593Smuzhiyun--- a/kexec/arch/arm/crashdump-arm.c 15*4882a593Smuzhiyun+++ b/kexec/arch/arm/crashdump-arm.c 16*4882a593Smuzhiyun@@ -240,6 +240,7 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) 17*4882a593Smuzhiyun void *buf; 18*4882a593Smuzhiyun int err; 19*4882a593Smuzhiyun int last_ranges; 20*4882a593Smuzhiyun+ unsigned short align_bit_shift = 20; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun /* 23*4882a593Smuzhiyun * First fetch all the memory (RAM) ranges that we are going to pass to 24*4882a593Smuzhiyun@@ -281,6 +282,7 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun /* for support LPAE enabled kernel*/ 27*4882a593Smuzhiyun elf_info.class = ELFCLASS64; 28*4882a593Smuzhiyun+ align_bit_shift = 21; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun err = crash_create_elf64_headers(info, &elf_info, 31*4882a593Smuzhiyun usablemem_rgns.ranges, 32*4882a593Smuzhiyun@@ -302,8 +304,9 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) 33*4882a593Smuzhiyun * 1MB) so that available memory passed in kernel command line will be 34*4882a593Smuzhiyun * aligned to 1MB. This is because kernel create_mapping() wants memory 35*4882a593Smuzhiyun * regions to be aligned to SECTION_SIZE. 36*4882a593Smuzhiyun+ * The SECTION_SIZE of LPAE kernel is '1UL << 21' defined in pgtable-3level.h 37*4882a593Smuzhiyun */ 38*4882a593Smuzhiyun- elfcorehdr = add_buffer_phys_virt(info, buf, bufsz, bufsz, 1 << 20, 39*4882a593Smuzhiyun+ elfcorehdr = add_buffer_phys_virt(info, buf, bufsz, bufsz, 1 << align_bit_shift, 40*4882a593Smuzhiyun crash_kernel_mem.start, 41*4882a593Smuzhiyun crash_kernel_mem.end, -1, 0); 42*4882a593Smuzhiyun 43