diff options
author | Peter Oberparleiter <peter.oberparleiter@de.ibm.com> | 2009-12-07 06:51:24 -0500 |
---|---|---|
committer | Martin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com> | 2009-12-07 06:51:30 -0500 |
commit | 16b9a0571da4ee5cd15ca75e871722b0b5aee64d (patch) | |
tree | d831640b56cbc2da742936337175cee221cfb6f3 /drivers/s390/cio | |
parent | 1f5bd3848bfc56de4c32ef6971a6a966776204bb (diff) |
[S390] cio: dont panic in non-fatal conditions
Remove the call to BUG() for situations which are unexpected
but do not cause actual problems.
Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio')
-rw-r--r-- | drivers/s390/cio/device_fsm.c | 25 |
1 files changed, 6 insertions, 19 deletions
diff --git a/drivers/s390/cio/device_fsm.c b/drivers/s390/cio/device_fsm.c index a70c46c8b4bc..c397442ab3d8 100644 --- a/drivers/s390/cio/device_fsm.c +++ b/drivers/s390/cio/device_fsm.c | |||
@@ -1055,14 +1055,14 @@ void ccw_device_trigger_reprobe(struct ccw_device *cdev) | |||
1055 | ccw_device_start_id(cdev, 0); | 1055 | ccw_device_start_id(cdev, 0); |
1056 | } | 1056 | } |
1057 | 1057 | ||
1058 | static void | 1058 | static void ccw_device_disabled_irq(struct ccw_device *cdev, |
1059 | ccw_device_offline_irq(struct ccw_device *cdev, enum dev_event dev_event) | 1059 | enum dev_event dev_event) |
1060 | { | 1060 | { |
1061 | struct subchannel *sch; | 1061 | struct subchannel *sch; |
1062 | 1062 | ||
1063 | sch = to_subchannel(cdev->dev.parent); | 1063 | sch = to_subchannel(cdev->dev.parent); |
1064 | /* | 1064 | /* |
1065 | * An interrupt in state offline means a previous disable was not | 1065 | * An interrupt in a disabled state means a previous disable was not |
1066 | * successful - should not happen, but we try to disable again. | 1066 | * successful - should not happen, but we try to disable again. |
1067 | */ | 1067 | */ |
1068 | cio_disable_subchannel(sch); | 1068 | cio_disable_subchannel(sch); |
@@ -1125,25 +1125,12 @@ ccw_device_nop(struct ccw_device *cdev, enum dev_event dev_event) | |||
1125 | } | 1125 | } |
1126 | 1126 | ||
1127 | /* | 1127 | /* |
1128 | * Bug operation action. | ||
1129 | */ | ||
1130 | static void | ||
1131 | ccw_device_bug(struct ccw_device *cdev, enum dev_event dev_event) | ||
1132 | { | ||
1133 | CIO_MSG_EVENT(0, "Internal state [%i][%i] not handled for device " | ||
1134 | "0.%x.%04x\n", cdev->private->state, dev_event, | ||
1135 | cdev->private->dev_id.ssid, | ||
1136 | cdev->private->dev_id.devno); | ||
1137 | BUG(); | ||
1138 | } | ||
1139 | |||
1140 | /* | ||
1141 | * device statemachine | 1128 | * device statemachine |
1142 | */ | 1129 | */ |
1143 | fsm_func_t *dev_jumptable[NR_DEV_STATES][NR_DEV_EVENTS] = { | 1130 | fsm_func_t *dev_jumptable[NR_DEV_STATES][NR_DEV_EVENTS] = { |
1144 | [DEV_STATE_NOT_OPER] = { | 1131 | [DEV_STATE_NOT_OPER] = { |
1145 | [DEV_EVENT_NOTOPER] = ccw_device_nop, | 1132 | [DEV_EVENT_NOTOPER] = ccw_device_nop, |
1146 | [DEV_EVENT_INTERRUPT] = ccw_device_bug, | 1133 | [DEV_EVENT_INTERRUPT] = ccw_device_disabled_irq, |
1147 | [DEV_EVENT_TIMEOUT] = ccw_device_nop, | 1134 | [DEV_EVENT_TIMEOUT] = ccw_device_nop, |
1148 | [DEV_EVENT_VERIFY] = ccw_device_nop, | 1135 | [DEV_EVENT_VERIFY] = ccw_device_nop, |
1149 | }, | 1136 | }, |
@@ -1161,7 +1148,7 @@ fsm_func_t *dev_jumptable[NR_DEV_STATES][NR_DEV_EVENTS] = { | |||
1161 | }, | 1148 | }, |
1162 | [DEV_STATE_OFFLINE] = { | 1149 | [DEV_STATE_OFFLINE] = { |
1163 | [DEV_EVENT_NOTOPER] = ccw_device_generic_notoper, | 1150 | [DEV_EVENT_NOTOPER] = ccw_device_generic_notoper, |
1164 | [DEV_EVENT_INTERRUPT] = ccw_device_offline_irq, | 1151 | [DEV_EVENT_INTERRUPT] = ccw_device_disabled_irq, |
1165 | [DEV_EVENT_TIMEOUT] = ccw_device_nop, | 1152 | [DEV_EVENT_TIMEOUT] = ccw_device_nop, |
1166 | [DEV_EVENT_VERIFY] = ccw_device_offline_verify, | 1153 | [DEV_EVENT_VERIFY] = ccw_device_offline_verify, |
1167 | }, | 1154 | }, |
@@ -1218,7 +1205,7 @@ fsm_func_t *dev_jumptable[NR_DEV_STATES][NR_DEV_EVENTS] = { | |||
1218 | [DEV_STATE_DISCONNECTED] = { | 1205 | [DEV_STATE_DISCONNECTED] = { |
1219 | [DEV_EVENT_NOTOPER] = ccw_device_nop, | 1206 | [DEV_EVENT_NOTOPER] = ccw_device_nop, |
1220 | [DEV_EVENT_INTERRUPT] = ccw_device_start_id, | 1207 | [DEV_EVENT_INTERRUPT] = ccw_device_start_id, |
1221 | [DEV_EVENT_TIMEOUT] = ccw_device_bug, | 1208 | [DEV_EVENT_TIMEOUT] = ccw_device_nop, |
1222 | [DEV_EVENT_VERIFY] = ccw_device_start_id, | 1209 | [DEV_EVENT_VERIFY] = ccw_device_start_id, |
1223 | }, | 1210 | }, |
1224 | [DEV_STATE_DISCONNECTED_SENSE_ID] = { | 1211 | [DEV_STATE_DISCONNECTED_SENSE_ID] = { |