diff options
author | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-29 19:07:18 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-29 19:07:18 +0100 |
commit | 7479b1ce5ea41a828002c60739cff37f47b62913 (patch) | |
tree | a8af71f221374dfbf5d72c323e69ee2a2493db84 | |
parent | Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/mchehab/... (diff) | |
parent | [S390] cio: fix stsch_reset. (diff) | |
download | linux-7479b1ce5ea41a828002c60739cff37f47b62913.tar.xz linux-7479b1ce5ea41a828002c60739cff37f47b62913.zip |
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
[S390] cio: fix stsch_reset.
[S390] Change max. buffer size for monwriter device.
-rw-r--r-- | drivers/s390/char/monwriter.c | 2 | ||||
-rw-r--r-- | drivers/s390/cio/cio.c | 13 |
2 files changed, 11 insertions, 4 deletions
diff --git a/drivers/s390/char/monwriter.c b/drivers/s390/char/monwriter.c index b9b0fc3f812b..cdb24f528112 100644 --- a/drivers/s390/char/monwriter.c +++ b/drivers/s390/char/monwriter.c @@ -23,7 +23,7 @@ #include <asm/appldata.h> #include <asm/monwriter.h> -#define MONWRITE_MAX_DATALEN 4024 +#define MONWRITE_MAX_DATALEN 4010 static int mon_max_bufs = 255; static int mon_buf_count; diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c index 3a403f195cf8..b471ac4a1bf6 100644 --- a/drivers/s390/cio/cio.c +++ b/drivers/s390/cio/cio.c @@ -2,8 +2,7 @@ * drivers/s390/cio/cio.c * S/390 common I/O routines -- low level i/o calls * - * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, - * IBM Corporation + * Copyright (C) IBM Corp. 1999,2006 * Author(s): Ingo Adlung (adlung@de.ibm.com) * Cornelia Huck (cornelia.huck@de.ibm.com) * Arnd Bergmann (arndb@de.ibm.com) @@ -881,10 +880,18 @@ static void cio_reset_pgm_check_handler(void) static int stsch_reset(struct subchannel_id schid, volatile struct schib *addr) { int rc; + register struct subchannel_id reg1 asm ("1") = schid; pgm_check_occured = 0; s390_reset_pgm_handler = cio_reset_pgm_check_handler; - rc = stsch(schid, addr); + + asm volatile( + " stsch 0(%2)\n" + " ipm %0\n" + " srl %0,28" + : "=d" (rc) + : "d" (reg1), "a" (addr), "m" (*addr) : "memory", "cc"); + s390_reset_pgm_handler = NULL; if (pgm_check_occured) return -EIO; |