[S390] pm: io subchannel driver power management callbacks
authorCornelia Huck <cornelia.huck@de.ibm.com>
Tue, 16 Jun 2009 08:30:23 +0000 (10:30 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 16 Jun 2009 08:31:09 +0000 (10:31 +0200)
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/cio/device.c

index 228a6c314d8494cb41e593859a42d0fdec077d01..64bd79ac25a78e861afe8201b8ee4379ef8bed63 100644 (file)
@@ -138,6 +138,19 @@ static struct css_device_id io_subchannel_ids[] = {
 };
 MODULE_DEVICE_TABLE(css, io_subchannel_ids);
 
+static int io_subchannel_prepare(struct subchannel *sch)
+{
+       struct ccw_device *cdev;
+       /*
+        * Don't allow suspend while a ccw device registration
+        * is still outstanding.
+        */
+       cdev = sch_get_cdev(sch);
+       if (cdev && !device_is_registered(&cdev->dev))
+               return -EAGAIN;
+       return 0;
+}
+
 static struct css_driver io_subchannel_driver = {
        .owner = THIS_MODULE,
        .subchannel_type = io_subchannel_ids,
@@ -148,6 +161,7 @@ static struct css_driver io_subchannel_driver = {
        .probe = io_subchannel_probe,
        .remove = io_subchannel_remove,
        .shutdown = io_subchannel_shutdown,
+       .prepare = io_subchannel_prepare,
 };
 
 struct workqueue_struct *ccw_device_work;