Commit 33df0d19 authored by Rusty Russell's avatar Rusty Russell Committed by Andi Kleen

[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: default avatarRusty Russell <rusty@rustcorp.com.au>
Signed-off-by: default avatarAndi Kleen <ak@suse.de>
parent 9ca33eb6
...@@ -162,16 +162,19 @@ extern struct obs_kernel_param __setup_start[], __setup_end[]; ...@@ -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) ...@@ -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;
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment