From 4ff4abf8a92d63d2d90ce6b97c5e85813921fef8 Mon Sep 17 00:00:00 2001 From: Cornelia Huck Date: Tue, 16 Jun 2009 10:30:23 +0200 Subject: [PATCH] --- yaml --- r: 151099 b: refs/heads/master c: 93a275921daf83e6e4efbafdd82712bcaa93f491 h: refs/heads/master i: 151097: ca2af42cabc36c40b0a60cd6ac9237237af97610 151095: 0baa2cb984e33d5df9ec06ef79e4ea73860d83fd v: v3 --- [refs] | 2 +- trunk/drivers/s390/cio/device.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 4d543a92cc46..8d19512b8a32 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dcbd16d5111258df7c821ec1e4124fe6ffbf3c16 +refs/heads/master: 93a275921daf83e6e4efbafdd82712bcaa93f491 diff --git a/trunk/drivers/s390/cio/device.c b/trunk/drivers/s390/cio/device.c index 228a6c314d84..64bd79ac25a7 100644 --- a/trunk/drivers/s390/cio/device.c +++ b/trunk/drivers/s390/cio/device.c @@ -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;