aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/ia64/kernel/setup.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index 66377baea6a5..be398451d45c 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -256,7 +256,7 @@ reserve_memory (void)
256 256
257#ifdef CONFIG_KEXEC 257#ifdef CONFIG_KEXEC
258 /* crashkernel=size@offset specifies the size to reserve for a crash 258 /* crashkernel=size@offset specifies the size to reserve for a crash
259 * kernel.(offset is ingored for keep compatibility with other archs) 259 * kernel. If offset is 0, then it is determined automatically.
260 * By reserving this memory we guarantee that linux never set's it 260 * By reserving this memory we guarantee that linux never set's it
261 * up as a DMA target.Useful for holding code to do something 261 * up as a DMA target.Useful for holding code to do something
262 * appropriate after a kernel panic. 262 * appropriate after a kernel panic.
@@ -266,10 +266,16 @@ reserve_memory (void)
266 unsigned long base, size; 266 unsigned long base, size;
267 if (from) { 267 if (from) {
268 size = memparse(from + 12, &from); 268 size = memparse(from + 12, &from);
269 if (*from == '@')
270 base = memparse(from+1, &from);
271 else
272 base = 0;
269 if (size) { 273 if (size) {
270 sort_regions(rsvd_region, n); 274 if (!base) {
271 base = kdump_find_rsvd_region(size, 275 sort_regions(rsvd_region, n);
272 rsvd_region, n); 276 base = kdump_find_rsvd_region(size,
277 rsvd_region, n);
278 }
273 if (base != ~0UL) { 279 if (base != ~0UL) {
274 rsvd_region[n].start = 280 rsvd_region[n].start =
275 (unsigned long)__va(base); 281 (unsigned long)__va(base);