diff options
Diffstat (limited to 'kernel/irq')
-rw-r--r-- | kernel/irq/manage.c | 2 | ||||
-rw-r--r-- | kernel/irq/proc.c | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 81c49a4d679e..97d5559997d2 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -366,6 +366,8 @@ int request_irq(unsigned int irq, | |||
366 | action->next = NULL; | 366 | action->next = NULL; |
367 | action->dev_id = dev_id; | 367 | action->dev_id = dev_id; |
368 | 368 | ||
369 | select_smp_affinity(irq); | ||
370 | |||
369 | retval = setup_irq(irq, action); | 371 | retval = setup_irq(irq, action); |
370 | if (retval) | 372 | if (retval) |
371 | kfree(action); | 373 | kfree(action); |
diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c index f26e534c6585..8a64a4844cde 100644 --- a/kernel/irq/proc.c +++ b/kernel/irq/proc.c | |||
@@ -68,7 +68,9 @@ static int irq_affinity_write_proc(struct file *file, const char __user *buffer, | |||
68 | */ | 68 | */ |
69 | cpus_and(tmp, new_value, cpu_online_map); | 69 | cpus_and(tmp, new_value, cpu_online_map); |
70 | if (cpus_empty(tmp)) | 70 | if (cpus_empty(tmp)) |
71 | return -EINVAL; | 71 | /* Special case for empty set - allow the architecture |
72 | code to set default SMP affinity. */ | ||
73 | return select_smp_affinity(irq) ? -EINVAL : full_count; | ||
72 | 74 | ||
73 | proc_set_irq_affinity(irq, new_value); | 75 | proc_set_irq_affinity(irq, new_value); |
74 | 76 | ||