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>

authored by David Daney and committed by Linus Torvalds 97179fd4 1267a8df

+16 -8
+16
kernel/irq/handle.c
··· 39 ack_bad_irq(irq); 40 } 41 42 /* 43 * Linux has a controller-independent interrupt architecture. 44 * Every controller has a 'controller-template', that is used ··· 146 int legacy_count; 147 int i; 148 149 desc = irq_desc_legacy; 150 legacy_count = ARRAY_SIZE(irq_desc_legacy); 151 ··· 232 struct irq_desc *desc; 233 int count; 234 int i; 235 236 desc = irq_desc; 237 count = ARRAY_SIZE(irq_desc);
··· 39 ack_bad_irq(irq); 40 } 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 + 54 /* 55 * Linux has a controller-independent interrupt architecture. 56 * Every controller has a 'controller-template', that is used ··· 134 int legacy_count; 135 int i; 136 137 + init_irq_default_affinity(); 138 + 139 desc = irq_desc_legacy; 140 legacy_count = ARRAY_SIZE(irq_desc_legacy); 141 ··· 218 struct irq_desc *desc; 219 int count; 220 int i; 221 + 222 + init_irq_default_affinity(); 223 224 desc = irq_desc; 225 count = ARRAY_SIZE(irq_desc);
-8
kernel/irq/manage.c
··· 18 #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS) 19 cpumask_var_t irq_default_affinity; 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 /** 30 * synchronize_irq - wait for pending IRQ handlers (on other CPUs) 31 * @irq: interrupt number to wait for
··· 18 #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS) 19 cpumask_var_t irq_default_affinity; 20 21 /** 22 * synchronize_irq - wait for pending IRQ handlers (on other CPUs) 23 * @irq: interrupt number to wait for