Message ID | 1458187303.27037.3.camel@ingics.com |
---|---|
State | New |
Headers | show |
On 17/03/16 04:01, Axel Lin wrote: > Current code calls irq_domain_alloc_irqs_parent() in .alloc, > so it should call irq_domain_free_irqs_parent() accordingly in .free. > Fix it by switching to use irq_domain_free_irqs_common() instead. > > Signed-off-by: Axel Lin <axel.lin@ingics.com> > --- > drivers/gpio/gpio-xgene-sb.c | 15 +-------------- > 1 file changed, 1 insertion(+), 14 deletions(-) > > diff --git a/drivers/gpio/gpio-xgene-sb.c b/drivers/gpio/gpio-xgene-sb.c > index 31cbcb8..0332586 100644 > --- a/drivers/gpio/gpio-xgene-sb.c > +++ b/drivers/gpio/gpio-xgene-sb.c > @@ -216,23 +216,10 @@ static int xgene_gpio_sb_domain_alloc(struct irq_domain *domain, > &parent_fwspec); > } > > -static void xgene_gpio_sb_domain_free(struct irq_domain *domain, > - unsigned int virq, > - unsigned int nr_irqs) > -{ > - struct irq_data *d; > - unsigned int i; > - > - for (i = 0; i < nr_irqs; i++) { > - d = irq_domain_get_irq_data(domain, virq + i); > - irq_domain_reset_irq_data(d); > - } > -} > - > static const struct irq_domain_ops xgene_gpio_sb_domain_ops = { > .translate = xgene_gpio_sb_domain_translate, > .alloc = xgene_gpio_sb_domain_alloc, > - .free = xgene_gpio_sb_domain_free, > + .free = irq_domain_free_irqs_common, > .activate = xgene_gpio_sb_domain_activate, > .deactivate = xgene_gpio_sb_domain_deactivate, > }; > Ah, nice catch. For both patches: Acked-by: Marc Zyngier <marc.zyngier@arm.com> Thanks, M.
On Thu, Mar 17, 2016 at 5:01 AM, Axel Lin <axel.lin@ingics.com> wrote: > Current code calls irq_domain_alloc_irqs_parent() in .alloc, > so it should call irq_domain_free_irqs_parent() accordingly in .free. > Fix it by switching to use irq_domain_free_irqs_common() instead. > > Signed-off-by: Axel Lin <axel.lin@ingics.com> Patch applied with Marc's ACK. Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/gpio/gpio-xgene-sb.c b/drivers/gpio/gpio-xgene-sb.c index 31cbcb8..0332586 100644 --- a/drivers/gpio/gpio-xgene-sb.c +++ b/drivers/gpio/gpio-xgene-sb.c @@ -216,23 +216,10 @@ static int xgene_gpio_sb_domain_alloc(struct irq_domain *domain, &parent_fwspec); } -static void xgene_gpio_sb_domain_free(struct irq_domain *domain, - unsigned int virq, - unsigned int nr_irqs) -{ - struct irq_data *d; - unsigned int i; - - for (i = 0; i < nr_irqs; i++) { - d = irq_domain_get_irq_data(domain, virq + i); - irq_domain_reset_irq_data(d); - } -} - static const struct irq_domain_ops xgene_gpio_sb_domain_ops = { .translate = xgene_gpio_sb_domain_translate, .alloc = xgene_gpio_sb_domain_alloc, - .free = xgene_gpio_sb_domain_free, + .free = irq_domain_free_irqs_common, .activate = xgene_gpio_sb_domain_activate, .deactivate = xgene_gpio_sb_domain_deactivate, };
Current code calls irq_domain_alloc_irqs_parent() in .alloc, so it should call irq_domain_free_irqs_parent() accordingly in .free. Fix it by switching to use irq_domain_free_irqs_common() instead. Signed-off-by: Axel Lin <axel.lin@ingics.com> --- drivers/gpio/gpio-xgene-sb.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-)