linux-sg2042/arch/m68k/mac
Finn Thain b2003c7a81 m68k: mac: Avoid stuck ISM IOP interrupt on Quadra 900/950
On a Quadra 900/950, the ISM IOP IRQ output pin is connected to an
edge-triggered input on VIA2. It is theoretically possible that this
signal could fail to produce the expected VIA2 interrupt.

The two IOP interrupt flags can be asserted in any order but the logic
in iop_ism_irq() does not allow for that. In particular, INT0 can be
asserted right after INT0 is checked and before INT1 is cleared.

Such an interrupt would produce no new edge and VIA2 would detect no
further interrupts from the IOP. Avoid this by looping over the INT0/1
handlers so an edge can be produced.

Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Tested-by: Stan Johnson <userm57@yahoo.com>
Cc: Joshua Thompson <funaho@jurai.org>
Link: https://lore.kernel.org/r/bfbb71db52c5e162d3afa25a28fc5d535ca87138.1589949122.git.fthain@telegraphics.com.au
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2020-05-25 10:55:56 +02:00
..
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
baboon.c m68k/mac: Fix apparent race condition in Baboon interrupt dispatch 2018-03-19 10:22:59 +01:00
config.c m68k: mac: Don't call via_flush_cache() on Mac IIfx 2020-05-25 10:55:56 +02:00
iop.c m68k: mac: Avoid stuck ISM IOP interrupt on Quadra 900/950 2020-05-25 10:55:56 +02:00
mac_penguin.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
macboing.c m68k/macboing: Fix missed timer callback assignment 2017-11-24 16:19:40 +01:00
macints.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
misc.c Char/Misc driver patches for 5.1-rc1 2019-03-06 14:18:59 -08:00
oss.c m68k/mac: Fix race conditions in OSS interrupt dispatch 2018-01-16 16:52:17 +01:00
psc.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
via.c m68k: mac: Don't call via_flush_cache() on Mac IIfx 2020-05-25 10:55:56 +02:00