[S390] qdio: prevent race for shared indicators
If the shared indicator is used the following race leads to
an inbound stall:
Device CPU0 CPU1
========================================================
non-shared DSCI =>1
ALSI => 1
Thin INT
ALSI => 0
non-shared DSCI
tasklets scheduled
shared DSCI => 1
ALSI => 1
shared DSCI => 0
ALSI ? -> set
Thin INT
ALSI => 0
ALSI was set,
shared DSCI => 1
After that no more interrupts occur because the DSCI is still set.
Fix that race by only resetting the shared DSCI if it was actually
set so the tasklets for all shared devices are scheduled and will
run after the interrupt.
Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
3 files changed