Merge branch 'linus' into perfcounters/core
[cascardo/linux.git] / kernel / irq / handle.c
index 375d68c..f51eaee 100644 (file)
@@ -40,6 +40,18 @@ void handle_bad_irq(unsigned int irq, struct irq_desc *desc)
        ack_bad_irq(irq);
 }
 
+#if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS)
+static void __init init_irq_default_affinity(void)
+{
+       alloc_bootmem_cpumask_var(&irq_default_affinity);
+       cpumask_setall(irq_default_affinity);
+}
+#else
+static void __init init_irq_default_affinity(void)
+{
+}
+#endif
+
 /*
  * Linux has a controller-independent interrupt architecture.
  * Every controller has a 'controller-template', that is used
@@ -133,6 +145,8 @@ int __init early_irq_init(void)
        int legacy_count;
        int i;
 
+       init_irq_default_affinity();
+
         /* initialize nr_irqs based on nr_cpu_ids */
        arch_probe_nr_irqs();
        printk(KERN_INFO "NR_IRQS:%d nr_irqs:%d\n", NR_IRQS, nr_irqs);
@@ -229,6 +243,8 @@ int __init early_irq_init(void)
        int count;
        int i;
 
+       init_irq_default_affinity();
+
        printk(KERN_INFO "NR_IRQS:%d\n", NR_IRQS);
 
        desc = irq_desc;