Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1230102
| From | Boris Brezillon <boris.brezillon@free-electrons.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 1/3] irqchip: atmel-aic5: fix bug with mask/unmask |
| Date | 2015-09-22 14:00 +0200 |
| Message-ID | <qbuoN-4sw-15@gated-at.bofh.it> (permalink) |
| References | <qb9DI-8gq-19@gated-at.bofh.it> <qbsZI-2zG-11@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Hi Thomas,
On Tue, 22 Sep 2015 12:27:08 +0200 (CEST)
Thomas Gleixner <tglx@linutronix.de> wrote:
> On Mon, 21 Sep 2015, Ludovic Desroches wrote:
> > diff --git a/drivers/irqchip/irq-atmel-aic5.c b/drivers/irqchip/irq-atmel-aic5.c
> > index 9da9942..6c5fd25 100644
> > --- a/drivers/irqchip/irq-atmel-aic5.c
> > +++ b/drivers/irqchip/irq-atmel-aic5.c
> > @@ -88,28 +88,30 @@ static void aic5_mask(struct irq_data *d)
> > {
> > struct irq_domain *domain = d->domain;
> > struct irq_domain_chip_generic *dgc = domain->gc;
> > - struct irq_chip_generic *gc = dgc->gc[0];
> > + struct irq_chip_generic *bgc = dgc->gc[0];
> > + struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
> >
> > /* Disable interrupt on AIC5 */
> > - irq_gc_lock(gc);
> > + irq_gc_lock(bgc);
>
> Why is this locking dgc->gc[0] and fiddling with some other generic
> chip?
Actually, we always access the same set of registers for all irqs of the
domain, and thus need to take the same lock (I chose the one contained
in the first generic irqchip, but I guess it could work with the others
too, as long as we always take the same one) before accessing them
because the configuration is done in two steps:
1/ specify the irq line you want to configure
2/ set the new configuration
Regarding register accesses, all generic chips are configured to
point to the same registers, so accessing them from the 'base' generic
chip or from the generic chip attached to the irq_data struct is the
same, though I agree that using bgc would add some consistency to the
implementation.
This leaves the mask_cache value, which should be updated on the generic
chip attached to the irq_data (but since the lock is global to the
whole domain, it should work fine).
Please let us know if you see other problems, or have a better
solution to fix the bug.
Best Regards,
Boris
>
> > irq_reg_writel(gc, d->hwirq, AT91_AIC5_SSR);
> > irq_reg_writel(gc, 1, AT91_AIC5_IDCR);
>
> Thanks,
>
> tglx
--
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 1/3] irqchip: atmel-aic5: fix bug with mask/unmask Ludovic Desroches <ludovic.desroches@atmel.com> - 2015-09-21 15:50 +0200
[PATCH 2/3] irqchip: atmel-aic5: fix variable naming Ludovic Desroches <ludovic.desroches@atmel.com> - 2015-09-21 15:50 +0200
Re: [PATCH 2/3] irqchip: atmel-aic5: fix variable naming Nicolas Ferre <nicolas.ferre@atmel.com> - 2015-09-22 10:30 +0200
[tip:irq/core] irqchip/atmel-aic5: Use explicit variable name for the base chip tip-bot for Ludovic Desroches <tipbot@zytor.com> - 2015-09-22 16:20 +0200
[PATCH 3/3] irqchip: atmel-aic5: simplify base chip selection Ludovic Desroches <ludovic.desroches@atmel.com> - 2015-09-21 15:50 +0200
Re: [PATCH 3/3] irqchip: atmel-aic5: simplify base chip selection Nicolas Ferre <nicolas.ferre@atmel.com> - 2015-09-22 10:30 +0200
[tip:irq/core] irqchip/atmel-aic5: Simplify base chip selection tip-bot for Ludovic Desroches <tipbot@zytor.com> - 2015-09-22 16:20 +0200
Re: [PATCH 1/3] irqchip: atmel-aic5: fix bug with mask/unmask Boris Brezillon <boris.brezillon@free-electrons.com> - 2015-09-22 09:50 +0200
Re: [PATCH 1/3] irqchip: atmel-aic5: fix bug with mask/unmask Nicolas Ferre <nicolas.ferre@atmel.com> - 2015-09-22 10:30 +0200
Re: [PATCH 1/3] irqchip: atmel-aic5: fix bug with mask/unmask Thomas Gleixner <tglx@linutronix.de> - 2015-09-22 12:30 +0200
Re: [PATCH 1/3] irqchip: atmel-aic5: fix bug with mask/unmask Boris Brezillon <boris.brezillon@free-electrons.com> - 2015-09-22 14:00 +0200
Re: [PATCH 1/3] irqchip: atmel-aic5: fix bug with mask/unmask Thomas Gleixner <tglx@linutronix.de> - 2015-09-22 16:00 +0200
Re: [PATCH 1/3] irqchip: atmel-aic5: fix bug with mask/unmask Ludovic Desroches <ludovic.desroches@atmel.com> - 2015-09-22 16:20 +0200
Re: [tip:irq/urgent] irqchip/atmel-aic5: Use proper mask cache in mask/unmask() Thomas Gleixner <tglx@linutronix.de> - 2015-09-22 12:40 +0200
[tip:irq/urgent] irqchip/atmel-aic5: Use proper mask cache in mask/unmask() tip-bot for Ludovic Desroches <tipbot@zytor.com> - 2015-09-22 12:40 +0200
[tip:irq/urgent] irqchip/atmel-aic5: Use per chip mask caches in mask/unmask() tip-bot for Ludovic Desroches <tipbot@zytor.com> - 2015-09-22 16:10 +0200
csiph-web