2008-11-27 10:37:04

by Martin Schwidefsky

[permalink] [raw]
Subject: [patch 14/60] qdio: improve error handling for unexpected buffer states

From: Jan Glauber <[email protected]>

In case of a qdio internal problem regarding the buffer handling
advance the queue and report the problem with WARN_ON instead
of getting stuck.

Signed-off-by: Jan Glauber <[email protected]>
Signed-off-by: Martin Schwidefsky <[email protected]>
---

drivers/s390/cio/qdio_main.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

Index: quilt-2.6/drivers/s390/cio/qdio_main.c
===================================================================
--- quilt-2.6.orig/drivers/s390/cio/qdio_main.c
+++ quilt-2.6/drivers/s390/cio/qdio_main.c
@@ -476,9 +476,12 @@ check_next:
atomic_sub(count, &q->nr_buf_used);
break;
case SLSB_CU_INPUT_EMPTY:
+ DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "in nop");
+ break;
case SLSB_P_INPUT_NOT_INIT:
case SLSB_P_INPUT_ACK:
- DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "in nop");
+ WARN_ON(1);
+ q->first_to_check++;
break;
default:
BUG();
@@ -648,6 +651,9 @@ check_next:
DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "out primed:%1d", q->nr);
break;
case SLSB_P_OUTPUT_NOT_INIT:
+ WARN_ON(1);
+ q->first_to_check++;
+ break;
case SLSB_P_OUTPUT_HALTED:
break;
default:

--
blue skies,
Martin.

"Reality continues to ruin my life." - Calvin.