]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Eliminate one of the causes of spurious interrupts on armv6. The arm weak
authorIan Lepore <ian@FreeBSD.org>
Sat, 24 May 2014 16:21:16 +0000 (16:21 +0000)
committerIan Lepore <ian@FreeBSD.org>
Sat, 24 May 2014 16:21:16 +0000 (16:21 +0000)
commit11d47032eec59ee3e57c84217839741d54ddcf5a
tree6e31242e925eea928d7cf28410eac592c42c0545
parent3150f357ff669e068e0b3c270e802e8a71ad56e3
Eliminate one of the causes of spurious interrupts on armv6.  The arm weak
memory ordering model allows writes to different devices to complete out
of order, leading to a situation where the write that clears an interrupt
source at a device can complete after a write that unmasks and EOIs the
interrupt at the interrupt controller, leading to a spurious re-interrupt.

This adds a generic barrier function specific to the needs of interrupt
controllers, and calls that function from the GIC and TI AINTC controllers.
There may still be other soc-specific controllers that need to make the call.

Reviewed by: cognet, Svatopluk Kraus <onwahe@gmail.com>
MFC after: 3 days
sys/arm/arm/gic.c
sys/arm/arm/intr.c
sys/arm/include/intr.h
sys/arm/ti/aintc.c