Commit 97179fd46da7ddedd18e95388130ed3e06c5a0c7
Committed by
Linus Torvalds
1 parent
1267a8df20
Exists in
master
and in
7 other branches
cpumask fallout: Initialize irq_default_affinity earlier
Move the initialization of irq_default_affinity to early_irq_init as core_initcall is too late. irq_default_affinity can be used in init_IRQ and potentially timer and SMP init as well. All of these happen before core_initcall. Moving the initialization to early_irq_init ensures that it is initialized before it is used. Signed-off-by: David Daney <ddaney@caviumnetworks.com> Acked-by: Mike Travis <travis@sgi.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 2 changed files with 16 additions and 8 deletions Side-by-side Diff
kernel/irq/handle.c
... | ... | @@ -39,6 +39,18 @@ |
39 | 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 | 55 | * Linux has a controller-independent interrupt architecture. |
44 | 56 | * Every controller has a 'controller-template', that is used |
... | ... | @@ -134,6 +146,8 @@ |
134 | 146 | int legacy_count; |
135 | 147 | int i; |
136 | 148 | |
149 | + init_irq_default_affinity(); | |
150 | + | |
137 | 151 | desc = irq_desc_legacy; |
138 | 152 | legacy_count = ARRAY_SIZE(irq_desc_legacy); |
139 | 153 | |
... | ... | @@ -218,6 +232,8 @@ |
218 | 232 | struct irq_desc *desc; |
219 | 233 | int count; |
220 | 234 | int i; |
235 | + | |
236 | + init_irq_default_affinity(); | |
221 | 237 | |
222 | 238 | desc = irq_desc; |
223 | 239 | count = ARRAY_SIZE(irq_desc); |
kernel/irq/manage.c
... | ... | @@ -18,14 +18,6 @@ |
18 | 18 | #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS) |
19 | 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 | 22 | * synchronize_irq - wait for pending IRQ handlers (on other CPUs) |
31 | 23 | * @irq: interrupt number to wait for |