diff options
author | Linus Torvalds <torvalds@woody.osdl.org> | 2007-01-09 12:34:20 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2007-01-09 12:34:20 -0500 |
commit | 599c853195f43dfbcbf28b362e6ae80ffa33fec7 (patch) | |
tree | 0a4730bd6cb2289bc3b81fdac1d42888d9de8e5f /drivers | |
parent | 2f5c33b3180169f3eafb698b66686962d637fb0e (diff) | |
parent | bf3dbdcd0bfca74c16ad0b2b5a978907c864ed4c (diff) |
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] locking problem with __cpcmd.
[S390] don't call handle_mm_fault() if in an atomic context.
[S390] Fix vmalloc area size calculation.
[S390] Fix cpu hotplug (missing 'online' attribute).
[S390] cio: use barrier() in stsch_reset.
[S390] memory detection misses 128k.
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/s390/char/vmcp.c | 2 | ||||
-rw-r--r-- | drivers/s390/cio/cio.c | 12 |
2 files changed, 5 insertions, 9 deletions
diff --git a/drivers/s390/char/vmcp.c b/drivers/s390/char/vmcp.c index 1678b6c757ec..a420cd099041 100644 --- a/drivers/s390/char/vmcp.c +++ b/drivers/s390/char/vmcp.c | |||
@@ -117,7 +117,7 @@ vmcp_write(struct file *file, const char __user * buff, size_t count, | |||
117 | return -ENOMEM; | 117 | return -ENOMEM; |
118 | } | 118 | } |
119 | debug_text_event(vmcp_debug, 1, cmd); | 119 | debug_text_event(vmcp_debug, 1, cmd); |
120 | session->resp_size = __cpcmd(cmd, session->response, | 120 | session->resp_size = cpcmd(cmd, session->response, |
121 | session->bufsize, | 121 | session->bufsize, |
122 | &session->resp_code); | 122 | &session->resp_code); |
123 | up(&session->mutex); | 123 | up(&session->mutex); |
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c index b471ac4a1bf6..ae1bf231d089 100644 --- a/drivers/s390/cio/cio.c +++ b/drivers/s390/cio/cio.c | |||
@@ -880,19 +880,15 @@ static void cio_reset_pgm_check_handler(void) | |||
880 | static int stsch_reset(struct subchannel_id schid, volatile struct schib *addr) | 880 | static int stsch_reset(struct subchannel_id schid, volatile struct schib *addr) |
881 | { | 881 | { |
882 | int rc; | 882 | int rc; |
883 | register struct subchannel_id reg1 asm ("1") = schid; | ||
884 | 883 | ||
885 | pgm_check_occured = 0; | 884 | pgm_check_occured = 0; |
886 | s390_reset_pgm_handler = cio_reset_pgm_check_handler; | 885 | s390_reset_pgm_handler = cio_reset_pgm_check_handler; |
886 | rc = stsch(schid, addr); | ||
887 | s390_reset_pgm_handler = NULL; | ||
887 | 888 | ||
888 | asm volatile( | 889 | /* The program check handler could have changed pgm_check_occured */ |
889 | " stsch 0(%2)\n" | 890 | barrier(); |
890 | " ipm %0\n" | ||
891 | " srl %0,28" | ||
892 | : "=d" (rc) | ||
893 | : "d" (reg1), "a" (addr), "m" (*addr) : "memory", "cc"); | ||
894 | 891 | ||
895 | s390_reset_pgm_handler = NULL; | ||
896 | if (pgm_check_occured) | 892 | if (pgm_check_occured) |
897 | return -EIO; | 893 | return -EIO; |
898 | else | 894 | else |