diff options
| -rw-r--r-- | drivers/s390/cio/device_pgid.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/s390/cio/device_pgid.c b/drivers/s390/cio/device_pgid.c index 0adac8a67331..757b2706d5a9 100644 --- a/drivers/s390/cio/device_pgid.c +++ b/drivers/s390/cio/device_pgid.c | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include "cio_debug.h" | 22 | #include "cio_debug.h" |
| 23 | #include "css.h" | 23 | #include "css.h" |
| 24 | #include "device.h" | 24 | #include "device.h" |
| 25 | #include "ioasm.h" | ||
| 25 | 26 | ||
| 26 | /* | 27 | /* |
| 27 | * Start Sense Path Group ID helper function. Used in ccw_device_recog | 28 | * Start Sense Path Group ID helper function. Used in ccw_device_recog |
| @@ -364,8 +365,22 @@ ccw_device_verify_irq(struct ccw_device *cdev, enum dev_event dev_event) | |||
| 364 | void | 365 | void |
| 365 | ccw_device_verify_start(struct ccw_device *cdev) | 366 | ccw_device_verify_start(struct ccw_device *cdev) |
| 366 | { | 367 | { |
| 368 | struct subchannel *sch = to_subchannel(cdev->dev.parent); | ||
| 369 | |||
| 367 | cdev->private->flags.pgid_single = 0; | 370 | cdev->private->flags.pgid_single = 0; |
| 368 | cdev->private->iretry = 5; | 371 | cdev->private->iretry = 5; |
| 372 | /* | ||
| 373 | * Update sch->lpm with current values to catch paths becoming | ||
| 374 | * available again. | ||
| 375 | */ | ||
| 376 | if (stsch(sch->irq, &sch->schib)) { | ||
| 377 | ccw_device_verify_done(cdev, -ENODEV); | ||
| 378 | return; | ||
| 379 | } | ||
| 380 | sch->lpm = sch->schib.pmcw.pim & | ||
| 381 | sch->schib.pmcw.pam & | ||
| 382 | sch->schib.pmcw.pom & | ||
| 383 | sch->opm; | ||
| 369 | __ccw_device_verify_start(cdev); | 384 | __ccw_device_verify_start(cdev); |
| 370 | } | 385 | } |
| 371 | 386 | ||
