File tree Expand file tree Collapse file tree 2 files changed +17
-2
lines changed
Documentation/admin-guide Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Original file line number Diff line number Diff line change 831
831
memory region [offset, offset + size] for that kernel
832
832
image. If '@offset' is omitted, then a suitable offset
833
833
is selected automatically.
834
- [KNL, X86-64] Select a region under 4G first, and
834
+ [KNL, X86-64, ARM64 ] Select a region under 4G first, and
835
835
fall back to reserve region above 4G when '@offset'
836
836
hasn't been specified.
837
837
See Documentation/admin-guide/kdump/kdump.rst for further details.
Original file line number Diff line number Diff line change @@ -132,6 +132,7 @@ static void __init reserve_crashkernel(void)
132
132
unsigned long long crash_max = CRASH_ADDR_LOW_MAX ;
133
133
char * cmdline = boot_command_line ;
134
134
int ret ;
135
+ bool fixed_base = false;
135
136
136
137
if (!IS_ENABLED (CONFIG_KEXEC_CORE ))
137
138
return ;
@@ -163,12 +164,26 @@ static void __init reserve_crashkernel(void)
163
164
crash_size = PAGE_ALIGN (crash_size );
164
165
165
166
/* User specifies base address explicitly. */
166
- if (crash_base )
167
+ if (crash_base ) {
168
+ fixed_base = true;
167
169
crash_max = crash_base + crash_size ;
170
+ }
168
171
172
+ retry :
169
173
crash_base = memblock_phys_alloc_range (crash_size , CRASH_ALIGN ,
170
174
crash_base , crash_max );
171
175
if (!crash_base ) {
176
+ /*
177
+ * If the first attempt was for low memory, fall back to
178
+ * high memory, the minimum required low memory will be
179
+ * reserved later.
180
+ */
181
+ if (!fixed_base && (crash_max == CRASH_ADDR_LOW_MAX )) {
182
+ crash_max = CRASH_ADDR_HIGH_MAX ;
183
+ crash_low_size = DEFAULT_CRASH_KERNEL_LOW_SIZE ;
184
+ goto retry ;
185
+ }
186
+
172
187
pr_warn ("cannot allocate crashkernel (size:0x%llx)\n" ,
173
188
crash_size );
174
189
return ;
You can’t perform that action at this time.
0 commit comments