Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] s390: re-activated path detection

If we receive path not operational indications (pnom in pmcw nonzero), we
switch off those paths. To catch them becoming available again, we have to
recalculate the lpm from the pmcw each time we start path verification.

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>

authored by

Cornelia Huck and committed by
Linus Torvalds
6810a2bc 089545f0

+15
+15
drivers/s390/cio/device_pgid.c
··· 22 22 #include "cio_debug.h" 23 23 #include "css.h" 24 24 #include "device.h" 25 + #include "ioasm.h" 25 26 26 27 /* 27 28 * Start Sense Path Group ID helper function. Used in ccw_device_recog ··· 365 364 void 366 365 ccw_device_verify_start(struct ccw_device *cdev) 367 366 { 367 + struct subchannel *sch = to_subchannel(cdev->dev.parent); 368 + 368 369 cdev->private->flags.pgid_single = 0; 369 370 cdev->private->iretry = 5; 371 + /* 372 + * Update sch->lpm with current values to catch paths becoming 373 + * available again. 374 + */ 375 + if (stsch(sch->irq, &sch->schib)) { 376 + ccw_device_verify_done(cdev, -ENODEV); 377 + return; 378 + } 379 + sch->lpm = sch->schib.pmcw.pim & 380 + sch->schib.pmcw.pam & 381 + sch->schib.pmcw.pom & 382 + sch->opm; 370 383 __ccw_device_verify_start(cdev); 371 384 } 372 385