linux_dsm_epyc7002/drivers/s390/cio
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
..
airq.c [S390] cio: airq - fix array boundary 2009-03-26 15:24:14 +01:00
blacklist.c [S390] cio: remove custom implementation of hex_to_bin() 2010-10-25 16:10:17 +02:00
blacklist.h [PATCH] s390: multiple subchannel sets support 2006-01-06 08:33:52 -08:00
ccwgroup.c [S390] ccwgroup: add locking around drvdata access 2010-05-26 23:27:09 +02:00
ccwreq.c [S390] ccwreq: add ability to use all paths 2010-08-09 18:12:54 +02:00
chp.c [S390] cio: update descriptor in chsc_chp_vary 2010-10-25 16:10:18 +02:00
chp.h [S390] cio: update descriptor in chsc_chp_vary 2010-10-25 16:10:18 +02:00
chsc_sch.c [S390] chsc: use the global page to determine the chp desriptor 2010-10-25 16:10:18 +02:00
chsc_sch.h [S390] cio: Add chsc subchannel driver. 2008-07-14 10:02:12 +02:00
chsc.c [S390] css: update descriptor after hibernate 2010-10-25 16:10:18 +02:00
chsc.h [S390] chsc: use the global page to determine the chp desriptor 2010-10-25 16:10:18 +02:00
cio_debug.h [S390] cio: Remove cio_msg kernel parameter. 2008-05-07 09:23:01 +02:00
cio.c [S390] idle time accounting vs. machine checks 2010-05-17 10:00:15 +02:00
cio.h [S390] cio: introduce subchannel todos 2009-12-07 12:51:30 +01:00
cmf.c tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
crw.c [S390] cio: wait for channel report 2010-02-26 22:37:29 +01:00
css.c [S390] css: fix rsid evaluation for 2nd crw 2010-12-01 10:08:17 +01:00
css.h [S390] cio: trigger subchannel event at resume time 2010-02-26 22:37:30 +01:00
device_fsm.c [S390] cio: fix I/O cancel function 2010-10-25 16:10:20 +02:00
device_id.c [S390] cio: use all available paths for some internal I/O 2010-08-09 18:12:54 +02:00
device_ops.c [S390] cio: make steal lock procedure more robust 2009-12-07 12:51:32 +01:00
device_pgid.c [S390] cio: notify drivers of channel path events 2010-10-25 16:10:19 +02:00
device_status.c [S390] cio: remove intretry flag 2009-12-07 12:51:31 +01:00
device.c [S390] cio: fix incorrect ccw_device_init_count 2010-11-10 10:05:54 +01:00
device.h [S390] ccw_device_notify: improve return codes 2010-02-26 22:37:29 +01:00
fcx.c [S390] drivers: Correct size given to memset 2009-12-18 17:43:32 +01:00
idset.c [S390] cio: introduce consistent subchannel scanning 2009-09-22 22:58:42 +02:00
idset.h [S390] cio: introduce consistent subchannel scanning 2009-09-22 22:58:42 +02:00
io_sch.h [S390] cio: notify drivers of channel path events 2010-10-25 16:10:19 +02:00
ioasm.h [S390] cio: remove stsch 2010-05-26 23:27:09 +02:00
isc.c [S390] cio: introduce isc_(un)register functions. 2008-07-14 10:02:11 +02:00
itcw.c [S390] appldata/extmem/kvm: add missing GFP_KERNEL flag 2010-06-08 18:58:23 +02:00
Makefile [S390] qdio: convert global statistics to per-device stats 2010-01-04 09:05:58 +01:00
qdio_debug.c qdio: extend API to allow polling 2010-09-08 14:31:00 -07:00
qdio_debug.h [S390] qdio: rework debug feature logging 2008-12-25 13:38:59 +01:00
qdio_main.c [S390] qdio: prevent race for shared indicators 2011-01-05 12:47:28 +01:00
qdio_setup.c qdio: extend API to allow polling 2010-09-08 14:31:00 -07:00
qdio_thinint.c [S390] qdio: prevent race for shared indicators 2011-01-05 12:47:28 +01:00
qdio.h [S390] qdio: prevent race for shared indicators 2011-01-05 12:47:28 +01:00