diff options
| -rw-r--r-- | kernel/irq/handle.c | 16 | ||||
| -rw-r--r-- | kernel/irq/manage.c | 8 |
2 files changed, 16 insertions, 8 deletions
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 618a64f1915a..291f03664552 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
| @@ -18,14 +18,6 @@ | |||
| 18 | #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS) | 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 |
