summaryrefslogtreecommitdiffstats
path: root/kernel/kexec.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kexec.c')
-rw-r--r--kernel/kexec.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/kernel/kexec.c b/kernel/kexec.c
index 5e4bd7864c5d..2436ffcec91f 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -54,6 +54,12 @@ struct resource crashk_res = {
54 .end = 0, 54 .end = 0,
55 .flags = IORESOURCE_BUSY | IORESOURCE_MEM 55 .flags = IORESOURCE_BUSY | IORESOURCE_MEM
56}; 56};
57struct resource crashk_low_res = {
58 .name = "Crash kernel low",
59 .start = 0,
60 .end = 0,
61 .flags = IORESOURCE_BUSY | IORESOURCE_MEM
62};
57 63
58int kexec_should_crash(struct task_struct *p) 64int kexec_should_crash(struct task_struct *p)
59{ 65{
@@ -1369,10 +1375,11 @@ static int __init parse_crashkernel_simple(char *cmdline,
1369 * That function is the entry point for command line parsing and should be 1375 * That function is the entry point for command line parsing and should be
1370 * called from the arch-specific code. 1376 * called from the arch-specific code.
1371 */ 1377 */
1372int __init parse_crashkernel(char *cmdline, 1378static int __init __parse_crashkernel(char *cmdline,
1373 unsigned long long system_ram, 1379 unsigned long long system_ram,
1374 unsigned long long *crash_size, 1380 unsigned long long *crash_size,
1375 unsigned long long *crash_base) 1381 unsigned long long *crash_base,
1382 const char *name)
1376{ 1383{
1377 char *p = cmdline, *ck_cmdline = NULL; 1384 char *p = cmdline, *ck_cmdline = NULL;
1378 char *first_colon, *first_space; 1385 char *first_colon, *first_space;
@@ -1382,16 +1389,16 @@ int __init parse_crashkernel(char *cmdline,
1382 *crash_base = 0; 1389 *crash_base = 0;
1383 1390
1384 /* find crashkernel and use the last one if there are more */ 1391 /* find crashkernel and use the last one if there are more */
1385 p = strstr(p, "crashkernel="); 1392 p = strstr(p, name);
1386 while (p) { 1393 while (p) {
1387 ck_cmdline = p; 1394 ck_cmdline = p;
1388 p = strstr(p+1, "crashkernel="); 1395 p = strstr(p+1, name);
1389 } 1396 }
1390 1397
1391 if (!ck_cmdline) 1398 if (!ck_cmdline)
1392 return -EINVAL; 1399 return -EINVAL;
1393 1400
1394 ck_cmdline += 12; /* strlen("crashkernel=") */ 1401 ck_cmdline += strlen(name);
1395 1402
1396 /* 1403 /*
1397 * if the commandline contains a ':', then that's the extended 1404 * if the commandline contains a ':', then that's the extended
@@ -1409,6 +1416,23 @@ int __init parse_crashkernel(char *cmdline,
1409 return 0; 1416 return 0;
1410} 1417}
1411 1418
1419int __init parse_crashkernel(char *cmdline,
1420 unsigned long long system_ram,
1421 unsigned long long *crash_size,
1422 unsigned long long *crash_base)
1423{
1424 return __parse_crashkernel(cmdline, system_ram, crash_size, crash_base,
1425 "crashkernel=");
1426}
1427
1428int __init parse_crashkernel_low(char *cmdline,
1429 unsigned long long system_ram,
1430 unsigned long long *crash_size,
1431 unsigned long long *crash_base)
1432{
1433 return __parse_crashkernel(cmdline, system_ram, crash_size, crash_base,
1434 "crashkernel_low=");
1435}
1412 1436
1413static void update_vmcoreinfo_note(void) 1437static void update_vmcoreinfo_note(void)
1414{ 1438{