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 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 ··· 146 134 int legacy_count; 147 135 int i; 148 136 137 + init_irq_default_affinity(); 138 + 149 139 desc = irq_desc_legacy; 150 140 legacy_count = ARRAY_SIZE(irq_desc_legacy); 151 141 ··· 232 218 struct irq_desc *desc; 233 219 int count; 234 220 int i; 221 + 222 + init_irq_default_affinity(); 235 223 236 224 desc = irq_desc; 237 225 count = ARRAY_SIZE(irq_desc);
-8
kernel/irq/manage.c
··· 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