Commit 1279b7f1 authored by Paul Mundt's avatar Paul Mundt

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: default avatarPaul Mundt <lethal@linux-sh.org>
parent 2f6dafc5
...@@ -749,7 +749,7 @@ void __init register_intc_controller(struct intc_desc *desc) ...@@ -749,7 +749,7 @@ void __init register_intc_controller(struct intc_desc *desc)
irq_desc = irq_to_desc_alloc_node(irq, numa_node_id()); irq_desc = irq_to_desc_alloc_node(irq, numa_node_id());
if (unlikely(!irq_desc)) { 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; continue;
} }
...@@ -762,6 +762,17 @@ void __init register_intc_controller(struct intc_desc *desc) ...@@ -762,6 +762,17 @@ void __init register_intc_controller(struct intc_desc *desc)
if (vect->enum_id != vect2->enum_id) if (vect->enum_id != vect2->enum_id)
continue; 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; vect2->enum_id = 0;
/* redirect this interrupts to the first one */ /* redirect this interrupts to the first one */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment