diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2011-03-23 17:09:04 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2011-03-25 13:45:18 -0400 |
commit | 930cd54b3bd78e52991a89b39b5ef58355ad2b6d (patch) | |
tree | 48699521917d84863846f3e7638c4178dfa9fbf5 /arch/mips/kernel | |
parent | 2a2b2212986a4072d11e521a63672e3219173437 (diff) |
MIPS: SMTC: Cleanup the hook mess and use irq_data
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
To: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/2194/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel')
-rw-r--r-- | arch/mips/kernel/irq.c | 6 | ||||
-rw-r--r-- | arch/mips/kernel/smtc.c | 12 |
2 files changed, 8 insertions, 10 deletions
diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c index 4f93db58a79e..779b78799ad2 100644 --- a/arch/mips/kernel/irq.c +++ b/arch/mips/kernel/irq.c | |||
@@ -183,8 +183,8 @@ void __irq_entry do_IRQ(unsigned int irq) | |||
183 | { | 183 | { |
184 | irq_enter(); | 184 | irq_enter(); |
185 | check_stack_overflow(); | 185 | check_stack_overflow(); |
186 | __DO_IRQ_SMTC_HOOK(irq); | 186 | if (!smtc_handle_on_other_cpu(irq)) |
187 | generic_handle_irq(irq); | 187 | generic_handle_irq(irq); |
188 | irq_exit(); | 188 | irq_exit(); |
189 | } | 189 | } |
190 | 190 | ||
@@ -197,7 +197,7 @@ void __irq_entry do_IRQ(unsigned int irq) | |||
197 | void __irq_entry do_IRQ_no_affinity(unsigned int irq) | 197 | void __irq_entry do_IRQ_no_affinity(unsigned int irq) |
198 | { | 198 | { |
199 | irq_enter(); | 199 | irq_enter(); |
200 | __NO_AFFINITY_IRQ_SMTC_HOOK(irq); | 200 | smtc_im_backstop(irq); |
201 | generic_handle_irq(irq); | 201 | generic_handle_irq(irq); |
202 | irq_exit(); | 202 | irq_exit(); |
203 | } | 203 | } |
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c index 14c64235a24b..f7e2c7807d7b 100644 --- a/arch/mips/kernel/smtc.c +++ b/arch/mips/kernel/smtc.c | |||
@@ -677,9 +677,9 @@ void smtc_set_irq_affinity(unsigned int irq, cpumask_t affinity) | |||
677 | */ | 677 | */ |
678 | } | 678 | } |
679 | 679 | ||
680 | void smtc_forward_irq(unsigned int irq) | 680 | void smtc_forward_irq(struct irq_data *d) |
681 | { | 681 | { |
682 | struct irq_data *d = irq_get_irq_data(irq); | 682 | unsigned int irq = d->irq; |
683 | int target; | 683 | int target; |
684 | 684 | ||
685 | /* | 685 | /* |
@@ -708,12 +708,10 @@ void smtc_forward_irq(unsigned int irq) | |||
708 | */ | 708 | */ |
709 | 709 | ||
710 | /* If no one is eligible, service locally */ | 710 | /* If no one is eligible, service locally */ |
711 | if (target >= NR_CPUS) { | 711 | if (target >= NR_CPUS) |
712 | do_IRQ_no_affinity(irq); | 712 | do_IRQ_no_affinity(irq); |
713 | return; | 713 | else |
714 | } | 714 | smtc_send_ipi(target, IRQ_AFFINITY_IPI, irq); |
715 | |||
716 | smtc_send_ipi(target, IRQ_AFFINITY_IPI, irq); | ||
717 | } | 715 | } |
718 | 716 | ||
719 | #endif /* CONFIG_MIPS_MT_SMTC_IRQAFF */ | 717 | #endif /* CONFIG_MIPS_MT_SMTC_IRQAFF */ |