From: Paul Mundt Date: Mon, 31 Aug 2009 06:15:33 +0000 (+0900) Subject: sh: Fix up simplified multi-evt handling under sparseirq. X-Git-Tag: v2.6.32-rc1~640^2~35^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1279b7f1168ad6a2606191090f8a96eba64766a4;p=platform%2Fkernel%2Flinux-3.10.git 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 --- diff --git a/drivers/sh/intc.c b/drivers/sh/intc.c index a9174ec..559b5fe 100644 --- a/drivers/sh/intc.c +++ b/drivers/sh/intc.c @@ -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; } @@ -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 */