diff options
-rw-r--r-- | include/linux/irq.h | 3 | ||||
-rw-r--r-- | kernel/irq/migration.c | 6 |
2 files changed, 4 insertions, 5 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index 48d3cb3b6a47..3eab46f590a9 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -59,6 +59,7 @@ | |||
59 | #define IRQ_NOAUTOEN 0x08000000 /* IRQ will not be enabled on request irq */ | 59 | #define IRQ_NOAUTOEN 0x08000000 /* IRQ will not be enabled on request irq */ |
60 | #define IRQ_DELAYED_DISABLE 0x10000000 /* IRQ disable (masking) happens delayed. */ | 60 | #define IRQ_DELAYED_DISABLE 0x10000000 /* IRQ disable (masking) happens delayed. */ |
61 | #define IRQ_WAKEUP 0x20000000 /* IRQ triggers system wakeup */ | 61 | #define IRQ_WAKEUP 0x20000000 /* IRQ triggers system wakeup */ |
62 | #define IRQ_MOVE_PENDING 0x40000000 /* need to re-target IRQ destination */ | ||
62 | 63 | ||
63 | struct proc_dir_entry; | 64 | struct proc_dir_entry; |
64 | 65 | ||
@@ -132,7 +133,6 @@ struct irq_chip { | |||
132 | * @affinity: IRQ affinity on SMP | 133 | * @affinity: IRQ affinity on SMP |
133 | * @cpu: cpu index useful for balancing | 134 | * @cpu: cpu index useful for balancing |
134 | * @pending_mask: pending rebalanced interrupts | 135 | * @pending_mask: pending rebalanced interrupts |
135 | * @move_irq: need to re-target IRQ destination | ||
136 | * @dir: /proc/irq/ procfs entry | 136 | * @dir: /proc/irq/ procfs entry |
137 | * @affinity_entry: /proc/irq/smp_affinity procfs entry on SMP | 137 | * @affinity_entry: /proc/irq/smp_affinity procfs entry on SMP |
138 | * | 138 | * |
@@ -159,7 +159,6 @@ struct irq_desc { | |||
159 | #endif | 159 | #endif |
160 | #if defined(CONFIG_GENERIC_PENDING_IRQ) || defined(CONFIG_IRQBALANCE) | 160 | #if defined(CONFIG_GENERIC_PENDING_IRQ) || defined(CONFIG_IRQBALANCE) |
161 | cpumask_t pending_mask; | 161 | cpumask_t pending_mask; |
162 | unsigned int move_irq; /* need to re-target IRQ dest */ | ||
163 | #endif | 162 | #endif |
164 | #ifdef CONFIG_PROC_FS | 163 | #ifdef CONFIG_PROC_FS |
165 | struct proc_dir_entry *dir; | 164 | struct proc_dir_entry *dir; |
diff --git a/kernel/irq/migration.c b/kernel/irq/migration.c index a57ebe9fa6f6..9b234df810d0 100644 --- a/kernel/irq/migration.c +++ b/kernel/irq/migration.c | |||
@@ -7,7 +7,7 @@ void set_pending_irq(unsigned int irq, cpumask_t mask) | |||
7 | unsigned long flags; | 7 | unsigned long flags; |
8 | 8 | ||
9 | spin_lock_irqsave(&desc->lock, flags); | 9 | spin_lock_irqsave(&desc->lock, flags); |
10 | desc->move_irq = 1; | 10 | desc->status |= IRQ_MOVE_PENDING; |
11 | irq_desc[irq].pending_mask = mask; | 11 | irq_desc[irq].pending_mask = mask; |
12 | spin_unlock_irqrestore(&desc->lock, flags); | 12 | spin_unlock_irqrestore(&desc->lock, flags); |
13 | } | 13 | } |
@@ -17,7 +17,7 @@ void move_native_irq(int irq) | |||
17 | struct irq_desc *desc = irq_desc + irq; | 17 | struct irq_desc *desc = irq_desc + irq; |
18 | cpumask_t tmp; | 18 | cpumask_t tmp; |
19 | 19 | ||
20 | if (likely(!desc->move_irq)) | 20 | if (likely(!(desc->status & IRQ_MOVE_PENDING))) |
21 | return; | 21 | return; |
22 | 22 | ||
23 | /* | 23 | /* |
@@ -28,7 +28,7 @@ void move_native_irq(int irq) | |||
28 | return; | 28 | return; |
29 | } | 29 | } |
30 | 30 | ||
31 | desc->move_irq = 0; | 31 | desc->status &= ~IRQ_MOVE_PENDING; |
32 | 32 | ||
33 | if (unlikely(cpus_empty(irq_desc[irq].pending_mask))) | 33 | if (unlikely(cpus_empty(irq_desc[irq].pending_mask))) |
34 | return; | 34 | return; |