diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-02-04 08:54:56 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-02-04 08:54:56 -0500 |
| commit | bb960a1e42042e82447a5bc0941b3ab6d614bac3 (patch) | |
| tree | d2295a923fabb1b01b25bb015c4c2e42ee9df5ca /kernel/irq | |
| parent | 858770619debfb9269add63e4ba8b7c6b5538dd1 (diff) | |
| parent | 06fc732c33a7ff5e4c91bcf4a6ca86b5e335ad9a (diff) | |
Merge branch 'core/xen' into x86/urgent
Diffstat (limited to 'kernel/irq')
| -rw-r--r-- | kernel/irq/chip.c | 2 | ||||
| -rw-r--r-- | kernel/irq/handle.c | 16 | ||||
| -rw-r--r-- | kernel/irq/manage.c | 10 |
3 files changed, 19 insertions, 9 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index f63c706d25e1..7de11bd64dfe 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
| @@ -383,6 +383,7 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc) | |||
| 383 | out_unlock: | 383 | out_unlock: |
| 384 | spin_unlock(&desc->lock); | 384 | spin_unlock(&desc->lock); |
| 385 | } | 385 | } |
| 386 | EXPORT_SYMBOL_GPL(handle_level_irq); | ||
| 386 | 387 | ||
| 387 | /** | 388 | /** |
| 388 | * handle_fasteoi_irq - irq handler for transparent controllers | 389 | * handle_fasteoi_irq - irq handler for transparent controllers |
| @@ -593,6 +594,7 @@ __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained, | |||
| 593 | } | 594 | } |
| 594 | spin_unlock_irqrestore(&desc->lock, flags); | 595 | spin_unlock_irqrestore(&desc->lock, flags); |
| 595 | } | 596 | } |
| 597 | EXPORT_SYMBOL_GPL(__set_irq_handler); | ||
| 596 | 598 | ||
| 597 | void | 599 | void |
| 598 | set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, | 600 | set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, |
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c index c20db0be9173..3aba8d12f328 100644 --- a/kernel/irq/handle.c +++ b/kernel/irq/handle.c | |||
| @@ -39,6 +39,18 @@ void handle_bad_irq(unsigned int irq, struct irq_desc *desc) | |||
| 39 | ack_bad_irq(irq); | 39 | ack_bad_irq(irq); |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS) | ||
| 43 | static void __init init_irq_default_affinity(void) | ||
| 44 | { | ||
| 45 | alloc_bootmem_cpumask_var(&irq_default_affinity); | ||
| 46 | cpumask_setall(irq_default_affinity); | ||
| 47 | } | ||
| 48 | #else | ||
| 49 | static void __init init_irq_default_affinity(void) | ||
| 50 | { | ||
| 51 | } | ||
| 52 | #endif | ||
| 53 | |||
| 42 | /* | 54 | /* |
| 43 | * Linux has a controller-independent interrupt architecture. | 55 | * Linux has a controller-independent interrupt architecture. |
| 44 | * Every controller has a 'controller-template', that is used | 56 | * Every controller has a 'controller-template', that is used |
| @@ -134,6 +146,8 @@ int __init early_irq_init(void) | |||
| 134 | int legacy_count; | 146 | int legacy_count; |
| 135 | int i; | 147 | int i; |
| 136 | 148 | ||
| 149 | init_irq_default_affinity(); | ||
| 150 | |||
| 137 | desc = irq_desc_legacy; | 151 | desc = irq_desc_legacy; |
| 138 | legacy_count = ARRAY_SIZE(irq_desc_legacy); | 152 | legacy_count = ARRAY_SIZE(irq_desc_legacy); |
| 139 | 153 | ||
| @@ -219,6 +233,8 @@ int __init early_irq_init(void) | |||
| 219 | int count; | 233 | int count; |
| 220 | int i; | 234 | int i; |
| 221 | 235 | ||
| 236 | init_irq_default_affinity(); | ||
| 237 | |||
| 222 | desc = irq_desc; | 238 | desc = irq_desc; |
| 223 | count = ARRAY_SIZE(irq_desc); | 239 | count = ARRAY_SIZE(irq_desc); |
| 224 | 240 | ||
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index cd0cd8dcb345..291f03664552 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
| @@ -15,17 +15,9 @@ | |||
| 15 | 15 | ||
| 16 | #include "internals.h" | 16 | #include "internals.h" |
| 17 | 17 | ||
| 18 | #ifdef CONFIG_SMP | 18 | #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS) |
| 19 | cpumask_var_t irq_default_affinity; | 19 | cpumask_var_t irq_default_affinity; |
| 20 | 20 | ||
| 21 | static int init_irq_default_affinity(void) | ||
| 22 | { | ||
| 23 | alloc_cpumask_var(&irq_default_affinity, GFP_KERNEL); | ||
| 24 | cpumask_setall(irq_default_affinity); | ||
| 25 | return 0; | ||
| 26 | } | ||
| 27 | core_initcall(init_irq_default_affinity); | ||
| 28 | |||
| 29 | /** | 21 | /** |
| 30 | * synchronize_irq - wait for pending IRQ handlers (on other CPUs) | 22 | * synchronize_irq - wait for pending IRQ handlers (on other CPUs) |
| 31 | * @irq: interrupt number to wait for | 23 | * @irq: interrupt number to wait for |
