diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2007-02-16 01:27:24 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-16 08:13:56 -0800 |
commit | 950f4427c2ddc921164088a20f01304cf231437c (patch) | |
tree | 8fd3fb1ad045a47dbd2c6ac238c6ff1c1c5aa6c6 /kernel/irq | |
parent | b463fc60730bea6cdd73fec6edc6ec4658d47d37 (diff) | |
download | lwn-950f4427c2ddc921164088a20f01304cf231437c.tar.gz lwn-950f4427c2ddc921164088a20f01304cf231437c.zip |
[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.c | 4 | ||||
-rw-r--r-- | kernel/irq/proc.c | 2 |
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) if (new->flags & IRQF_PERCPU) desc->status |= IRQ_PER_CPU; #endif + /* Exclude IRQ from balancing */ + if (new->flags & IRQF_NOBALANCING) + desc->status |= IRQ_NO_BALANCING; + if (!shared) { irq_chip_set_defaults(desc->chip); 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, cpumask_t new_value, tmp; if (!irq_desc[irq].chip->set_affinity || no_irq_affinity || - CHECK_IRQ_PER_CPU(irq_desc[irq].status)) + irq_balancing_disabled(irq)) return -EIO; err = cpumask_parse_user(buffer, count, new_value); |