[PATCH] Allow early_param and identical __setup to exist
We currently assume that boot parameters which are handled by early_param() will not overlap boot parameters handled by __setup: if they do, behaviour is dependent on link order, usually meaning __setup will not get called. ACPI wants to use early_param("pci"), and pci uses __setup("pci="), so we modify the core to let them coexist: "pci=noacpi" will now get passed to both. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Andi Kleen <ak@suse.de>
This commit is contained in:
parent
9ca33eb698
commit
33df0d19ea
12
init/main.c
12
init/main.c
|
@ -162,16 +162,19 @@ extern struct obs_kernel_param __setup_start[], __setup_end[];
|
||||||
static int __init obsolete_checksetup(char *line)
|
static int __init obsolete_checksetup(char *line)
|
||||||
{
|
{
|
||||||
struct obs_kernel_param *p;
|
struct obs_kernel_param *p;
|
||||||
|
int had_early_param = 0;
|
||||||
|
|
||||||
p = __setup_start;
|
p = __setup_start;
|
||||||
do {
|
do {
|
||||||
int n = strlen(p->str);
|
int n = strlen(p->str);
|
||||||
if (!strncmp(line, p->str, n)) {
|
if (!strncmp(line, p->str, n)) {
|
||||||
if (p->early) {
|
if (p->early) {
|
||||||
/* Already done in parse_early_param? (Needs
|
/* Already done in parse_early_param?
|
||||||
* exact match on param part) */
|
* (Needs exact match on param part).
|
||||||
|
* Keep iterating, as we can have early
|
||||||
|
* params and __setups of same names 8( */
|
||||||
if (line[n] == '\0' || line[n] == '=')
|
if (line[n] == '\0' || line[n] == '=')
|
||||||
return 1;
|
had_early_param = 1;
|
||||||
} else if (!p->setup_func) {
|
} else if (!p->setup_func) {
|
||||||
printk(KERN_WARNING "Parameter %s is obsolete,"
|
printk(KERN_WARNING "Parameter %s is obsolete,"
|
||||||
" ignored\n", p->str);
|
" ignored\n", p->str);
|
||||||
|
@ -181,7 +184,8 @@ static int __init obsolete_checksetup(char *line)
|
||||||
}
|
}
|
||||||
p++;
|
p++;
|
||||||
} while (p < __setup_end);
|
} while (p < __setup_end);
|
||||||
return 0;
|
|
||||||
|
return had_early_param;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue