summaryrefslogtreecommitdiffstats
path: root/kernel/irq/irqdesc.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/irq/irqdesc.c')
-rw-r--r--kernel/irq/irqdesc.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c
index 82afb7ed369f..f2edcf85780d 100644
--- a/kernel/irq/irqdesc.c
+++ b/kernel/irq/irqdesc.c
@@ -27,7 +27,7 @@ static struct lock_class_key irq_desc_lock_class;
27#if defined(CONFIG_SMP) 27#if defined(CONFIG_SMP)
28static int __init irq_affinity_setup(char *str) 28static int __init irq_affinity_setup(char *str)
29{ 29{
30 zalloc_cpumask_var(&irq_default_affinity, GFP_NOWAIT); 30 alloc_bootmem_cpumask_var(&irq_default_affinity);
31 cpulist_parse(str, irq_default_affinity); 31 cpulist_parse(str, irq_default_affinity);
32 /* 32 /*
33 * Set at least the boot cpu. We don't want to end up with 33 * Set at least the boot cpu. We don't want to end up with
@@ -40,10 +40,8 @@ __setup("irqaffinity=", irq_affinity_setup);
40 40
41static void __init init_irq_default_affinity(void) 41static void __init init_irq_default_affinity(void)
42{ 42{
43#ifdef CONFIG_CPUMASK_OFFSTACK 43 if (!cpumask_available(irq_default_affinity))
44 if (!irq_default_affinity)
45 zalloc_cpumask_var(&irq_default_affinity, GFP_NOWAIT); 44 zalloc_cpumask_var(&irq_default_affinity, GFP_NOWAIT);
46#endif
47 if (cpumask_empty(irq_default_affinity)) 45 if (cpumask_empty(irq_default_affinity))
48 cpumask_setall(irq_default_affinity); 46 cpumask_setall(irq_default_affinity);
49} 47}
@@ -448,7 +446,7 @@ static int alloc_descs(unsigned int start, unsigned int cnt, int node,
448 } 446 }
449 } 447 }
450 448
451 flags = affinity ? IRQD_AFFINITY_MANAGED : 0; 449 flags = affinity ? IRQD_AFFINITY_MANAGED | IRQD_MANAGED_SHUTDOWN : 0;
452 mask = NULL; 450 mask = NULL;
453 451
454 for (i = 0; i < cnt; i++) { 452 for (i = 0; i < cnt; i++) {
@@ -462,6 +460,7 @@ static int alloc_descs(unsigned int start, unsigned int cnt, int node,
462 goto err; 460 goto err;
463 irq_insert_desc(start + i, desc); 461 irq_insert_desc(start + i, desc);
464 irq_sysfs_add(start + i, desc); 462 irq_sysfs_add(start + i, desc);
463 irq_add_debugfs_entry(start + i, desc);
465 } 464 }
466 bitmap_set(allocated_irqs, start, cnt); 465 bitmap_set(allocated_irqs, start, cnt);
467 return start; 466 return start;