From: Cornelia Huck Common i/o layer changes: - Collect the irb at the correct subchannel when waiting for the clear interrupt during subchannel cleaning befor reIPL - don't stop at the first interrupt that comes in. - Change "extern __inline__" to "static inline". - Remove unneeded qdio includes. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky Signed-off-by: Andrew Morton --- drivers/s390/cio/cio.c | 7 ++++--- drivers/s390/cio/device_fsm.c | 3 +-- drivers/s390/cio/device_ops.c | 4 +--- drivers/s390/cio/ioasm.h | 26 +++++++++++++------------- 4 files changed, 19 insertions(+), 21 deletions(-) diff -puN drivers/s390/cio/cio.c~s390-reipl-fix-and-extern-static-inline drivers/s390/cio/cio.c --- devel/drivers/s390/cio/cio.c~s390-reipl-fix-and-extern-static-inline 2005-08-29 23:58:29.000000000 -0700 +++ devel-akpm/drivers/s390/cio/cio.c 2005-08-29 23:58:29.000000000 -0700 @@ -1,7 +1,7 @@ /* * drivers/s390/cio/cio.c * S/390 common I/O routines -- low level i/o calls - * $Revision: 1.134 $ + * $Revision: 1.135 $ * * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, * IBM Corporation @@ -815,8 +815,9 @@ __clear_subchannel_easy(unsigned int sch struct tpi_info ti; if (tpi(&ti)) { - tsch(schid, (struct irb *)__LC_IRB); - return 0; + tsch(ti.irq, (struct irb *)__LC_IRB); + if (ti.irq == schid) + return 0; } udelay(100); } diff -puN drivers/s390/cio/device_fsm.c~s390-reipl-fix-and-extern-static-inline drivers/s390/cio/device_fsm.c --- devel/drivers/s390/cio/device_fsm.c~s390-reipl-fix-and-extern-static-inline 2005-08-29 23:58:29.000000000 -0700 +++ devel-akpm/drivers/s390/cio/device_fsm.c 2005-08-29 23:58:29.000000000 -0700 @@ -13,7 +13,7 @@ #include #include -#include +#include #include "cio.h" #include "cio_debug.h" @@ -21,7 +21,6 @@ #include "device.h" #include "chsc.h" #include "ioasm.h" -#include "qdio.h" int device_is_online(struct subchannel *sch) diff -puN drivers/s390/cio/device_ops.c~s390-reipl-fix-and-extern-static-inline drivers/s390/cio/device_ops.c --- devel/drivers/s390/cio/device_ops.c~s390-reipl-fix-and-extern-static-inline 2005-08-29 23:58:29.000000000 -0700 +++ devel-akpm/drivers/s390/cio/device_ops.c 2005-08-29 23:58:29.000000000 -0700 @@ -1,7 +1,7 @@ /* * drivers/s390/cio/device_ops.c * - * $Revision: 1.56 $ + * $Revision: 1.57 $ * * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, * IBM Corporation @@ -19,14 +19,12 @@ #include #include -#include #include "cio.h" #include "cio_debug.h" #include "css.h" #include "chsc.h" #include "device.h" -#include "qdio.h" int ccw_device_set_options(struct ccw_device *cdev, unsigned long flags) diff -puN drivers/s390/cio/ioasm.h~s390-reipl-fix-and-extern-static-inline drivers/s390/cio/ioasm.h --- devel/drivers/s390/cio/ioasm.h~s390-reipl-fix-and-extern-static-inline 2005-08-29 23:58:29.000000000 -0700 +++ devel-akpm/drivers/s390/cio/ioasm.h 2005-08-29 23:58:29.000000000 -0700 @@ -21,7 +21,7 @@ struct tpi_info { * Some S390 specific IO instructions as inline */ -extern __inline__ int stsch(int irq, volatile struct schib *addr) +static inline int stsch(int irq, volatile struct schib *addr) { int ccode; @@ -36,7 +36,7 @@ extern __inline__ int stsch(int irq, vol return ccode; } -extern __inline__ int msch(int irq, volatile struct schib *addr) +static inline int msch(int irq, volatile struct schib *addr) { int ccode; @@ -51,7 +51,7 @@ extern __inline__ int msch(int irq, vola return ccode; } -extern __inline__ int msch_err(int irq, volatile struct schib *addr) +static inline int msch_err(int irq, volatile struct schib *addr) { int ccode; @@ -79,7 +79,7 @@ extern __inline__ int msch_err(int irq, return ccode; } -extern __inline__ int tsch(int irq, volatile struct irb *addr) +static inline int tsch(int irq, volatile struct irb *addr) { int ccode; @@ -94,7 +94,7 @@ extern __inline__ int tsch(int irq, vola return ccode; } -extern __inline__ int tpi( volatile struct tpi_info *addr) +static inline int tpi( volatile struct tpi_info *addr) { int ccode; @@ -108,7 +108,7 @@ extern __inline__ int tpi( volatile stru return ccode; } -extern __inline__ int ssch(int irq, volatile struct orb *addr) +static inline int ssch(int irq, volatile struct orb *addr) { int ccode; @@ -123,7 +123,7 @@ extern __inline__ int ssch(int irq, vola return ccode; } -extern __inline__ int rsch(int irq) +static inline int rsch(int irq) { int ccode; @@ -138,7 +138,7 @@ extern __inline__ int rsch(int irq) return ccode; } -extern __inline__ int csch(int irq) +static inline int csch(int irq) { int ccode; @@ -153,7 +153,7 @@ extern __inline__ int csch(int irq) return ccode; } -extern __inline__ int hsch(int irq) +static inline int hsch(int irq) { int ccode; @@ -168,7 +168,7 @@ extern __inline__ int hsch(int irq) return ccode; } -extern __inline__ int xsch(int irq) +static inline int xsch(int irq) { int ccode; @@ -183,7 +183,7 @@ extern __inline__ int xsch(int irq) return ccode; } -extern __inline__ int chsc(void *chsc_area) +static inline int chsc(void *chsc_area) { int cc; @@ -198,7 +198,7 @@ extern __inline__ int chsc(void *chsc_ar return cc; } -extern __inline__ int iac( void) +static inline int iac( void) { int ccode; @@ -210,7 +210,7 @@ extern __inline__ int iac( void) return ccode; } -extern __inline__ int rchp(int chpid) +static inline int rchp(int chpid) { int ccode; _