linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] irqchip/gic-v3-its: Fix double EOIR write for LPI in EOImode==1
@ 2016-02-11 13:38 Ashok Kumar
  2016-02-11 15:45 ` Marc Zyngier
  0 siblings, 1 reply; 2+ messages in thread
From: Ashok Kumar @ 2016-02-11 13:38 UTC (permalink / raw)
  To: linux-arm-kernel

CPU receives SError exception EOI1_NO_INTS_ACTIVE when EOIR
is written twice in gic_handle_irq and in its_eoi_irq for a
single LPI in EOImode == 1.

Now irq_eoi of its_irq_chip calls parent irqchip's(gic_eoimode1_chip/gic_chip)
irq_eoi handler which handles EOImode 0 and 1 separately.

This is introduced by
commit 0b996fd35957a ("irqchip/GICv3: Convert to EOImode == 1")

Signed-off-by: Ashok Kumar <ashoks@broadcom.com>
---
 drivers/irqchip/irq-gic-v3-its.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
index e23d1d1..a159529f 100644
--- a/drivers/irqchip/irq-gic-v3-its.c
+++ b/drivers/irqchip/irq-gic-v3-its.c
@@ -597,11 +597,6 @@ static void its_unmask_irq(struct irq_data *d)
 	lpi_set_config(d, true);
 }
 
-static void its_eoi_irq(struct irq_data *d)
-{
-	gic_write_eoir(d->hwirq);
-}
-
 static int its_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
 			    bool force)
 {
@@ -638,7 +633,7 @@ static struct irq_chip its_irq_chip = {
 	.name			= "ITS",
 	.irq_mask		= its_mask_irq,
 	.irq_unmask		= its_unmask_irq,
-	.irq_eoi		= its_eoi_irq,
+	.irq_eoi		= irq_chip_eoi_parent,
 	.irq_set_affinity	= its_set_affinity,
 	.irq_compose_msi_msg	= its_irq_compose_msi_msg,
 };
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [PATCH] irqchip/gic-v3-its: Fix double EOIR write for LPI in EOImode==1
  2016-02-11 13:38 [PATCH] irqchip/gic-v3-its: Fix double EOIR write for LPI in EOImode==1 Ashok Kumar
@ 2016-02-11 15:45 ` Marc Zyngier
  0 siblings, 0 replies; 2+ messages in thread
From: Marc Zyngier @ 2016-02-11 15:45 UTC (permalink / raw)
  To: linux-arm-kernel

On 11/02/16 13:38, Ashok Kumar wrote:
> CPU receives SError exception EOI1_NO_INTS_ACTIVE when EOIR
> is written twice in gic_handle_irq and in its_eoi_irq for a
> single LPI in EOImode == 1.
> 
> Now irq_eoi of its_irq_chip calls parent irqchip's(gic_eoimode1_chip/gic_chip)
> irq_eoi handler which handles EOImode 0 and 1 separately.
> 
> This is introduced by
> commit 0b996fd35957a ("irqchip/GICv3: Convert to EOImode == 1")
> 
> Signed-off-by: Ashok Kumar <ashoks@broadcom.com>

Ah, really good catch!

Acked-by: Marc Zyngier <marc.zyngier@arm.com>

I'll try to queue that for -rc4, but it is more likely that it will land
in -rc5...

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-02-11 15:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-11 13:38 [PATCH] irqchip/gic-v3-its: Fix double EOIR write for LPI in EOImode==1 Ashok Kumar
2016-02-11 15:45 ` Marc Zyngier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).