Message ID | 1458224359-32665-11-git-send-email-jonathanh@nvidia.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Mar 17, 2016 at 3:19 PM, Jon Hunter <jonathanh@nvidia.com> wrote: > There are only 3 differences (not including the name) in the definitions > of the gic_chip and gic_eoimode1_chip structures. Instead of statically > defining the gic_eoimode1_chip structure, remove it and populate the > eoimode1 functions dynamically for the appropriate GIC irqchips. > > Signed-off-by: Jon Hunter <jonathanh@nvidia.com> > if (static_key_true(&supports_deactivate) && gic_nr == 0) { > - gic->chip = gic_eoimode1_chip; > + gic->chip.irq_mask = gic_eoimode1_mask_irq; > + gic->chip.irq_eoi = gic_eoimode1_eoi_irq; > + gic->chip.irq_set_vcpu_affinity = gic_irq_set_vcpu_affinity; > + gic->chip.name = kasprintf(GFP_KERNEL, "GICv2"); I think you can just = "GICv2" there. No need to kasprintf() Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, 17 Mar 2016 14:19:14 +0000 Jon Hunter <jonathanh@nvidia.com> wrote: > There are only 3 differences (not including the name) in the definitions > of the gic_chip and gic_eoimode1_chip structures. Instead of statically > defining the gic_eoimode1_chip structure, remove it and populate the > eoimode1 functions dynamically for the appropriate GIC irqchips. > > Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Linus' remark notwithstanding, Acked-by: Marc Zyngier <marc.zyngier@arm.com> M.
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c index a4a13ef35c1b..b0a781f8c450 100644 --- a/drivers/irqchip/irq-gic.c +++ b/drivers/irqchip/irq-gic.c @@ -393,20 +393,6 @@ static struct irq_chip gic_chip = { IRQCHIP_MASK_ON_SUSPEND, }; -static struct irq_chip gic_eoimode1_chip = { - .name = "GICv2", - .irq_mask = gic_eoimode1_mask_irq, - .irq_unmask = gic_unmask_irq, - .irq_eoi = gic_eoimode1_eoi_irq, - .irq_set_type = gic_set_type, - .irq_get_irqchip_state = gic_irq_get_irqchip_state, - .irq_set_irqchip_state = gic_irq_set_irqchip_state, - .irq_set_vcpu_affinity = gic_irq_set_vcpu_affinity, - .flags = IRQCHIP_SET_TYPE_MASKED | - IRQCHIP_SKIP_SET_WAKE | - IRQCHIP_MASK_ON_SUSPEND, -}; - void __init gic_cascade_irq(unsigned int gic_nr, unsigned int irq) { BUG_ON(gic_nr >= CONFIG_ARM_GIC_MAX_NR); @@ -1028,10 +1014,14 @@ static void __init __gic_init_bases(unsigned int gic_nr, int irq_start, gic = &gic_data[gic_nr]; /* Initialize irq_chip */ + gic->chip = gic_chip; + if (static_key_true(&supports_deactivate) && gic_nr == 0) { - gic->chip = gic_eoimode1_chip; + gic->chip.irq_mask = gic_eoimode1_mask_irq; + gic->chip.irq_eoi = gic_eoimode1_eoi_irq; + gic->chip.irq_set_vcpu_affinity = gic_irq_set_vcpu_affinity; + gic->chip.name = kasprintf(GFP_KERNEL, "GICv2"); } else { - gic->chip = gic_chip; gic->chip.name = kasprintf(GFP_KERNEL, "GIC-%d", gic_nr); }
There are only 3 differences (not including the name) in the definitions of the gic_chip and gic_eoimode1_chip structures. Instead of statically defining the gic_eoimode1_chip structure, remove it and populate the eoimode1 functions dynamically for the appropriate GIC irqchips. Signed-off-by: Jon Hunter <jonathanh@nvidia.com> --- drivers/irqchip/irq-gic.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-)