aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/s390/cio/device_fsm.c19
-rw-r--r--drivers/s390/cio/device_pgid.c2
2 files changed, 10 insertions, 11 deletions
diff --git a/drivers/s390/cio/device_fsm.c b/drivers/s390/cio/device_fsm.c
index 83adb919648f..a70c46c8b4bc 100644
--- a/drivers/s390/cio/device_fsm.c
+++ b/drivers/s390/cio/device_fsm.c
@@ -549,9 +549,8 @@ ccw_device_verify_done(struct ccw_device *cdev, int err)
549 sch = to_subchannel(cdev->dev.parent); 549 sch = to_subchannel(cdev->dev.parent);
550 /* Update schib - pom may have changed. */ 550 /* Update schib - pom may have changed. */
551 if (cio_update_schib(sch)) { 551 if (cio_update_schib(sch)) {
552 cdev->private->flags.donotify = 0; 552 err = -ENODEV;
553 ccw_device_done(cdev, DEV_STATE_NOT_OPER); 553 goto callback;
554 return;
555 } 554 }
556 /* Update lpm with verified path mask. */ 555 /* Update lpm with verified path mask. */
557 sch->lpm = sch->vpm; 556 sch->lpm = sch->vpm;
@@ -561,9 +560,8 @@ ccw_device_verify_done(struct ccw_device *cdev, int err)
561 ccw_device_verify_start(cdev); 560 ccw_device_verify_start(cdev);
562 return; 561 return;
563 } 562 }
563callback:
564 switch (err) { 564 switch (err) {
565 case -EOPNOTSUPP: /* path grouping not supported, just set online. */
566 cdev->private->options.pgroup = 0;
567 case 0: 565 case 0:
568 ccw_device_done(cdev, DEV_STATE_ONLINE); 566 ccw_device_done(cdev, DEV_STATE_ONLINE);
569 /* Deliver fake irb to device driver, if needed. */ 567 /* Deliver fake irb to device driver, if needed. */
@@ -586,14 +584,15 @@ ccw_device_verify_done(struct ccw_device *cdev, int err)
586 cdev->private->flags.donotify = 0; 584 cdev->private->flags.donotify = 0;
587 ccw_device_done(cdev, DEV_STATE_BOXED); 585 ccw_device_done(cdev, DEV_STATE_BOXED);
588 break; 586 break;
587 case -EACCES:
588 /* Reset oper notify indication after verify error. */
589 cdev->private->flags.donotify = 0;
590 ccw_device_done(cdev, DEV_STATE_DISCONNECTED);
591 break;
589 default: 592 default:
590 /* Reset oper notify indication after verify error. */ 593 /* Reset oper notify indication after verify error. */
591 cdev->private->flags.donotify = 0; 594 cdev->private->flags.donotify = 0;
592 if (cdev->online) { 595 ccw_device_done(cdev, DEV_STATE_NOT_OPER);
593 ccw_device_set_timeout(cdev, 0);
594 dev_fsm_event(cdev, DEV_EVENT_NOTOPER);
595 } else
596 ccw_device_done(cdev, DEV_STATE_NOT_OPER);
597 break; 596 break;
598 } 597 }
599} 598}
diff --git a/drivers/s390/cio/device_pgid.c b/drivers/s390/cio/device_pgid.c
index fc5ca1dd52b3..cb27bd4cc231 100644
--- a/drivers/s390/cio/device_pgid.c
+++ b/drivers/s390/cio/device_pgid.c
@@ -423,7 +423,7 @@ __ccw_device_verify_start(struct ccw_device *cdev)
423 /* Permanent path failure, try next. */ 423 /* Permanent path failure, try next. */
424 } 424 }
425 /* Done with all paths. */ 425 /* Done with all paths. */
426 ccw_device_verify_done(cdev, (sch->vpm != 0) ? 0 : -ENODEV); 426 ccw_device_verify_done(cdev, (sch->vpm != 0) ? 0 : -EACCES);
427} 427}
428 428
429/* 429/*