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