aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq/migration.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-12-31 02:31:57 -0500
committerIngo Molnar <mingo@elte.hu>2008-12-31 02:31:57 -0500
commita9de18eb761f7c1c860964b2e5addc1a35c7e861 (patch)
tree886e75fdfd09690cd262ca69cb7f5d1d42b48602 /kernel/irq/migration.c
parentb2aaf8f74cdc84a9182f6cabf198b7763bcb9d40 (diff)
parent6a94cb73064c952255336cc57731904174b2c58f (diff)
Merge branch 'linus' into stackprotector
Conflicts: arch/x86/include/asm/pda.h kernel/fork.c
Diffstat (limited to 'kernel/irq/migration.c')
-rw-r--r--kernel/irq/migration.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/kernel/irq/migration.c b/kernel/irq/migration.c
index 77b7acc875c5..9db681d95814 100644
--- a/kernel/irq/migration.c
+++ b/kernel/irq/migration.c
@@ -1,20 +1,9 @@
1 1
2#include <linux/irq.h> 2#include <linux/irq.h>
3 3
4void set_pending_irq(unsigned int irq, cpumask_t mask)
5{
6 struct irq_desc *desc = irq_desc + irq;
7 unsigned long flags;
8
9 spin_lock_irqsave(&desc->lock, flags);
10 desc->status |= IRQ_MOVE_PENDING;
11 irq_desc[irq].pending_mask = mask;
12 spin_unlock_irqrestore(&desc->lock, flags);
13}
14
15void move_masked_irq(int irq) 4void move_masked_irq(int irq)
16{ 5{
17 struct irq_desc *desc = irq_desc + irq; 6 struct irq_desc *desc = irq_to_desc(irq);
18 cpumask_t tmp; 7 cpumask_t tmp;
19 8
20 if (likely(!(desc->status & IRQ_MOVE_PENDING))) 9 if (likely(!(desc->status & IRQ_MOVE_PENDING)))
@@ -30,7 +19,7 @@ void move_masked_irq(int irq)
30 19
31 desc->status &= ~IRQ_MOVE_PENDING; 20 desc->status &= ~IRQ_MOVE_PENDING;
32 21
33 if (unlikely(cpus_empty(irq_desc[irq].pending_mask))) 22 if (unlikely(cpus_empty(desc->pending_mask)))
34 return; 23 return;
35 24
36 if (!desc->chip->set_affinity) 25 if (!desc->chip->set_affinity)
@@ -38,7 +27,7 @@ void move_masked_irq(int irq)
38 27
39 assert_spin_locked(&desc->lock); 28 assert_spin_locked(&desc->lock);
40 29
41 cpus_and(tmp, irq_desc[irq].pending_mask, cpu_online_map); 30 cpus_and(tmp, desc->pending_mask, cpu_online_map);
42 31
43 /* 32 /*
44 * If there was a valid mask to work with, please 33 * If there was a valid mask to work with, please
@@ -55,12 +44,12 @@ void move_masked_irq(int irq)
55 if (likely(!cpus_empty(tmp))) { 44 if (likely(!cpus_empty(tmp))) {
56 desc->chip->set_affinity(irq,tmp); 45 desc->chip->set_affinity(irq,tmp);
57 } 46 }
58 cpus_clear(irq_desc[irq].pending_mask); 47 cpus_clear(desc->pending_mask);
59} 48}
60 49
61void move_native_irq(int irq) 50void move_native_irq(int irq)
62{ 51{
63 struct irq_desc *desc = irq_desc + irq; 52 struct irq_desc *desc = irq_to_desc(irq);
64 53
65 if (likely(!(desc->status & IRQ_MOVE_PENDING))) 54 if (likely(!(desc->status & IRQ_MOVE_PENDING)))
66 return; 55 return;