Skip to content

Commit

Permalink
sh: Fix up simplified multi-evt handling under sparseirq.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Paul Mundt committed Aug 31, 2009
1 parent 2f6dafc commit 1279b7f
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion drivers/sh/intc.c
Original file line number Diff line number Diff line change
Expand Up @@ -749,7 +749,7 @@ void __init register_intc_controller(struct intc_desc *desc)

irq_desc = irq_to_desc_alloc_node(irq, numa_node_id());
if (unlikely(!irq_desc)) {
printk(KERN_INFO "can not get irq_desc for %d\n", irq);
pr_info("can't get irq_desc for %d\n", irq);
continue;
}

Expand All @@ -762,6 +762,17 @@ void __init register_intc_controller(struct intc_desc *desc)
if (vect->enum_id != vect2->enum_id)
continue;

/*
* In the case of multi-evt handling and sparse
* IRQ support, each vector still needs to have
* its own backing irq_desc.
*/
irq_desc = irq_to_desc_alloc_node(irq2, numa_node_id());
if (unlikely(!irq_desc)) {
pr_info("can't get irq_desc for %d\n", irq2);
continue;
}

vect2->enum_id = 0;

/* redirect this interrupts to the first one */
Expand Down

0 comments on commit 1279b7f

Please sign in to comment.