aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorAhmed S. Darwish <darwish.07@gmail.com>2007-05-08 03:27:55 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-08 14:15:06 -0400
commitf75d222b836f7febfab0954c7612b23059d748cb (patch)
tree229ff362a000daca8aa4c45c3c7216efdb4bfb94 /kernel
parent3367b994fe4f131ab1240600682a1981de7cad0c (diff)
IRQ: check for PERCPU flag only when adding first irqaction
An irqaction structure won't be added to an IRQ descriptor irqaction list if it doesn't agree with other irqactions on the IRQF_PERCPU flag. Don't check for this flag to change IRQ descriptor `status' for every irqaction added to the list, Doing the check only for the first irqaction added is enough. Signed-off-by: Ahmed S. Darwish <darwish.07@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/irq/manage.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 5597c157442a..203a518b6f14 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -317,10 +317,7 @@ int setup_irq(unsigned int irq, struct irqaction *new)
317 } 317 }
318 318
319 *p = new; 319 *p = new;
320#if defined(CONFIG_IRQ_PER_CPU) 320
321 if (new->flags & IRQF_PERCPU)
322 desc->status |= IRQ_PER_CPU;
323#endif
324 /* Exclude IRQ from balancing */ 321 /* Exclude IRQ from balancing */
325 if (new->flags & IRQF_NOBALANCING) 322 if (new->flags & IRQF_NOBALANCING)
326 desc->status |= IRQ_NO_BALANCING; 323 desc->status |= IRQ_NO_BALANCING;
@@ -328,6 +325,11 @@ int setup_irq(unsigned int irq, struct irqaction *new)
328 if (!shared) { 325 if (!shared) {
329 irq_chip_set_defaults(desc->chip); 326 irq_chip_set_defaults(desc->chip);
330 327
328#if defined(CONFIG_IRQ_PER_CPU)
329 if (new->flags & IRQF_PERCPU)
330 desc->status |= IRQ_PER_CPU;
331#endif
332
331 /* Setup the type (level, edge polarity) if configured: */ 333 /* Setup the type (level, edge polarity) if configured: */
332 if (new->flags & IRQF_TRIGGER_MASK) { 334 if (new->flags & IRQF_TRIGGER_MASK) {
333 if (desc->chip && desc->chip->set_type) 335 if (desc->chip && desc->chip->set_type)