aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq/migration.c
diff options
context:
space:
mode:
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;