linux/drivers/s390
Jan Glauber 4f325184f2 [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>
2011-01-05 12:47:28 +01:00
..
block [S390] dasd: add support for irq statistics 2011-01-05 12:47:25 +01:00
char [S390] sclp: use register_external_interrupt() 2011-01-05 12:47:26 +01:00
cio [S390] qdio: prevent race for shared indicators 2011-01-05 12:47:28 +01:00
crypto [S390] Handling of 4096 bit RSA keys in CRT format. 2011-01-05 12:47:27 +01:00
kvm [S390] irq: have detailed statistics for interrupt types 2011-01-05 12:47:25 +01:00
net [S390] ctc: add support for irq statistics 2011-01-05 12:47:26 +01:00
scsi [SCSI] zfcp: Issue FCP command without holding SCSI host_lock 2010-12-09 09:41:23 -06:00
Makefile [S390] split/move machine check handler code 2009-03-26 15:24:10 +01:00