What started this series is Andre's SPI and group interrupts tests [1], which prompted me to attempt to rewrite check_acked() so it's more flexible and not so complicated to review. When I was doing that I noticed that the message passing pattern for accesses to the acked, bad_irq and bad_sender arrays didn't look quite right, and that turned into the first 7 patches of the series. Even though the diffs are relatively small, they are not trivial and the reviewer can skip them for the more palatable patches that follow. I would still appreciate someone having a look at the memory ordering fixes. Patch #8 ("Split check_acked() into two functions") is where check_acked() is reworked with an eye towards supporting different timeout values or silent reporting without adding too many arguments to check_acked(). After changing the IPI tests, I turned my attention to the LPI tests, which followed the same memory synchronization patterns, but invented their own interrupt handler and testing functions. Instead of redoing the work that I did for the IPI tests, I decided to convert the LPI tests to use the same infrastructure. It turns out that was a good idea, because it uncovered a test inconsistency that was hidden before. I am not familiar with the ITS and I'm not sure that there is even a problem or if the behaviour is expected, details in the last patch. [1] https://lists.cs.columbia.edu/pipermail/kvmarm/2019-November/037853.html Alexandru Elisei (10): lib: arm/arm64: gicv3: Add missing barrier when sending IPIs lib: arm/arm64: gicv2: Add missing barrier when sending IPIs arm/arm64: gic: Remove memory synchronization from ipi_clear_active_handler() arm/arm64: gic: Remove unnecessary synchronization with stats_reset() arm/arm64: gic: Use correct memory ordering for the IPI test arm/arm64: gic: Check spurious and bad_sender in the active test arm/arm64: gic: Wait for writes to acked or spurious to complete arm/arm64: gic: Split check_acked() into two functions arm/arm64: gic: Make check_acked() more generic arm64: gic: Use IPI test checking for the LPI tests lib/arm/gic-v2.c | 4 + lib/arm/gic-v3.c | 3 + arm/gic.c | 334 +++++++++++++++++++++++++---------------------- 3 files changed, 185 insertions(+), 156 deletions(-) -- 2.29.2