diff options
author | Ard van Breemen <ard@telegraafnet.nl> | 2007-01-05 19:36:20 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2007-01-06 02:55:21 -0500 |
commit | a416aba637dcb4127595c02a59041cd278422f7e (patch) | |
tree | e99c948c07e42e6e387bc84260e456e55a0fbd60 | |
parent | c4a68306b9c0939b3facdad2cc5e34d660ff463a (diff) |
[PATCH] kernelparams: detect if and which parameter parsing enabled irq's
The parsing of some kernel parameters seem to enable irq's at a stage that
irq's are not supposed to be enabled (Particularly the ide kernel parameters).
Having irq's enabled before the irq controller is initialized might lead to a
kernel panic. This patch only detects this behaviour and warns about wich
parameter caused it.
[akpm@osdl.org: cleanups]
Signed-off-by: Ard van Breemen <ard@telegraafnet.nl>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | kernel/params.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/params.c b/kernel/params.c index f406655d6653..718945da8f58 100644 --- a/kernel/params.c +++ b/kernel/params.c | |||
@@ -143,9 +143,15 @@ int parse_args(const char *name, | |||
143 | 143 | ||
144 | while (*args) { | 144 | while (*args) { |
145 | int ret; | 145 | int ret; |
146 | int irq_was_disabled; | ||
146 | 147 | ||
147 | args = next_arg(args, ¶m, &val); | 148 | args = next_arg(args, ¶m, &val); |
149 | irq_was_disabled = irqs_disabled(); | ||
148 | ret = parse_one(param, val, params, num, unknown); | 150 | ret = parse_one(param, val, params, num, unknown); |
151 | if (irq_was_disabled && !irqs_disabled()) { | ||
152 | printk(KERN_WARNING "parse_args(): option '%s' enabled " | ||
153 | "irq's!\n", param); | ||
154 | } | ||
149 | switch (ret) { | 155 | switch (ret) { |
150 | case -ENOENT: | 156 | case -ENOENT: |
151 | printk(KERN_ERR "%s: Unknown parameter `%s'\n", | 157 | printk(KERN_ERR "%s: Unknown parameter `%s'\n", |