Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1762234AbXHVMeP (ORCPT ); Wed, 22 Aug 2007 08:34:15 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1760759AbXHVMdD (ORCPT ); Wed, 22 Aug 2007 08:33:03 -0400 Received: from mtagate3.de.ibm.com ([195.212.29.152]:58491 "EHLO mtagate3.de.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758691AbXHVMc5 (ORCPT ); Wed, 22 Aug 2007 08:32:57 -0400 Message-Id: <20070822123642.514416081@de.ibm.com> References: <20070822123603.501231302@de.ibm.com> User-Agent: quilt/0.46-1 Date: Wed, 22 Aug 2007 14:36:06 +0200 From: Martin Schwidefsky To: linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org Cc: "Klaus D. Wacker" , Martin Schwidefsky , Heiko Carstens Subject: [patch 03/10] qdio: fix EQBS handling on CCQ96 Content-Disposition: inline; filename=003-qdio-eqbs.diff Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1543 Lines: 44 From: Klaus D. Wacker QDIO returned from EQBS instruction in any case after return code CCQ=96 was issued regardless whether buffer states for at least one buffer were extracted or not. This caused FCP devices to hang when running under z/VM and having QIOASSASIST=ON and having high I/O rates. In order to fix this qdio return code processing of EQBS instruction after CCQ=96 is changed that buffers are returned and if no buffers where extracted the instruction is repeated at once. Signed-off-by: Klaus D. Wacker Signed-off-by: Martin Schwidefsky Signed-off-by: Heiko Carstens --- drivers/s390/cio/qdio.c | 2 ++ 1 file changed, 2 insertions(+) Index: quilt-2.6/drivers/s390/cio/qdio.c =================================================================== --- quilt-2.6.orig/drivers/s390/cio/qdio.c +++ quilt-2.6/drivers/s390/cio/qdio.c @@ -195,6 +195,8 @@ qdio_do_eqbs(struct qdio_q *q, unsigned again: ccq = do_eqbs(irq->sch_token, state, q_no, start, cnt); rc = qdio_check_ccq(q, ccq); + if ((ccq == 96) && (tmp_cnt != *cnt)) + rc = 0; if (rc == 1) { QDIO_DBF_TEXT5(1,trace,"eqAGAIN"); goto again; -- blue skies, Martin. "Reality continues to ruin my life." - Calvin. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/