irq: Do not attempt to create subdirectories if /proc/irq/<irq> failed
[safe/jmp/linux-2.6] / kernel / irq / handle.c
index 1045785..17c71bb 100644 (file)
@@ -11,6 +11,7 @@
  */
 
 #include <linux/irq.h>
+#include <linux/sched.h>
 #include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/random.h>
@@ -45,7 +46,7 @@ void handle_bad_irq(unsigned int irq, struct irq_desc *desc)
 #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS)
 static void __init init_irq_default_affinity(void)
 {
-       alloc_bootmem_cpumask_var(&irq_default_affinity);
+       alloc_cpumask_var(&irq_default_affinity, GFP_NOWAIT);
        cpumask_setall(irq_default_affinity);
 }
 #else
@@ -161,7 +162,7 @@ int __init early_irq_init(void)
 
        desc = irq_desc_legacy;
        legacy_count = ARRAY_SIZE(irq_desc_legacy);
-       node = first_online_node;
+       node = first_online_node;
 
        /* allocate irq_desc_ptrs array based on nr_irqs */
        irq_desc_ptrs = kcalloc(nr_irqs, sizeof(void *), GFP_NOWAIT);
@@ -172,6 +173,9 @@ int __init early_irq_init(void)
 
        for (i = 0; i < legacy_count; i++) {
                desc[i].irq = i;
+#ifdef CONFIG_SMP
+               desc[i].node = node;
+#endif
                desc[i].kstat_irqs = kstat_irqs_legacy + i * nr_cpu_ids;
                lockdep_set_class(&desc[i].lock, &irq_desc_lock_class);
                alloc_desc_masks(&desc[i], node, true);