Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[S390] qdio: output queue stall on FCP and network devices

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>

authored by

Frank Pavlic and committed by
Martin Schwidefsky
6cbed91a 92d154b6

+2 -2
+2 -2
drivers/s390/cio/qdio.c
··· 166 166 { 167 167 char dbf_text[15]; 168 168 169 - if (ccq == 0 || ccq == 32 || ccq == 96) 169 + if (ccq == 0 || ccq == 32) 170 170 return 0; 171 - if (ccq == 97) 171 + if (ccq == 96 || ccq == 97) 172 172 return 1; 173 173 /*notify devices immediately*/ 174 174 sprintf(dbf_text,"%d", ccq);