diff options
author | Cornelia Huck <cohuck@de.ibm.com> | 2006-01-06 03:19:25 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-06 11:33:52 -0500 |
commit | fb6958a594da49ece869793e6ec163b89fc5f79f (patch) | |
tree | 0746cc23ab13a059f9a34d7fc134aaf6410d07b8 /drivers/s390/cio/device_id.c | |
parent | 678a395b356a98368a93c3640252502b70c3676f (diff) |
[PATCH] s390: multiple subchannel sets support
Add support for multiple subchannel sets. Works with arbitrary devices in
subchannel set 1 and is transparent to device drivers. Although currently
only two subchannel sets are available, this will work with the architectured
maximum number of subchannel sets as well.
Signed-off-by: Cornelia Huck <cohuck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/s390/cio/device_id.c')
-rw-r--r-- | drivers/s390/cio/device_id.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/s390/cio/device_id.c b/drivers/s390/cio/device_id.c index 207881ec7aaf..3c77c3fd461d 100644 --- a/drivers/s390/cio/device_id.c +++ b/drivers/s390/cio/device_id.c | |||
@@ -256,16 +256,17 @@ ccw_device_check_sense_id(struct ccw_device *cdev) | |||
256 | * sense id information. So, for intervention required, | 256 | * sense id information. So, for intervention required, |
257 | * we use the "whack it until it talks" strategy... | 257 | * we use the "whack it until it talks" strategy... |
258 | */ | 258 | */ |
259 | CIO_MSG_EVENT(2, "SenseID : device %04x on Subchannel %04x " | 259 | CIO_MSG_EVENT(2, "SenseID : device %04x on Subchannel " |
260 | "reports cmd reject\n", | 260 | "0.%x.%04x reports cmd reject\n", |
261 | cdev->private->devno, sch->schid.sch_no); | 261 | cdev->private->devno, sch->schid.ssid, |
262 | sch->schid.sch_no); | ||
262 | return -EOPNOTSUPP; | 263 | return -EOPNOTSUPP; |
263 | } | 264 | } |
264 | if (irb->esw.esw0.erw.cons) { | 265 | if (irb->esw.esw0.erw.cons) { |
265 | CIO_MSG_EVENT(2, "SenseID : UC on dev %04x, " | 266 | CIO_MSG_EVENT(2, "SenseID : UC on dev 0.%x.%04x, " |
266 | "lpum %02X, cnt %02d, sns :" | 267 | "lpum %02X, cnt %02d, sns :" |
267 | " %02X%02X%02X%02X %02X%02X%02X%02X ...\n", | 268 | " %02X%02X%02X%02X %02X%02X%02X%02X ...\n", |
268 | cdev->private->devno, | 269 | cdev->private->ssid, cdev->private->devno, |
269 | irb->esw.esw0.sublog.lpum, | 270 | irb->esw.esw0.sublog.lpum, |
270 | irb->esw.esw0.erw.scnt, | 271 | irb->esw.esw0.erw.scnt, |
271 | irb->ecw[0], irb->ecw[1], | 272 | irb->ecw[0], irb->ecw[1], |
@@ -277,16 +278,17 @@ ccw_device_check_sense_id(struct ccw_device *cdev) | |||
277 | if (irb->scsw.cc == 3) { | 278 | if (irb->scsw.cc == 3) { |
278 | if ((sch->orb.lpm & | 279 | if ((sch->orb.lpm & |
279 | sch->schib.pmcw.pim & sch->schib.pmcw.pam) != 0) | 280 | sch->schib.pmcw.pim & sch->schib.pmcw.pam) != 0) |
280 | CIO_MSG_EVENT(2, "SenseID : path %02X for device %04x on" | 281 | CIO_MSG_EVENT(2, "SenseID : path %02X for device %04x " |
281 | " subchannel %04x is 'not operational'\n", | 282 | "on subchannel 0.%x.%04x is " |
282 | sch->orb.lpm, cdev->private->devno, | 283 | "'not operational'\n", sch->orb.lpm, |
284 | cdev->private->devno, sch->schid.ssid, | ||
283 | sch->schid.sch_no); | 285 | sch->schid.sch_no); |
284 | return -EACCES; | 286 | return -EACCES; |
285 | } | 287 | } |
286 | /* Hmm, whatever happened, try again. */ | 288 | /* Hmm, whatever happened, try again. */ |
287 | CIO_MSG_EVENT(2, "SenseID : start_IO() for device %04x on " | 289 | CIO_MSG_EVENT(2, "SenseID : start_IO() for device %04x on " |
288 | "subchannel %04x returns status %02X%02X\n", | 290 | "subchannel 0.%x.%04x returns status %02X%02X\n", |
289 | cdev->private->devno, sch->schid.sch_no, | 291 | cdev->private->devno, sch->schid.ssid, sch->schid.sch_no, |
290 | irb->scsw.dstat, irb->scsw.cstat); | 292 | irb->scsw.dstat, irb->scsw.cstat); |
291 | return -EAGAIN; | 293 | return -EAGAIN; |
292 | } | 294 | } |