Commit 97179fd46da7ddedd18e95388130ed3e06c5a0c7

Authored by David Daney
Committed by Linus Torvalds
1 parent 1267a8df20

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

... ... @@ -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);
... ... @@ -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