diff options
author | Sebastian Ott <sebott@linux.vnet.ibm.com> | 2009-03-31 13:16:05 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-03-31 13:17:06 -0400 |
commit | 47593bfa1056d306fde067b28dd8617009be4121 (patch) | |
tree | 3bbad2e48bb773ac4b6f8e0efb4214c75cede7f5 /drivers/s390/cio/device.c | |
parent | c4621a62649a56f155a96dfc5de479be226f0768 (diff) |
[S390] cio: introduce notifier for boxed state
If a ccw device did not respond in time during internal io, we set it
into boxed state. With this patch we have the following behaviour:
* the ccw driver will get a notification if the device was online and
goes into the boxed state
* if the device was disconnected and got boxed nothing special is to be
done (it will be handled in reprobing later)
* if the device got boxed while initial sensing it will be unregistered
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/device.c')
-rw-r--r-- | drivers/s390/cio/device.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index cdbf664ed446..868f8c6b053a 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c | |||
@@ -1035,6 +1035,8 @@ io_subchannel_recog_done(struct ccw_device *cdev) | |||
1035 | return; | 1035 | return; |
1036 | } | 1036 | } |
1037 | switch (cdev->private->state) { | 1037 | switch (cdev->private->state) { |
1038 | case DEV_STATE_BOXED: | ||
1039 | /* Device did not respond in time. */ | ||
1038 | case DEV_STATE_NOT_OPER: | 1040 | case DEV_STATE_NOT_OPER: |
1039 | cdev->private->flags.recog_done = 1; | 1041 | cdev->private->flags.recog_done = 1; |
1040 | /* Remove device found not operational. */ | 1042 | /* Remove device found not operational. */ |
@@ -1044,8 +1046,6 @@ io_subchannel_recog_done(struct ccw_device *cdev) | |||
1044 | if (atomic_dec_and_test(&ccw_device_init_count)) | 1046 | if (atomic_dec_and_test(&ccw_device_init_count)) |
1045 | wake_up(&ccw_device_init_wq); | 1047 | wake_up(&ccw_device_init_wq); |
1046 | break; | 1048 | break; |
1047 | case DEV_STATE_BOXED: | ||
1048 | /* Device did not respond in time. */ | ||
1049 | case DEV_STATE_OFFLINE: | 1049 | case DEV_STATE_OFFLINE: |
1050 | /* | 1050 | /* |
1051 | * We can't register the device in interrupt context so | 1051 | * We can't register the device in interrupt context so |