aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2007-02-16 04:27:24 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-02-16 11:13:56 -0500
commit950f4427c2ddc921164088a20f01304cf231437c (patch)
tree8fd3fb1ad045a47dbd2c6ac238c6ff1c1c5aa6c6 /kernel/irq
parentb463fc60730bea6cdd73fec6edc6ec4658d47d37 (diff)
[PATCH] Add irq flag to disable balancing for an interrupt
Add a flag so we can prevent the irq balancing of an interrupt. Move the bits, so we have room for more :) Necessary for the ability to setup clocksources more flexible (e.g. use the different HPET channels per CPU) Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Cc: john stultz <johnstul@us.ibm.com> Cc: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/irq')
-rw-r--r--kernel/irq/manage.c4
-rw-r--r--kernel/irq/proc.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index acc5d9fe462b..cd790ad0ae57 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -281,6 +281,10 @@ int setup_irq(unsigned int irq, struct irqaction *new)
281 if (new->flags & IRQF_PERCPU) 281 if (new->flags & IRQF_PERCPU)
282 desc->status |= IRQ_PER_CPU; 282 desc->status |= IRQ_PER_CPU;
283#endif 283#endif
284 /* Exclude IRQ from balancing */
285 if (new->flags & IRQF_NOBALANCING)
286 desc->status |= IRQ_NO_BALANCING;
287
284 if (!shared) { 288 if (!shared) {
285 irq_chip_set_defaults(desc->chip); 289 irq_chip_set_defaults(desc->chip);
286 290
diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c
index 6d3be06e8ce6..bb44bc995d6e 100644
--- a/kernel/irq/proc.c
+++ b/kernel/irq/proc.c
@@ -55,7 +55,7 @@ static int irq_affinity_write_proc(struct file *file, const char __user *buffer,
55 cpumask_t new_value, tmp; 55 cpumask_t new_value, tmp;
56 56
57 if (!irq_desc[irq].chip->set_affinity || no_irq_affinity || 57 if (!irq_desc[irq].chip->set_affinity || no_irq_affinity ||
58 CHECK_IRQ_PER_CPU(irq_desc[irq].status)) 58 irq_balancing_disabled(irq))
59 return -EIO; 59 return -EIO;
60 60
61 err = cpumask_parse_user(buffer, count, new_value); 61 err = cpumask_parse_user(buffer, count, new_value);