Lines Matching refs:cdev

37 static void ccw_timeout_log(struct ccw_device *cdev)  in ccw_timeout_log()  argument
45 sch = to_subchannel(cdev->dev.parent); in ccw_timeout_log()
56 dev_name(&cdev->dev)); in ccw_timeout_log()
71 (void *)(addr_t)orb->cmd.cpa == cdev->private->iccws) in ccw_timeout_log()
82 cdev->private->state); in ccw_timeout_log()
89 &cdev->private->flags, sizeof(cdev->private->flags), 0); in ccw_timeout_log()
99 struct ccw_device *cdev = priv->cdev; in ccw_device_timeout() local
101 spin_lock_irq(cdev->ccwlock); in ccw_device_timeout()
103 ccw_timeout_log(cdev); in ccw_device_timeout()
104 dev_fsm_event(cdev, DEV_EVENT_TIMEOUT); in ccw_device_timeout()
105 spin_unlock_irq(cdev->ccwlock); in ccw_device_timeout()
112 ccw_device_set_timeout(struct ccw_device *cdev, int expires) in ccw_device_set_timeout() argument
115 del_timer(&cdev->private->timer); in ccw_device_set_timeout()
118 if (timer_pending(&cdev->private->timer)) { in ccw_device_set_timeout()
119 if (mod_timer(&cdev->private->timer, jiffies + expires)) in ccw_device_set_timeout()
122 cdev->private->timer.expires = jiffies + expires; in ccw_device_set_timeout()
123 add_timer(&cdev->private->timer); in ccw_device_set_timeout()
127 ccw_device_cancel_halt_clear(struct ccw_device *cdev) in ccw_device_cancel_halt_clear() argument
132 sch = to_subchannel(cdev->dev.parent); in ccw_device_cancel_halt_clear()
133 ret = cio_cancel_halt_clear(sch, &cdev->private->iretry); in ccw_device_cancel_halt_clear()
137 cdev->private->dev_id.ssid, in ccw_device_cancel_halt_clear()
138 cdev->private->dev_id.devno); in ccw_device_cancel_halt_clear()
143 void ccw_device_update_sense_data(struct ccw_device *cdev) in ccw_device_update_sense_data() argument
145 memset(&cdev->id, 0, sizeof(cdev->id)); in ccw_device_update_sense_data()
146 cdev->id.cu_type = cdev->private->senseid.cu_type; in ccw_device_update_sense_data()
147 cdev->id.cu_model = cdev->private->senseid.cu_model; in ccw_device_update_sense_data()
148 cdev->id.dev_type = cdev->private->senseid.dev_type; in ccw_device_update_sense_data()
149 cdev->id.dev_model = cdev->private->senseid.dev_model; in ccw_device_update_sense_data()
152 int ccw_device_test_sense_data(struct ccw_device *cdev) in ccw_device_test_sense_data() argument
154 return cdev->id.cu_type == cdev->private->senseid.cu_type && in ccw_device_test_sense_data()
155 cdev->id.cu_model == cdev->private->senseid.cu_model && in ccw_device_test_sense_data()
156 cdev->id.dev_type == cdev->private->senseid.dev_type && in ccw_device_test_sense_data()
157 cdev->id.dev_model == cdev->private->senseid.dev_model; in ccw_device_test_sense_data()
188 ccw_device_recog_done(struct ccw_device *cdev, int state) in ccw_device_recog_done() argument
193 sch = to_subchannel(cdev->dev.parent); in ccw_device_recog_done()
209 if (cdev->private->state == DEV_STATE_DISCONNECTED_SENSE_ID) in ccw_device_recog_done()
214 if (cdev->private->state == DEV_STATE_DISCONNECTED_SENSE_ID && in ccw_device_recog_done()
216 cdev->private->flags.recog_done = 1; in ccw_device_recog_done()
217 cdev->private->state = DEV_STATE_DISCONNECTED; in ccw_device_recog_done()
218 wake_up(&cdev->private->wait_q); in ccw_device_recog_done()
221 if (cdev->private->flags.resuming) { in ccw_device_recog_done()
222 cdev->private->state = state; in ccw_device_recog_done()
223 cdev->private->flags.recog_done = 1; in ccw_device_recog_done()
224 wake_up(&cdev->private->wait_q); in ccw_device_recog_done()
231 if (!cdev->online) { in ccw_device_recog_done()
232 ccw_device_update_sense_data(cdev); in ccw_device_recog_done()
235 cdev->private->state = DEV_STATE_OFFLINE; in ccw_device_recog_done()
236 cdev->private->flags.recog_done = 1; in ccw_device_recog_done()
237 if (ccw_device_test_sense_data(cdev)) { in ccw_device_recog_done()
238 cdev->private->flags.donotify = 1; in ccw_device_recog_done()
239 ccw_device_online(cdev); in ccw_device_recog_done()
240 wake_up(&cdev->private->wait_q); in ccw_device_recog_done()
242 ccw_device_update_sense_data(cdev); in ccw_device_recog_done()
243 ccw_device_sched_todo(cdev, CDEV_TODO_REBIND); in ccw_device_recog_done()
247 if (cdev->id.cu_type != 0) { /* device was recognized before */ in ccw_device_recog_done()
248 cdev->private->flags.recog_done = 1; in ccw_device_recog_done()
249 cdev->private->state = DEV_STATE_BOXED; in ccw_device_recog_done()
250 wake_up(&cdev->private->wait_q); in ccw_device_recog_done()
255 cdev->private->state = state; in ccw_device_recog_done()
256 io_subchannel_recog_done(cdev); in ccw_device_recog_done()
257 wake_up(&cdev->private->wait_q); in ccw_device_recog_done()
264 ccw_device_sense_id_done(struct ccw_device *cdev, int err) in ccw_device_sense_id_done() argument
268 ccw_device_recog_done(cdev, DEV_STATE_OFFLINE); in ccw_device_sense_id_done()
271 ccw_device_recog_done(cdev, DEV_STATE_BOXED); in ccw_device_sense_id_done()
274 ccw_device_recog_done(cdev, DEV_STATE_NOT_OPER); in ccw_device_sense_id_done()
290 int ccw_device_notify(struct ccw_device *cdev, int event) in ccw_device_notify() argument
294 if (!cdev->drv) in ccw_device_notify()
296 if (!cdev->online) in ccw_device_notify()
299 cdev->private->dev_id.ssid, cdev->private->dev_id.devno, in ccw_device_notify()
301 if (!cdev->drv->notify) { in ccw_device_notify()
305 if (cdev->drv->notify(cdev, event)) in ccw_device_notify()
313 static void ccw_device_oper_notify(struct ccw_device *cdev) in ccw_device_oper_notify() argument
315 struct subchannel *sch = to_subchannel(cdev->dev.parent); in ccw_device_oper_notify()
317 if (ccw_device_notify(cdev, CIO_OPER) == NOTIFY_OK) { in ccw_device_oper_notify()
319 ccw_device_sched_todo(cdev, CDEV_TODO_ENABLE_CMF); in ccw_device_oper_notify()
321 cdev->private->path_new_mask = sch->vpm; in ccw_device_oper_notify()
325 ccw_device_set_notoper(cdev); in ccw_device_oper_notify()
326 ccw_device_sched_todo(cdev, CDEV_TODO_REBIND); in ccw_device_oper_notify()
333 ccw_device_done(struct ccw_device *cdev, int state) in ccw_device_done() argument
337 sch = to_subchannel(cdev->dev.parent); in ccw_device_done()
339 ccw_device_set_timeout(cdev, 0); in ccw_device_done()
345 memset(&cdev->private->irb, 0, sizeof(struct irb)); in ccw_device_done()
347 cdev->private->state = state; in ccw_device_done()
352 cdev->private->dev_id.devno, sch->schid.sch_no); in ccw_device_done()
353 if (cdev->online && in ccw_device_done()
354 ccw_device_notify(cdev, CIO_BOXED) != NOTIFY_OK) in ccw_device_done()
355 ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); in ccw_device_done()
356 cdev->private->flags.donotify = 0; in ccw_device_done()
360 cdev->private->dev_id.devno, sch->schid.sch_no); in ccw_device_done()
361 if (ccw_device_notify(cdev, CIO_GONE) != NOTIFY_OK) in ccw_device_done()
362 ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); in ccw_device_done()
364 ccw_device_set_disconnected(cdev); in ccw_device_done()
365 cdev->private->flags.donotify = 0; in ccw_device_done()
369 "%04x\n", cdev->private->dev_id.devno, in ccw_device_done()
371 if (ccw_device_notify(cdev, CIO_NO_PATH) != NOTIFY_OK) { in ccw_device_done()
372 cdev->private->state = DEV_STATE_NOT_OPER; in ccw_device_done()
373 ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); in ccw_device_done()
375 ccw_device_set_disconnected(cdev); in ccw_device_done()
376 cdev->private->flags.donotify = 0; in ccw_device_done()
382 if (cdev->private->flags.donotify) { in ccw_device_done()
383 cdev->private->flags.donotify = 0; in ccw_device_done()
384 ccw_device_oper_notify(cdev); in ccw_device_done()
386 wake_up(&cdev->private->wait_q); in ccw_device_done()
392 void ccw_device_recognition(struct ccw_device *cdev) in ccw_device_recognition() argument
394 struct subchannel *sch = to_subchannel(cdev->dev.parent); in ccw_device_recognition()
404 cdev->private->flags.recog_done = 0; in ccw_device_recognition()
405 cdev->private->state = DEV_STATE_SENSE_ID; in ccw_device_recognition()
407 ccw_device_recog_done(cdev, DEV_STATE_NOT_OPER); in ccw_device_recognition()
410 ccw_device_sense_id_start(cdev); in ccw_device_recognition()
416 static void ccw_device_request_event(struct ccw_device *cdev, enum dev_event e) in ccw_device_request_event() argument
420 ccw_request_notoper(cdev); in ccw_device_request_event()
423 ccw_request_handler(cdev); in ccw_device_request_event()
426 ccw_request_timeout(cdev); in ccw_device_request_event()
433 static void ccw_device_report_path_events(struct ccw_device *cdev) in ccw_device_report_path_events() argument
435 struct subchannel *sch = to_subchannel(cdev->dev.parent); in ccw_device_report_path_events()
441 if (mask & cdev->private->path_gone_mask & ~(sch->vpm)) in ccw_device_report_path_events()
443 if (mask & cdev->private->path_new_mask & sch->vpm) in ccw_device_report_path_events()
445 if (mask & cdev->private->pgid_reset_mask & sch->vpm) in ccw_device_report_path_events()
448 if (cdev->online && cdev->drv->path_event) in ccw_device_report_path_events()
449 cdev->drv->path_event(cdev, path_event); in ccw_device_report_path_events()
452 static void ccw_device_reset_path_events(struct ccw_device *cdev) in ccw_device_reset_path_events() argument
454 cdev->private->path_gone_mask = 0; in ccw_device_reset_path_events()
455 cdev->private->path_new_mask = 0; in ccw_device_reset_path_events()
456 cdev->private->pgid_reset_mask = 0; in ccw_device_reset_path_events()
478 static void ccw_device_handle_broken_paths(struct ccw_device *cdev) in ccw_device_handle_broken_paths() argument
480 struct subchannel *sch = to_subchannel(cdev->dev.parent); in ccw_device_handle_broken_paths()
483 if (broken_paths && (cdev->private->path_broken_mask != broken_paths)) in ccw_device_handle_broken_paths()
486 cdev->private->path_broken_mask = broken_paths; in ccw_device_handle_broken_paths()
489 void ccw_device_verify_done(struct ccw_device *cdev, int err) in ccw_device_verify_done() argument
493 sch = to_subchannel(cdev->dev.parent); in ccw_device_verify_done()
502 if (cdev->private->flags.doverify) { in ccw_device_verify_done()
503 ccw_device_verify_start(cdev); in ccw_device_verify_done()
509 ccw_device_done(cdev, DEV_STATE_ONLINE); in ccw_device_verify_done()
511 if (cdev->private->flags.fake_irb) { in ccw_device_verify_done()
512 create_fake_irb(&cdev->private->irb, in ccw_device_verify_done()
513 cdev->private->flags.fake_irb); in ccw_device_verify_done()
514 cdev->private->flags.fake_irb = 0; in ccw_device_verify_done()
515 if (cdev->handler) in ccw_device_verify_done()
516 cdev->handler(cdev, cdev->private->intparm, in ccw_device_verify_done()
517 &cdev->private->irb); in ccw_device_verify_done()
518 memset(&cdev->private->irb, 0, sizeof(struct irb)); in ccw_device_verify_done()
520 ccw_device_report_path_events(cdev); in ccw_device_verify_done()
521 ccw_device_handle_broken_paths(cdev); in ccw_device_verify_done()
526 cdev->private->flags.donotify = 0; in ccw_device_verify_done()
527 ccw_device_done(cdev, DEV_STATE_BOXED); in ccw_device_verify_done()
531 cdev->private->flags.donotify = 0; in ccw_device_verify_done()
532 ccw_device_done(cdev, DEV_STATE_DISCONNECTED); in ccw_device_verify_done()
536 cdev->private->flags.donotify = 0; in ccw_device_verify_done()
537 ccw_device_done(cdev, DEV_STATE_NOT_OPER); in ccw_device_verify_done()
540 ccw_device_reset_path_events(cdev); in ccw_device_verify_done()
547 ccw_device_online(struct ccw_device *cdev) in ccw_device_online() argument
552 if ((cdev->private->state != DEV_STATE_OFFLINE) && in ccw_device_online()
553 (cdev->private->state != DEV_STATE_BOXED)) in ccw_device_online()
555 sch = to_subchannel(cdev->dev.parent); in ccw_device_online()
560 dev_fsm_event(cdev, DEV_EVENT_NOTOPER); in ccw_device_online()
564 cdev->private->state = DEV_STATE_VERIFY; in ccw_device_online()
565 ccw_device_verify_start(cdev); in ccw_device_online()
570 ccw_device_disband_done(struct ccw_device *cdev, int err) in ccw_device_disband_done() argument
574 ccw_device_done(cdev, DEV_STATE_OFFLINE); in ccw_device_disband_done()
577 ccw_device_done(cdev, DEV_STATE_BOXED); in ccw_device_disband_done()
580 cdev->private->flags.donotify = 0; in ccw_device_disband_done()
581 ccw_device_done(cdev, DEV_STATE_NOT_OPER); in ccw_device_disband_done()
590 ccw_device_offline(struct ccw_device *cdev) in ccw_device_offline() argument
595 if (cdev->private->state == DEV_STATE_DISCONNECTED || in ccw_device_offline()
596 cdev->private->state == DEV_STATE_NOT_OPER) { in ccw_device_offline()
597 cdev->private->flags.donotify = 0; in ccw_device_offline()
598 ccw_device_done(cdev, DEV_STATE_NOT_OPER); in ccw_device_offline()
601 if (cdev->private->state == DEV_STATE_BOXED) { in ccw_device_offline()
602 ccw_device_done(cdev, DEV_STATE_BOXED); in ccw_device_offline()
605 if (ccw_device_is_orphan(cdev)) { in ccw_device_offline()
606 ccw_device_done(cdev, DEV_STATE_OFFLINE); in ccw_device_offline()
609 sch = to_subchannel(cdev->dev.parent); in ccw_device_offline()
614 if (cdev->private->state != DEV_STATE_ONLINE) in ccw_device_offline()
617 if (!cdev->private->flags.pgroup) { in ccw_device_offline()
619 ccw_device_done(cdev, DEV_STATE_OFFLINE); in ccw_device_offline()
623 cdev->private->state = DEV_STATE_DISBAND_PGID; in ccw_device_offline()
624 ccw_device_disband_start(cdev); in ccw_device_offline()
631 static void ccw_device_generic_notoper(struct ccw_device *cdev, in ccw_device_generic_notoper() argument
634 if (ccw_device_notify(cdev, CIO_GONE) != NOTIFY_OK) in ccw_device_generic_notoper()
635 ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); in ccw_device_generic_notoper()
637 ccw_device_set_disconnected(cdev); in ccw_device_generic_notoper()
643 static void ccw_device_offline_verify(struct ccw_device *cdev, in ccw_device_offline_verify() argument
646 struct subchannel *sch = to_subchannel(cdev->dev.parent); in ccw_device_offline_verify()
655 ccw_device_online_verify(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_online_verify() argument
659 if (cdev->private->state == DEV_STATE_W4SENSE) { in ccw_device_online_verify()
660 cdev->private->flags.doverify = 1; in ccw_device_online_verify()
663 sch = to_subchannel(cdev->dev.parent); in ccw_device_online_verify()
669 ccw_device_verify_done(cdev, -ENODEV); in ccw_device_online_verify()
675 (scsw_stctl(&cdev->private->irb.scsw) & SCSW_STCTL_STATUS_PEND)) { in ccw_device_online_verify()
681 cdev->private->flags.doverify = 1; in ccw_device_online_verify()
685 cdev->private->state = DEV_STATE_VERIFY; in ccw_device_online_verify()
686 ccw_device_verify_start(cdev); in ccw_device_online_verify()
692 static void ccw_device_boxed_verify(struct ccw_device *cdev, in ccw_device_boxed_verify() argument
695 struct subchannel *sch = to_subchannel(cdev->dev.parent); in ccw_device_boxed_verify()
697 if (cdev->online) { in ccw_device_boxed_verify()
699 ccw_device_done(cdev, DEV_STATE_NOT_OPER); in ccw_device_boxed_verify()
701 ccw_device_online_verify(cdev, dev_event); in ccw_device_boxed_verify()
709 static int ccw_device_call_handler(struct ccw_device *cdev) in ccw_device_call_handler() argument
722 stctl = scsw_stctl(&cdev->private->irb.scsw); in ccw_device_call_handler()
727 !cdev->private->options.repall && in ccw_device_call_handler()
729 !(cdev->private->options.fast && in ccw_device_call_handler()
734 ccw_device_set_timeout(cdev, 0); in ccw_device_call_handler()
736 if (cdev->handler) in ccw_device_call_handler()
737 cdev->handler(cdev, cdev->private->intparm, in ccw_device_call_handler()
738 &cdev->private->irb); in ccw_device_call_handler()
740 memset(&cdev->private->irb, 0, sizeof(struct irb)); in ccw_device_call_handler()
748 ccw_device_irq(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_irq() argument
760 if (ccw_device_do_sense(cdev, irb) != 0) in ccw_device_irq()
762 memcpy(&cdev->private->irb, irb, sizeof(struct irb)); in ccw_device_irq()
763 cdev->private->state = DEV_STATE_W4SENSE; in ccw_device_irq()
764 cdev->private->intparm = 0; in ccw_device_irq()
768 if (cdev->handler) in ccw_device_irq()
769 cdev->handler (cdev, 0, irb); in ccw_device_irq()
770 if (cdev->private->flags.doverify) in ccw_device_irq()
771 ccw_device_online_verify(cdev, 0); in ccw_device_irq()
775 ccw_device_accumulate_irb(cdev, irb); in ccw_device_irq()
776 if (is_cmd && cdev->private->flags.dosense) { in ccw_device_irq()
777 if (ccw_device_do_sense(cdev, irb) == 0) { in ccw_device_irq()
778 cdev->private->state = DEV_STATE_W4SENSE; in ccw_device_irq()
783 if (ccw_device_call_handler(cdev) && cdev->private->flags.doverify) in ccw_device_irq()
785 ccw_device_online_verify(cdev, 0); in ccw_device_irq()
792 ccw_device_online_timeout(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_online_timeout() argument
796 ccw_device_set_timeout(cdev, 0); in ccw_device_online_timeout()
797 cdev->private->iretry = 255; in ccw_device_online_timeout()
798 cdev->private->async_kill_io_rc = -ETIMEDOUT; in ccw_device_online_timeout()
799 ret = ccw_device_cancel_halt_clear(cdev); in ccw_device_online_timeout()
801 ccw_device_set_timeout(cdev, 3*HZ); in ccw_device_online_timeout()
802 cdev->private->state = DEV_STATE_TIMEOUT_KILL; in ccw_device_online_timeout()
806 dev_fsm_event(cdev, DEV_EVENT_NOTOPER); in ccw_device_online_timeout()
807 else if (cdev->handler) in ccw_device_online_timeout()
808 cdev->handler(cdev, cdev->private->intparm, in ccw_device_online_timeout()
816 ccw_device_w4sense(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_w4sense() argument
826 ccw_device_do_sense(cdev, irb); in ccw_device_w4sense()
830 cdev->private->dev_id.ssid, in ccw_device_w4sense()
831 cdev->private->dev_id.devno); in ccw_device_w4sense()
832 if (cdev->handler) in ccw_device_w4sense()
833 cdev->handler (cdev, 0, irb); in ccw_device_w4sense()
844 cdev->private->flags.dosense = 0; in ccw_device_w4sense()
845 memset(&cdev->private->irb, 0, sizeof(struct irb)); in ccw_device_w4sense()
846 ccw_device_accumulate_irb(cdev, irb); in ccw_device_w4sense()
850 ccw_device_accumulate_basic_sense(cdev, irb); in ccw_device_w4sense()
851 if (cdev->private->flags.dosense) { in ccw_device_w4sense()
853 ccw_device_do_sense(cdev, irb); in ccw_device_w4sense()
857 cdev->private->state = DEV_STATE_ONLINE; in ccw_device_w4sense()
859 wake_up(&cdev->private->wait_q); in ccw_device_w4sense()
861 if (ccw_device_call_handler(cdev) && cdev->private->flags.doverify) in ccw_device_w4sense()
863 ccw_device_online_verify(cdev, 0); in ccw_device_w4sense()
867 ccw_device_killing_irq(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_killing_irq() argument
869 ccw_device_set_timeout(cdev, 0); in ccw_device_killing_irq()
871 ccw_device_online_verify(cdev, 0); in ccw_device_killing_irq()
873 if (cdev->handler) in ccw_device_killing_irq()
874 cdev->handler(cdev, cdev->private->intparm, in ccw_device_killing_irq()
875 ERR_PTR(cdev->private->async_kill_io_rc)); in ccw_device_killing_irq()
879 ccw_device_killing_timeout(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_killing_timeout() argument
883 ret = ccw_device_cancel_halt_clear(cdev); in ccw_device_killing_timeout()
885 ccw_device_set_timeout(cdev, 3*HZ); in ccw_device_killing_timeout()
889 ccw_device_online_verify(cdev, 0); in ccw_device_killing_timeout()
890 if (cdev->handler) in ccw_device_killing_timeout()
891 cdev->handler(cdev, cdev->private->intparm, in ccw_device_killing_timeout()
892 ERR_PTR(cdev->private->async_kill_io_rc)); in ccw_device_killing_timeout()
895 void ccw_device_kill_io(struct ccw_device *cdev) in ccw_device_kill_io() argument
899 ccw_device_set_timeout(cdev, 0); in ccw_device_kill_io()
900 cdev->private->iretry = 255; in ccw_device_kill_io()
901 cdev->private->async_kill_io_rc = -EIO; in ccw_device_kill_io()
902 ret = ccw_device_cancel_halt_clear(cdev); in ccw_device_kill_io()
904 ccw_device_set_timeout(cdev, 3*HZ); in ccw_device_kill_io()
905 cdev->private->state = DEV_STATE_TIMEOUT_KILL; in ccw_device_kill_io()
909 ccw_device_online_verify(cdev, 0); in ccw_device_kill_io()
910 if (cdev->handler) in ccw_device_kill_io()
911 cdev->handler(cdev, cdev->private->intparm, in ccw_device_kill_io()
916 ccw_device_delay_verify(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_delay_verify() argument
919 cdev->private->flags.doverify = 1; in ccw_device_delay_verify()
923 ccw_device_start_id(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_start_id() argument
927 sch = to_subchannel(cdev->dev.parent); in ccw_device_start_id()
931 cdev->private->state = DEV_STATE_DISCONNECTED_SENSE_ID; in ccw_device_start_id()
932 ccw_device_sense_id_start(cdev); in ccw_device_start_id()
935 void ccw_device_trigger_reprobe(struct ccw_device *cdev) in ccw_device_trigger_reprobe() argument
939 if (cdev->private->state != DEV_STATE_DISCONNECTED) in ccw_device_trigger_reprobe()
942 sch = to_subchannel(cdev->dev.parent); in ccw_device_trigger_reprobe()
961 if (sch->schib.pmcw.dev != cdev->private->dev_id.devno) in ccw_device_trigger_reprobe()
964 ccw_device_start_id(cdev, 0); in ccw_device_trigger_reprobe()
967 static void ccw_device_disabled_irq(struct ccw_device *cdev, in ccw_device_disabled_irq() argument
972 sch = to_subchannel(cdev->dev.parent); in ccw_device_disabled_irq()
981 ccw_device_change_cmfstate(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_change_cmfstate() argument
983 retry_set_schib(cdev); in ccw_device_change_cmfstate()
984 cdev->private->state = DEV_STATE_ONLINE; in ccw_device_change_cmfstate()
985 dev_fsm_event(cdev, dev_event); in ccw_device_change_cmfstate()
988 static void ccw_device_update_cmfblock(struct ccw_device *cdev, in ccw_device_update_cmfblock() argument
991 cmf_retry_copy_block(cdev); in ccw_device_update_cmfblock()
992 cdev->private->state = DEV_STATE_ONLINE; in ccw_device_update_cmfblock()
993 dev_fsm_event(cdev, dev_event); in ccw_device_update_cmfblock()
997 ccw_device_quiesce_done(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_quiesce_done() argument
999 ccw_device_set_timeout(cdev, 0); in ccw_device_quiesce_done()
1000 cdev->private->state = DEV_STATE_NOT_OPER; in ccw_device_quiesce_done()
1001 wake_up(&cdev->private->wait_q); in ccw_device_quiesce_done()
1005 ccw_device_quiesce_timeout(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_quiesce_timeout() argument
1009 ret = ccw_device_cancel_halt_clear(cdev); in ccw_device_quiesce_timeout()
1011 ccw_device_set_timeout(cdev, HZ/10); in ccw_device_quiesce_timeout()
1013 cdev->private->state = DEV_STATE_NOT_OPER; in ccw_device_quiesce_timeout()
1014 wake_up(&cdev->private->wait_q); in ccw_device_quiesce_timeout()
1023 ccw_device_nop(struct ccw_device *cdev, enum dev_event dev_event) in ccw_device_nop() argument