/*
* drivers/s390/cio/css.c
* driver for channel subsystem
- * $Revision: 1.73 $
+ * $Revision: 1.74 $
*
* Copyright (C) 2002 IBM Deutschland Entwicklung GmbH,
* IBM Corporation
* We don't notify the driver since we have to throw the device
* away in any case.
*/
- device_unregister(&sch->dev);
- /* Reset intparm to zeroes. */
- sch->schib.pmcw.intparm = 0;
- cio_modify(sch);
- put_device(&sch->dev);
- ret = css_probe_device(irq);
+ if (!disc) {
+ device_unregister(&sch->dev);
+ /* Reset intparm to zeroes. */
+ sch->schib.pmcw.intparm = 0;
+ cio_modify(sch);
+ put_device(&sch->dev);
+ ret = css_probe_device(irq);
+ } else {
+ /*
+ * We can't immediately deregister the disconnected
+ * device since it might block.
+ */
+ device_trigger_reprobe(sch);
+ ret = 0;
+ }
break;
case CIO_OPER:
if (disc)