Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 89877e42827f16fa5f86b1df0c2860b1 > files > 1980

kernel-2.6.18-128.1.10.el5.src.rpm

From: Hans-Joachim Picht <hpicht@redhat.com>
Date: Fri, 16 Nov 2007 13:58:29 +0100
Subject: [s390] qdio: many interrupts on qdio-driven devices
Message-id: 20071116125829.GT6053@redhat.com
O-Subject: [RHEL5 U2 PATCH 12/14] s390 - qdio: Too many interrupts on qdio-driven devices.
Bugzilla: 360821

Description
============

qdio is getting more interrupts than needed. The appropriate data channel
is used without QEBSM support. When receiving a bunch of SBALs on the
input queue which are in state PRIMED, qdio is processing them sequentially
and set their state from 0x82 to 0x80. Tt never sets the last one to 0x81
which should be set to avoid further interrupts.

On the last SBAL set its state to 0x81 to avoid further interrupts.

Bugzilla
=========

BZ 360821
https://bugzilla.redhat.com/show_bug.cgi?id=360821

Upstream status of the patch:
=============================
Patch included in git as commit 8129ee164267dc030b8e1d541ee3643c0b9f2fa1

Test status:
============
Kernel with patch was built and successfully tested

Please ACK.

With best regards,

Hans

diff --git a/drivers/s390/cio/qdio.c b/drivers/s390/cio/qdio.c
index ad672ac..844e5f3 100644
--- a/drivers/s390/cio/qdio.c
+++ b/drivers/s390/cio/qdio.c
@@ -1145,7 +1145,7 @@ out:
 
 #ifdef QDIO_USE_PROCESSING_STATE
 	if (last_position>=0)
-		set_slsb(q, &last_position, SLSB_P_INPUT_NOT_INIT, &count);
+		set_slsb(q, &last_position, SLSB_P_INPUT_PROCESSING, &count);
 #endif /* QDIO_USE_PROCESSING_STATE */
 
 	QDIO_DBF_HEX4(0,trace,&q->first_to_check,sizeof(int));