aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2009-08-31 02:15:33 -0400
committerPaul Mundt <lethal@linux-sh.org>2009-08-31 02:15:33 -0400
commit1279b7f1168ad6a2606191090f8a96eba64766a4 (patch)
treedc2a8ab17c70ab8704d5a36d9c3ec1e7c4e8e9e7
parent2f6dafc5fcbf3fddce345c47da1f277a156fe22a (diff)
sh: Fix up simplified multi-evt handling under sparseirq.
This fixes up the simplified multi-evt handling when sparseirq support is enabled. While vectors are redirected through the single unique masking source, each one of the redirected vectors still requires its own backing irq_desc, which needs to be manually allocated in the sparseirq case. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
-rw-r--r--drivers/sh/intc.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/sh/intc.c b/drivers/sh/intc.c
index a9174ec72853..559b5fe9dc0f 100644
--- a/drivers/sh/intc.c
+++ b/drivers/sh/intc.c
@@ -749,7 +749,7 @@ void __init register_intc_controller(struct intc_desc *desc)
749 749
750 irq_desc = irq_to_desc_alloc_node(irq, numa_node_id()); 750 irq_desc = irq_to_desc_alloc_node(irq, numa_node_id());
751 if (unlikely(!irq_desc)) { 751 if (unlikely(!irq_desc)) {
752 printk(KERN_INFO "can not get irq_desc for %d\n", irq); 752 pr_info("can't get irq_desc for %d\n", irq);
753 continue; 753 continue;
754 } 754 }
755 755
@@ -762,6 +762,17 @@ void __init register_intc_controller(struct intc_desc *desc)
762 if (vect->enum_id != vect2->enum_id) 762 if (vect->enum_id != vect2->enum_id)
763 continue; 763 continue;
764 764
765 /*
766 * In the case of multi-evt handling and sparse
767 * IRQ support, each vector still needs to have
768 * its own backing irq_desc.
769 */
770 irq_desc = irq_to_desc_alloc_node(irq2, numa_node_id());
771 if (unlikely(!irq_desc)) {
772 pr_info("can't get irq_desc for %d\n", irq2);
773 continue;
774 }
775
765 vect2->enum_id = 0; 776 vect2->enum_id = 0;
766 777
767 /* redirect this interrupts to the first one */ 778 /* redirect this interrupts to the first one */