diff options
Diffstat (limited to 'drivers/s390/cio/device.c')
-rw-r--r-- | drivers/s390/cio/device.c | 11 |
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 | ||
161 | static void io_subchannel_settle(void) | 161 | static 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 | ||
168 | static struct css_driver io_subchannel_driver = { | 173 | static struct css_driver io_subchannel_driver = { |