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>
This commit is contained in:
parent
2f6dafc5fc
commit
1279b7f116
1 changed files with 12 additions and 1 deletions
|
@ -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)
|
||||||
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 */
|
||||||
|
|
Loading…
Add table
Reference in a new issue