aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/device.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/cio/device.c')
-rw-r--r--drivers/s390/cio/device.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c
index 9c9ea45141a..6aa2f069c6b 100644
--- a/drivers/s390/cio/device.c
+++ b/drivers/s390/cio/device.c
@@ -158,11 +158,16 @@ static int io_subchannel_prepare(struct subchannel *sch)
158 return 0; 158 return 0;
159} 159}
160 160
161static void io_subchannel_settle(void) 161static int io_subchannel_settle(void)
162{ 162{
163 wait_event(ccw_device_init_wq, 163 int ret;
164 atomic_read(&ccw_device_init_count) == 0); 164
165 ret = wait_event_interruptible(ccw_device_init_wq,
166 atomic_read(&ccw_device_init_count) == 0);
167 if (ret)
168 return -EINTR;
165 flush_workqueue(cio_work_q); 169 flush_workqueue(cio_work_q);
170 return 0;
166} 171}
167 172
168static struct css_driver io_subchannel_driver = { 173static struct css_driver io_subchannel_driver = {