diff options
Diffstat (limited to 'kernel/kexec.c')
| -rw-r--r-- | kernel/kexec.c | 34 | 
1 files changed, 29 insertions, 5 deletions
diff --git a/kernel/kexec.c b/kernel/kexec.c index 5e4bd7864c5..2436ffcec91 100644 --- a/kernel/kexec.c +++ b/kernel/kexec.c @@ -54,6 +54,12 @@ struct resource crashk_res = {  	.end   = 0,  	.flags = IORESOURCE_BUSY | IORESOURCE_MEM  }; +struct resource crashk_low_res = { +	.name  = "Crash kernel low", +	.start = 0, +	.end   = 0, +	.flags = IORESOURCE_BUSY | IORESOURCE_MEM +};  int kexec_should_crash(struct task_struct *p)  { @@ -1369,10 +1375,11 @@ static int __init parse_crashkernel_simple(char 		*cmdline,   * That function is the entry point for command line parsing and should be   * called from the arch-specific code.   */ -int __init parse_crashkernel(char 		 *cmdline, +static int __init __parse_crashkernel(char *cmdline,  			     unsigned long long system_ram,  			     unsigned long long *crash_size, -			     unsigned long long *crash_base) +			     unsigned long long *crash_base, +				const char *name)  {  	char 	*p = cmdline, *ck_cmdline = NULL;  	char	*first_colon, *first_space; @@ -1382,16 +1389,16 @@ int __init parse_crashkernel(char 		 *cmdline,  	*crash_base = 0;  	/* find crashkernel and use the last one if there are more */ -	p = strstr(p, "crashkernel="); +	p = strstr(p, name);  	while (p) {  		ck_cmdline = p; -		p = strstr(p+1, "crashkernel="); +		p = strstr(p+1, name);  	}  	if (!ck_cmdline)  		return -EINVAL; -	ck_cmdline += 12; /* strlen("crashkernel=") */ +	ck_cmdline += strlen(name);  	/*  	 * if the commandline contains a ':', then that's the extended @@ -1409,6 +1416,23 @@ int __init parse_crashkernel(char 		 *cmdline,  	return 0;  } +int __init parse_crashkernel(char *cmdline, +			     unsigned long long system_ram, +			     unsigned long long *crash_size, +			     unsigned long long *crash_base) +{ +	return __parse_crashkernel(cmdline, system_ram, crash_size, crash_base, +					"crashkernel="); +} + +int __init parse_crashkernel_low(char *cmdline, +			     unsigned long long system_ram, +			     unsigned long long *crash_size, +			     unsigned long long *crash_base) +{ +	return __parse_crashkernel(cmdline, system_ram, crash_size, crash_base, +					"crashkernel_low="); +}  static void update_vmcoreinfo_note(void)  {  |