diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2007-02-16 04:27:24 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-16 11:13:56 -0500 |
commit | 950f4427c2ddc921164088a20f01304cf231437c (patch) | |
tree | 8fd3fb1ad045a47dbd2c6ac238c6ff1c1c5aa6c6 /kernel/irq | |
parent | b463fc60730bea6cdd73fec6edc6ec4658d47d37 (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.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) | |||
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); |