diff options
author | Jan Glauber <jang@linux.vnet.ibm.com> | 2012-05-09 10:27:34 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2012-05-16 08:42:36 -0400 |
commit | 1549d13f4c5f0ca77b66bd725287d0b3f877eb6b (patch) | |
tree | 5ba439915cc4cceb8930a18e9adf2aba34adc82f /arch/s390/include | |
parent | 050276ab8ce9f30c1d2d74c42a349ed54701905f (diff) |
s390/qdio: Cleanup error handling to drivers
Various improvements of qdio error reporting to the
upper-layer drivers (qeth, zfcp):
- Split QDIO_ERROR_ACTIVATE_CHECK_CONDITION into:
QDIO_ERROR_ACTIVATE: qdio termination interrupt
QDIO_ERROR_GET_BUF_STATE: QIOASSIST eqbs error
QDIO_ERROR_SET_BUF_STATE: QIOASSIST sqbs error
Add QDIO_ERROR_FATAL / QDIO_ERROR_TEMPORARY masks
to ease recovery decision in upper-layer drivers.
- Don't (ab-)use qdio handler errors as return codes
for do_QDIO but use standard error codes:
-ENOBUFS: temporary target CC=2 condition
-EBUSY: unresolved SIGA-W CC=2 busy condition
-EIO: I/O error (CC=1, CC=3)
- Remove unneeded memory clobber from SIGA-R
- Remove EX_TABLE entry on SIGA-W, we want to see these errors
Reviewed-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/include')
-rw-r--r-- | arch/s390/include/asm/qdio.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/arch/s390/include/asm/qdio.h b/arch/s390/include/asm/qdio.h index 74528e27b37f..f039d86adf67 100644 --- a/arch/s390/include/asm/qdio.h +++ b/arch/s390/include/asm/qdio.h | |||
@@ -325,11 +325,13 @@ typedef void qdio_handler_t(struct ccw_device *, unsigned int, int, | |||
325 | int, int, unsigned long); | 325 | int, int, unsigned long); |
326 | 326 | ||
327 | /* qdio errors reported to the upper-layer program */ | 327 | /* qdio errors reported to the upper-layer program */ |
328 | #define QDIO_ERROR_SIGA_TARGET 0x02 | 328 | #define QDIO_ERROR_ACTIVATE 0x0001 |
329 | #define QDIO_ERROR_SIGA_ACCESS_EXCEPTION 0x10 | 329 | #define QDIO_ERROR_GET_BUF_STATE 0x0002 |
330 | #define QDIO_ERROR_SIGA_BUSY 0x20 | 330 | #define QDIO_ERROR_SET_BUF_STATE 0x0004 |
331 | #define QDIO_ERROR_ACTIVATE_CHECK_CONDITION 0x40 | 331 | #define QDIO_ERROR_SLSB_STATE 0x0100 |
332 | #define QDIO_ERROR_SLSB_STATE 0x80 | 332 | |
333 | #define QDIO_ERROR_FATAL 0x00ff | ||
334 | #define QDIO_ERROR_TEMPORARY 0xff00 | ||
333 | 335 | ||
334 | /* for qdio_cleanup */ | 336 | /* for qdio_cleanup */ |
335 | #define QDIO_FLAG_CLEANUP_USING_CLEAR 0x01 | 337 | #define QDIO_FLAG_CLEANUP_USING_CLEAR 0x01 |