aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64
diff options
context:
space:
mode:
authorTony Luck <tony.luck@intel.com>2010-09-27 16:58:14 -0400
committerTony Luck <tony.luck@intel.com>2010-09-27 16:58:14 -0400
commit5d4bff94f9e0877a85b4dc573eb7a3f1d97c13ae (patch)
tree195ed252ba4da43791a637437efd0258b1e5cfc0 /arch/ia64
parent32163f4b2cef28a5aab8b226ffecfc6379a53786 (diff)
[IA64] Stop using the deprecated __do_IRQ() code path
Thomas Gleixner <tglx@linutronix.de> wrote: >__do_IRQ() has been deprecated after a two years migration phase in >commit 0e57aa1. Since then another 18 months have gone by ... Mostly trivial stuff for this. The only tricky part was realizing that the new handler_*_irq() paths do not use desc->chip->end(irq). Not a problem for the edge case as the ia64 iosapic routine for that was nop(). But the "level" case handled interrupt migration there. Just use a slightly modified version of the "end" routine as "unmask" for the level triggered case. Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64')
-rw-r--r--arch/ia64/Kconfig6
-rw-r--r--arch/ia64/kernel/iosapic.c12
-rw-r--r--arch/ia64/kernel/irq_ia64.c1
3 files changed, 13 insertions, 6 deletions
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index ba22849ee3ec..b0f4ae9b7c84 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -683,8 +683,10 @@ source "lib/Kconfig"
683# Use the generic interrupt handling code in kernel/irq/: 683# Use the generic interrupt handling code in kernel/irq/:
684# 684#
685config GENERIC_HARDIRQS 685config GENERIC_HARDIRQS
686 bool 686 def_bool y
687 default y 687
688config GENERIC_HARDIRQS_NO__DO_IRQ
689 def_bool y
688 690
689config GENERIC_IRQ_PROBE 691config GENERIC_IRQ_PROBE
690 bool 692 bool
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c
index 7ded76658d2d..dc6913dce3ff 100644
--- a/arch/ia64/kernel/iosapic.c
+++ b/arch/ia64/kernel/iosapic.c
@@ -394,7 +394,7 @@ iosapic_startup_level_irq (unsigned int irq)
394} 394}
395 395
396static void 396static void
397iosapic_end_level_irq (unsigned int irq) 397iosapic_unmask_level_irq (unsigned int irq)
398{ 398{
399 ia64_vector vec = irq_to_vector(irq); 399 ia64_vector vec = irq_to_vector(irq);
400 struct iosapic_rte_info *rte; 400 struct iosapic_rte_info *rte;
@@ -404,7 +404,8 @@ iosapic_end_level_irq (unsigned int irq)
404 if (unlikely(irq_desc[irq].status & IRQ_MOVE_PENDING)) { 404 if (unlikely(irq_desc[irq].status & IRQ_MOVE_PENDING)) {
405 do_unmask_irq = 1; 405 do_unmask_irq = 1;
406 mask_irq(irq); 406 mask_irq(irq);
407 } 407 } else
408 unmask_irq(irq);
408 409
409 list_for_each_entry(rte, &iosapic_intr_info[irq].rtes, rte_list) 410 list_for_each_entry(rte, &iosapic_intr_info[irq].rtes, rte_list)
410 iosapic_eoi(rte->iosapic->addr, vec); 411 iosapic_eoi(rte->iosapic->addr, vec);
@@ -427,9 +428,8 @@ static struct irq_chip irq_type_iosapic_level = {
427 .enable = iosapic_enable_level_irq, 428 .enable = iosapic_enable_level_irq,
428 .disable = iosapic_disable_level_irq, 429 .disable = iosapic_disable_level_irq,
429 .ack = iosapic_ack_level_irq, 430 .ack = iosapic_ack_level_irq,
430 .end = iosapic_end_level_irq,
431 .mask = mask_irq, 431 .mask = mask_irq,
432 .unmask = unmask_irq, 432 .unmask = iosapic_unmask_level_irq,
433 .set_affinity = iosapic_set_affinity 433 .set_affinity = iosapic_set_affinity
434}; 434};
435 435
@@ -658,6 +658,10 @@ register_intr (unsigned int gsi, int irq, unsigned char delivery,
658 idesc->chip->name, irq_type->name); 658 idesc->chip->name, irq_type->name);
659 idesc->chip = irq_type; 659 idesc->chip = irq_type;
660 } 660 }
661 if (trigger == IOSAPIC_EDGE)
662 __set_irq_handler_unlocked(irq, handle_edge_irq);
663 else
664 __set_irq_handler_unlocked(irq, handle_level_irq);
661 return 0; 665 return 0;
662} 666}
663 667
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c
index f14c35f9b03a..5739786aeee6 100644
--- a/arch/ia64/kernel/irq_ia64.c
+++ b/arch/ia64/kernel/irq_ia64.c
@@ -635,6 +635,7 @@ ia64_native_register_percpu_irq (ia64_vector vec, struct irqaction *action)
635 desc->chip = &irq_type_ia64_lsapic; 635 desc->chip = &irq_type_ia64_lsapic;
636 if (action) 636 if (action)
637 setup_irq(irq, action); 637 setup_irq(irq, action);
638 set_irq_handler(irq, handle_percpu_irq);
638} 639}
639 640
640void __init 641void __init