aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq/numa_migrate.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/irq/numa_migrate.c')
-rw-r--r--kernel/irq/numa_migrate.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/kernel/irq/numa_migrate.c b/kernel/irq/numa_migrate.c
index ecf765c6a77a..f001a4ea6414 100644
--- a/kernel/irq/numa_migrate.c
+++ b/kernel/irq/numa_migrate.c
@@ -46,6 +46,7 @@ static void init_copy_one_irq_desc(int irq, struct irq_desc *old_desc,
46 desc->cpu = cpu; 46 desc->cpu = cpu;
47 lockdep_set_class(&desc->lock, &irq_desc_lock_class); 47 lockdep_set_class(&desc->lock, &irq_desc_lock_class);
48 init_copy_kstat_irqs(old_desc, desc, cpu, nr_cpu_ids); 48 init_copy_kstat_irqs(old_desc, desc, cpu, nr_cpu_ids);
49 init_copy_desc_masks(old_desc, desc);
49 arch_init_copy_chip_data(old_desc, desc, cpu); 50 arch_init_copy_chip_data(old_desc, desc, cpu);
50} 51}
51 52
@@ -76,11 +77,20 @@ static struct irq_desc *__real_move_irq_desc(struct irq_desc *old_desc,
76 node = cpu_to_node(cpu); 77 node = cpu_to_node(cpu);
77 desc = kzalloc_node(sizeof(*desc), GFP_ATOMIC, node); 78 desc = kzalloc_node(sizeof(*desc), GFP_ATOMIC, node);
78 if (!desc) { 79 if (!desc) {
79 printk(KERN_ERR "irq %d: can not get new irq_desc for migration.\n", irq); 80 printk(KERN_ERR "irq %d: can not get new irq_desc "
81 "for migration.\n", irq);
80 /* still use old one */ 82 /* still use old one */
81 desc = old_desc; 83 desc = old_desc;
82 goto out_unlock; 84 goto out_unlock;
83 } 85 }
86 if (!init_alloc_desc_masks(desc, node, false)) {
87 printk(KERN_ERR "irq %d: can not get new irq_desc cpumask "
88 "for migration.\n", irq);
89 /* still use old one */
90 kfree(desc);
91 desc = old_desc;
92 goto out_unlock;
93 }
84 init_copy_one_irq_desc(irq, old_desc, desc, cpu); 94 init_copy_one_irq_desc(irq, old_desc, desc, cpu);
85 95
86 irq_desc_ptrs[irq] = desc; 96 irq_desc_ptrs[irq] = desc;