diff options
Diffstat (limited to 'kernel/irq/irqdesc.c')
-rw-r--r-- | kernel/irq/irqdesc.c | 9 |
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) |
28 | static int __init irq_affinity_setup(char *str) | 28 | static 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 | ||
41 | static void __init init_irq_default_affinity(void) | 41 | static 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; |