]> err.no Git - linux-2.6/commitdiff
[S390] qdio: output queue stall on FCP and network devices
authorFrank Pavlic <fpavlic@de.ibm.com>
Tue, 17 Jul 2007 11:36:04 +0000 (13:36 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 17 Jul 2007 11:36:18 +0000 (13:36 +0200)
When running QIOASSIST enabled qdio devices in a z/VM environment
the output queue for such devices stall in heavy workload situations.
When SQBS and EQBS instructions returns CCQ=96 qdio does not reissue
the instruction again with the register settings done by millicode
but processed the returned qdio buffer. This is wrong. qdio has to
reissue the instruction once again on CCQ=96, as we already do it
for CCQ=97.

Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/cio/qdio.c

index e70aeb7a378109ef1fa1f6a31d72ae6fe7009828..ae437322c9cae8d9e060fbf210bdf4080abd5d49 100644 (file)
@@ -166,9 +166,9 @@ qdio_check_ccq(struct qdio_q *q, unsigned int ccq)
 {
        char dbf_text[15];
 
-       if (ccq == 0 || ccq == 32 || ccq == 96)
+       if (ccq == 0 || ccq == 32)
                return 0;
-       if (ccq == 97)
+       if (ccq == 96 || ccq == 97)
                return 1;
        /*notify devices immediately*/
        sprintf(dbf_text,"%d", ccq);