Lines Matching refs:erp

53 dasd_3990_erp_cleanup(struct dasd_ccw_req * erp, char final_status)  in dasd_3990_erp_cleanup()  argument
55 struct dasd_ccw_req *cqr = erp->refers; in dasd_3990_erp_cleanup()
57 dasd_free_erp_request(erp, erp->memdev); in dasd_3990_erp_cleanup()
71 static void dasd_3990_erp_block_queue(struct dasd_ccw_req *erp, int expires) in dasd_3990_erp_block_queue() argument
74 struct dasd_device *device = erp->startdev; in dasd_3990_erp_block_queue()
83 erp->status = DASD_CQR_FILLED; in dasd_3990_erp_block_queue()
84 if (erp->block) in dasd_3990_erp_block_queue()
85 dasd_block_set_timer(erp->block, expires); in dasd_3990_erp_block_queue()
103 dasd_3990_erp_int_req(struct dasd_ccw_req * erp) in dasd_3990_erp_int_req() argument
106 struct dasd_device *device = erp->startdev; in dasd_3990_erp_int_req()
111 if (erp->function != dasd_3990_erp_int_req) { in dasd_3990_erp_int_req()
113 erp->retries = 256; in dasd_3990_erp_int_req()
114 erp->function = dasd_3990_erp_int_req; in dasd_3990_erp_int_req()
123 dasd_3990_erp_block_queue(erp, 60*HZ); in dasd_3990_erp_int_req()
126 return erp; in dasd_3990_erp_int_req()
145 dasd_3990_erp_alternate_path(struct dasd_ccw_req * erp) in dasd_3990_erp_alternate_path() argument
147 struct dasd_device *device = erp->startdev; in dasd_3990_erp_alternate_path()
155 if (erp->lpm == 0) in dasd_3990_erp_alternate_path()
156 erp->lpm = dasd_path_get_opm(device) & in dasd_3990_erp_alternate_path()
157 ~(erp->irb.esw.esw0.sublog.lpum); in dasd_3990_erp_alternate_path()
159 erp->lpm &= ~(erp->irb.esw.esw0.sublog.lpum); in dasd_3990_erp_alternate_path()
161 if ((erp->lpm & opm) != 0x00) { in dasd_3990_erp_alternate_path()
165 erp->lpm, erp->irb.esw.esw0.sublog.lpum, opm); in dasd_3990_erp_alternate_path()
168 erp->status = DASD_CQR_FILLED; in dasd_3990_erp_alternate_path()
169 erp->retries = 10; in dasd_3990_erp_alternate_path()
173 "/opm=%x)\n", erp->irb.esw.esw0.sublog.lpum, opm); in dasd_3990_erp_alternate_path()
176 erp->status = DASD_CQR_FAILED; in dasd_3990_erp_alternate_path()
196 dasd_3990_erp_DCTL(struct dasd_ccw_req * erp, char modifier) in dasd_3990_erp_DCTL() argument
199 struct dasd_device *device = erp->startdev; in dasd_3990_erp_DCTL()
204 dctl_cqr = dasd_alloc_erp_request((char *) &erp->magic, 1, in dasd_3990_erp_DCTL()
210 erp->status = DASD_CQR_FAILED; in dasd_3990_erp_DCTL()
211 return erp; in dasd_3990_erp_DCTL()
224 dctl_cqr->flags = erp->flags; in dasd_3990_erp_DCTL()
226 dctl_cqr->refers = erp; in dasd_3990_erp_DCTL()
229 dctl_cqr->magic = erp->magic; in dasd_3990_erp_DCTL()
262 static struct dasd_ccw_req *dasd_3990_erp_action_1_sec(struct dasd_ccw_req *erp) in dasd_3990_erp_action_1_sec() argument
264 erp->function = dasd_3990_erp_action_1_sec; in dasd_3990_erp_action_1_sec()
265 dasd_3990_erp_alternate_path(erp); in dasd_3990_erp_action_1_sec()
266 return erp; in dasd_3990_erp_action_1_sec()
269 static struct dasd_ccw_req *dasd_3990_erp_action_1(struct dasd_ccw_req *erp) in dasd_3990_erp_action_1() argument
271 erp->function = dasd_3990_erp_action_1; in dasd_3990_erp_action_1()
272 dasd_3990_erp_alternate_path(erp); in dasd_3990_erp_action_1()
273 if (erp->status == DASD_CQR_FAILED && in dasd_3990_erp_action_1()
274 !test_bit(DASD_CQR_VERIFY_PATH, &erp->flags)) { in dasd_3990_erp_action_1()
275 erp->status = DASD_CQR_FILLED; in dasd_3990_erp_action_1()
276 erp->retries = 10; in dasd_3990_erp_action_1()
277 erp->lpm = dasd_path_get_opm(erp->startdev); in dasd_3990_erp_action_1()
278 erp->function = dasd_3990_erp_action_1_sec; in dasd_3990_erp_action_1()
280 return erp; in dasd_3990_erp_action_1()
302 dasd_3990_erp_action_4(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_action_4() argument
305 struct dasd_device *device = erp->startdev; in dasd_3990_erp_action_4()
310 if (erp->function != dasd_3990_erp_action_4) { in dasd_3990_erp_action_4()
315 erp->retries = 256; in dasd_3990_erp_action_4()
316 erp->function = dasd_3990_erp_action_4; in dasd_3990_erp_action_4()
324 erp->retries); in dasd_3990_erp_action_4()
326 dasd_3990_erp_block_queue(erp, 30*HZ); in dasd_3990_erp_action_4()
332 erp->retries); in dasd_3990_erp_action_4()
333 dasd_3990_erp_block_queue(erp, HZ); in dasd_3990_erp_action_4()
339 erp->retries); in dasd_3990_erp_action_4()
340 erp->status = DASD_CQR_FILLED; in dasd_3990_erp_action_4()
344 return erp; in dasd_3990_erp_action_4()
369 dasd_3990_erp_action_5(struct dasd_ccw_req * erp) in dasd_3990_erp_action_5() argument
373 erp->retries = 10; in dasd_3990_erp_action_5()
374 erp->function = dasd_3990_erp_action_5; in dasd_3990_erp_action_5()
376 return erp; in dasd_3990_erp_action_5()
395 dasd_3990_handle_env_data(struct dasd_ccw_req * erp, char *sense) in dasd_3990_handle_env_data() argument
398 struct dasd_device *device = erp->startdev; in dasd_3990_handle_env_data()
984 dasd_eer_write(device, erp->refers, in dasd_3990_handle_env_data()
1032 dasd_3990_erp_com_rej(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_com_rej() argument
1035 struct dasd_device *device = erp->startdev; in dasd_3990_erp_com_rej()
1037 erp->function = dasd_3990_erp_com_rej; in dasd_3990_erp_com_rej()
1045 dasd_3990_handle_env_data(erp, sense); in dasd_3990_erp_com_rej()
1047 erp->retries = 5; in dasd_3990_erp_com_rej()
1052 erp = dasd_3990_erp_cleanup(erp, DASD_CQR_FAILED); in dasd_3990_erp_com_rej()
1056 if (!test_bit(DASD_CQR_SUPPRESS_CR, &erp->flags)) in dasd_3990_erp_com_rej()
1060 erp = dasd_3990_erp_cleanup(erp, DASD_CQR_FAILED); in dasd_3990_erp_com_rej()
1063 return erp; in dasd_3990_erp_com_rej()
1079 dasd_3990_erp_bus_out(struct dasd_ccw_req * erp) in dasd_3990_erp_bus_out() argument
1082 struct dasd_device *device = erp->startdev; in dasd_3990_erp_bus_out()
1087 if (erp->function != dasd_3990_erp_bus_out) { in dasd_3990_erp_bus_out()
1088 erp->retries = 256; in dasd_3990_erp_bus_out()
1089 erp->function = dasd_3990_erp_bus_out; in dasd_3990_erp_bus_out()
1098 dasd_3990_erp_block_queue(erp, 60*HZ); in dasd_3990_erp_bus_out()
1102 return erp; in dasd_3990_erp_bus_out()
1118 dasd_3990_erp_equip_check(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_equip_check() argument
1121 struct dasd_device *device = erp->startdev; in dasd_3990_erp_equip_check()
1123 erp->function = dasd_3990_erp_equip_check; in dasd_3990_erp_equip_check()
1134 erp = dasd_3990_erp_action_1(erp); in dasd_3990_erp_equip_check()
1141 dasd_3990_handle_env_data(erp, sense); in dasd_3990_erp_equip_check()
1143 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_equip_check()
1151 erp = dasd_3990_erp_action_1(erp); in dasd_3990_erp_equip_check()
1159 erp = dasd_3990_erp_action_5(erp); in dasd_3990_erp_equip_check()
1161 return erp; in dasd_3990_erp_equip_check()
1177 dasd_3990_erp_data_check(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_data_check() argument
1180 struct dasd_device *device = erp->startdev; in dasd_3990_erp_data_check()
1182 erp->function = dasd_3990_erp_data_check; in dasd_3990_erp_data_check()
1201 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_data_check()
1209 erp = dasd_3990_erp_action_1(erp); in dasd_3990_erp_data_check()
1217 erp = dasd_3990_erp_action_5(erp); in dasd_3990_erp_data_check()
1220 return erp; in dasd_3990_erp_data_check()
1236 dasd_3990_erp_overrun(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_overrun() argument
1239 struct dasd_device *device = erp->startdev; in dasd_3990_erp_overrun()
1241 erp->function = dasd_3990_erp_overrun; in dasd_3990_erp_overrun()
1247 erp = dasd_3990_erp_action_5(erp); in dasd_3990_erp_overrun()
1249 return erp; in dasd_3990_erp_overrun()
1265 dasd_3990_erp_inv_format(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_inv_format() argument
1268 struct dasd_device *device = erp->startdev; in dasd_3990_erp_inv_format()
1270 erp->function = dasd_3990_erp_inv_format; in dasd_3990_erp_inv_format()
1278 dasd_3990_handle_env_data(erp, sense); in dasd_3990_erp_inv_format()
1280 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_inv_format()
1288 erp = dasd_3990_erp_cleanup(erp, DASD_CQR_FAILED); in dasd_3990_erp_inv_format()
1291 return erp; in dasd_3990_erp_inv_format()
1332 dasd_3990_erp_env_data(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_env_data() argument
1335 struct dasd_device *device = erp->startdev; in dasd_3990_erp_env_data()
1337 erp->function = dasd_3990_erp_env_data; in dasd_3990_erp_env_data()
1341 dasd_3990_handle_env_data(erp, sense); in dasd_3990_erp_env_data()
1345 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_env_data()
1347 erp->status = DASD_CQR_FILLED; in dasd_3990_erp_env_data()
1350 return erp; in dasd_3990_erp_env_data()
1399 dasd_3990_erp_file_prot(struct dasd_ccw_req * erp) in dasd_3990_erp_file_prot() argument
1402 struct dasd_device *device = erp->startdev; in dasd_3990_erp_file_prot()
1409 if (!test_bit(DASD_CQR_SUPPRESS_FP, &erp->flags)) in dasd_3990_erp_file_prot()
1413 return dasd_3990_erp_cleanup(erp, DASD_CQR_FAILED); in dasd_3990_erp_file_prot()
1433 struct dasd_ccw_req *erp) in dasd_3990_erp_inspect_alias() argument
1435 struct dasd_ccw_req *cqr = erp->refers; in dasd_3990_erp_inspect_alias()
1441 sense = dasd_get_sense(&erp->refers->irb); in dasd_3990_erp_inspect_alias()
1466 erp->startdev = cqr->block->base; in dasd_3990_erp_inspect_alias()
1467 erp->function = dasd_3990_erp_inspect_alias; in dasd_3990_erp_inspect_alias()
1468 return erp; in dasd_3990_erp_inspect_alias()
1489 dasd_3990_erp_inspect_24(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_inspect_24() argument
1497 erp_filled = dasd_3990_erp_com_rej(erp, sense); in dasd_3990_erp_inspect_24()
1501 erp_filled = dasd_3990_erp_int_req(erp); in dasd_3990_erp_inspect_24()
1505 erp_filled = dasd_3990_erp_bus_out(erp); in dasd_3990_erp_inspect_24()
1509 erp_filled = dasd_3990_erp_equip_check(erp, sense); in dasd_3990_erp_inspect_24()
1513 erp_filled = dasd_3990_erp_data_check(erp, sense); in dasd_3990_erp_inspect_24()
1517 erp_filled = dasd_3990_erp_overrun(erp, sense); in dasd_3990_erp_inspect_24()
1521 erp_filled = dasd_3990_erp_inv_format(erp, sense); in dasd_3990_erp_inspect_24()
1525 erp_filled = dasd_3990_erp_EOC(erp, sense); in dasd_3990_erp_inspect_24()
1529 erp_filled = dasd_3990_erp_env_data(erp, sense); in dasd_3990_erp_inspect_24()
1533 erp_filled = dasd_3990_erp_no_rec(erp, sense); in dasd_3990_erp_inspect_24()
1537 erp_filled = dasd_3990_erp_file_prot(erp); in dasd_3990_erp_inspect_24()
1542 erp_filled = erp; in dasd_3990_erp_inspect_24()
1569 dasd_3990_erp_action_10_32(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_action_10_32() argument
1572 struct dasd_device *device = erp->startdev; in dasd_3990_erp_action_10_32()
1574 erp->retries = 256; in dasd_3990_erp_action_10_32()
1575 erp->function = dasd_3990_erp_action_10_32; in dasd_3990_erp_action_10_32()
1579 return erp; in dasd_3990_erp_action_10_32()
1609 struct dasd_ccw_req *erp; in dasd_3990_erp_action_1B_32() local
1655 erp = dasd_alloc_erp_request((char *) &cqr->magic, in dasd_3990_erp_action_1B_32()
1660 if (IS_ERR(erp)) { in dasd_3990_erp_action_1B_32()
1668 DE_data = erp->data; in dasd_3990_erp_action_1B_32()
1678 LO_data = erp->data + sizeof(struct DE_eckd_data); in dasd_3990_erp_action_1B_32()
1707 ccw = erp->cpaddr; in dasd_3990_erp_action_1B_32()
1728 erp->flags = default_erp->flags; in dasd_3990_erp_action_1B_32()
1729 erp->function = dasd_3990_erp_action_1B_32; in dasd_3990_erp_action_1B_32()
1730 erp->refers = default_erp->refers; in dasd_3990_erp_action_1B_32()
1731 erp->startdev = device; in dasd_3990_erp_action_1B_32()
1732 erp->memdev = device; in dasd_3990_erp_action_1B_32()
1733 erp->magic = default_erp->magic; in dasd_3990_erp_action_1B_32()
1734 erp->expires = default_erp->expires; in dasd_3990_erp_action_1B_32()
1735 erp->retries = 256; in dasd_3990_erp_action_1B_32()
1736 erp->buildclk = get_tod_clock(); in dasd_3990_erp_action_1B_32()
1737 erp->status = DASD_CQR_FILLED; in dasd_3990_erp_action_1B_32()
1742 return erp; in dasd_3990_erp_action_1B_32()
1768 struct dasd_ccw_req *erp; in dasd_3990_update_1B() local
1815 erp = previous_erp; in dasd_3990_update_1B()
1818 LO_data = erp->data + sizeof(struct DE_eckd_data); in dasd_3990_update_1B()
1849 ccw = erp->cpaddr; /* addr of DE ccw */ in dasd_3990_update_1B()
1854 erp->status = DASD_CQR_FILLED; in dasd_3990_update_1B()
1856 return erp; in dasd_3990_update_1B()
1878 dasd_3990_erp_compound_retry(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound_retry() argument
1883 erp->retries = 1; in dasd_3990_erp_compound_retry()
1887 erp->retries = 2; in dasd_3990_erp_compound_retry()
1891 erp->retries = 10; in dasd_3990_erp_compound_retry()
1895 erp->retries = 256; in dasd_3990_erp_compound_retry()
1902 erp->function = dasd_3990_erp_compound_retry; in dasd_3990_erp_compound_retry()
1922 dasd_3990_erp_compound_path(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound_path() argument
1925 dasd_3990_erp_alternate_path(erp); in dasd_3990_erp_compound_path()
1927 if (erp->status == DASD_CQR_FAILED && in dasd_3990_erp_compound_path()
1928 !test_bit(DASD_CQR_VERIFY_PATH, &erp->flags)) { in dasd_3990_erp_compound_path()
1931 erp->lpm = dasd_path_get_opm(erp->startdev); in dasd_3990_erp_compound_path()
1932 erp->status = DASD_CQR_NEED_ERP; in dasd_3990_erp_compound_path()
1936 erp->function = dasd_3990_erp_compound_path; in dasd_3990_erp_compound_path()
1955 dasd_3990_erp_compound_code(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound_code() argument
1964 erp = dasd_3990_erp_DCTL(erp, 0x20); in dasd_3990_erp_compound_code()
1969 erp->retries = 1; in dasd_3990_erp_compound_code()
1971 dasd_3990_erp_block_queue (erp, 5*HZ); in dasd_3990_erp_compound_code()
1980 erp->function = dasd_3990_erp_compound_code; in dasd_3990_erp_compound_code()
1982 return erp; in dasd_3990_erp_compound_code()
2003 dasd_3990_erp_compound_config(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound_config() argument
2011 struct dasd_device *device = erp->startdev; in dasd_3990_erp_compound_config()
2018 erp->function = dasd_3990_erp_compound_config; in dasd_3990_erp_compound_config()
2038 dasd_3990_erp_compound(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound() argument
2041 if ((erp->function == dasd_3990_erp_compound_retry) && in dasd_3990_erp_compound()
2042 (erp->status == DASD_CQR_NEED_ERP)) { in dasd_3990_erp_compound()
2044 dasd_3990_erp_compound_path(erp, sense); in dasd_3990_erp_compound()
2047 if ((erp->function == dasd_3990_erp_compound_path) && in dasd_3990_erp_compound()
2048 (erp->status == DASD_CQR_NEED_ERP)) { in dasd_3990_erp_compound()
2050 erp = dasd_3990_erp_compound_code(erp, sense); in dasd_3990_erp_compound()
2053 if ((erp->function == dasd_3990_erp_compound_code) && in dasd_3990_erp_compound()
2054 (erp->status == DASD_CQR_NEED_ERP)) { in dasd_3990_erp_compound()
2056 dasd_3990_erp_compound_config(erp, sense); in dasd_3990_erp_compound()
2060 if (erp->status == DASD_CQR_NEED_ERP) in dasd_3990_erp_compound()
2061 erp->status = DASD_CQR_FAILED; in dasd_3990_erp_compound()
2063 return erp; in dasd_3990_erp_compound()
2112 dasd_3990_erp_inspect_32(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_inspect_32() argument
2115 struct dasd_device *device = erp->startdev; in dasd_3990_erp_inspect_32()
2117 erp->function = dasd_3990_erp_inspect_32; in dasd_3990_erp_inspect_32()
2126 dasd_3990_erp_compound_retry(erp, sense); in dasd_3990_erp_inspect_32()
2143 erp = dasd_3990_erp_cleanup(erp, DASD_CQR_FAILED); in dasd_3990_erp_inspect_32()
2148 erp = dasd_3990_erp_int_req(erp); in dasd_3990_erp_inspect_32()
2156 erp = dasd_3990_erp_cleanup(erp, DASD_CQR_FAILED); in dasd_3990_erp_inspect_32()
2160 erp = dasd_3990_erp_action_10_32(erp, sense); in dasd_3990_erp_inspect_32()
2170 erp = dasd_3990_erp_cleanup(erp, DASD_CQR_FAILED); in dasd_3990_erp_inspect_32()
2175 erp = dasd_3990_erp_action_1B_32(erp, sense); in dasd_3990_erp_inspect_32()
2194 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_inspect_32()
2201 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_inspect_32()
2209 return erp; in dasd_3990_erp_inspect_32()
2243 static void dasd_3990_erp_account_error(struct dasd_ccw_req *erp) in dasd_3990_erp_account_error() argument
2245 struct dasd_device *device = erp->startdev; in dasd_3990_erp_account_error()
2246 __u8 lpum = erp->refers->irb.esw.esw1.lpum; in dasd_3990_erp_account_error()
2292 dasd_3990_erp_control_check(struct dasd_ccw_req *erp) in dasd_3990_erp_control_check() argument
2294 struct dasd_device *device = erp->startdev; in dasd_3990_erp_control_check()
2296 if (scsw_cstat(&erp->refers->irb.scsw) & (SCHN_STAT_INTF_CTRL_CHK in dasd_3990_erp_control_check()
2300 dasd_3990_erp_account_error(erp); in dasd_3990_erp_control_check()
2301 erp = dasd_3990_erp_action_4(erp, NULL); in dasd_3990_erp_control_check()
2303 return erp; in dasd_3990_erp_control_check()
2319 dasd_3990_erp_inspect(struct dasd_ccw_req *erp) in dasd_3990_erp_inspect() argument
2326 erp_new = dasd_3990_erp_inspect_alias(erp); in dasd_3990_erp_inspect()
2334 sense = dasd_get_sense(&erp->refers->irb); in dasd_3990_erp_inspect()
2336 erp_new = dasd_3990_erp_control_check(erp); in dasd_3990_erp_inspect()
2341 erp_new = dasd_3990_erp_inspect_24(erp, sense); in dasd_3990_erp_inspect()
2346 erp_new = dasd_3990_erp_inspect_32(erp, sense); in dasd_3990_erp_inspect()
2376 struct dasd_ccw_req *erp; in dasd_3990_erp_add_erp() local
2391 erp = dasd_alloc_erp_request((char *) &cqr->magic, in dasd_3990_erp_add_erp()
2393 if (IS_ERR(erp)) { in dasd_3990_erp_add_erp()
2406 return erp; in dasd_3990_erp_add_erp()
2412 erp->cpmode = 1; in dasd_3990_erp_add_erp()
2413 erp->cpaddr = PTR_ALIGN(erp->data, 64); in dasd_3990_erp_add_erp()
2414 tcw = erp->cpaddr; in dasd_3990_erp_add_erp()
2420 erp->cpaddr = cqr->cpaddr; in dasd_3990_erp_add_erp()
2423 ccw = erp->cpaddr; in dasd_3990_erp_add_erp()
2431 erp->flags = cqr->flags; in dasd_3990_erp_add_erp()
2432 erp->function = dasd_3990_erp_add_erp; in dasd_3990_erp_add_erp()
2433 erp->refers = cqr; in dasd_3990_erp_add_erp()
2434 erp->startdev = device; in dasd_3990_erp_add_erp()
2435 erp->memdev = device; in dasd_3990_erp_add_erp()
2436 erp->block = cqr->block; in dasd_3990_erp_add_erp()
2437 erp->magic = cqr->magic; in dasd_3990_erp_add_erp()
2438 erp->expires = cqr->expires; in dasd_3990_erp_add_erp()
2439 erp->retries = device->default_retries; in dasd_3990_erp_add_erp()
2440 erp->buildclk = get_tod_clock(); in dasd_3990_erp_add_erp()
2441 erp->status = DASD_CQR_FILLED; in dasd_3990_erp_add_erp()
2443 return erp; in dasd_3990_erp_add_erp()
2465 struct dasd_ccw_req *erp = NULL; in dasd_3990_erp_additional_erp() local
2468 erp = dasd_3990_erp_add_erp(cqr); in dasd_3990_erp_additional_erp()
2470 if (IS_ERR(erp)) in dasd_3990_erp_additional_erp()
2471 return erp; in dasd_3990_erp_additional_erp()
2474 if (erp != cqr) { in dasd_3990_erp_additional_erp()
2476 erp = dasd_3990_erp_inspect(erp); in dasd_3990_erp_additional_erp()
2479 return erp; in dasd_3990_erp_additional_erp()
2596 dasd_3990_erp_further_erp(struct dasd_ccw_req *erp) in dasd_3990_erp_further_erp() argument
2599 struct dasd_device *device = erp->startdev; in dasd_3990_erp_further_erp()
2600 char *sense = dasd_get_sense(&erp->irb); in dasd_3990_erp_further_erp()
2603 if ((erp->function == dasd_3990_erp_bus_out) || in dasd_3990_erp_further_erp()
2604 (erp->function == dasd_3990_erp_action_1) || in dasd_3990_erp_further_erp()
2605 (erp->function == dasd_3990_erp_action_4)) { in dasd_3990_erp_further_erp()
2607 erp = dasd_3990_erp_action_1(erp); in dasd_3990_erp_further_erp()
2609 } else if (erp->function == dasd_3990_erp_action_1_sec) { in dasd_3990_erp_further_erp()
2610 erp = dasd_3990_erp_action_1_sec(erp); in dasd_3990_erp_further_erp()
2611 } else if (erp->function == dasd_3990_erp_action_5) { in dasd_3990_erp_further_erp()
2615 erp = dasd_3990_erp_action_1(erp); in dasd_3990_erp_further_erp()
2625 erp = dasd_3990_erp_DCTL(erp, 0x20); in dasd_3990_erp_further_erp()
2630 erp = dasd_3990_erp_DCTL(erp, 0x40); in dasd_3990_erp_further_erp()
2635 erp = dasd_3990_erp_DCTL(erp, 0x80); in dasd_3990_erp_further_erp()
2648 ((erp->function == dasd_3990_erp_compound_retry) || in dasd_3990_erp_further_erp()
2649 (erp->function == dasd_3990_erp_compound_path) || in dasd_3990_erp_further_erp()
2650 (erp->function == dasd_3990_erp_compound_code) || in dasd_3990_erp_further_erp()
2651 (erp->function == dasd_3990_erp_compound_config))) { in dasd_3990_erp_further_erp()
2653 erp = dasd_3990_erp_compound(erp, sense); in dasd_3990_erp_further_erp()
2661 "ERP %p has run out of retries and failed\n", erp); in dasd_3990_erp_further_erp()
2663 erp->status = DASD_CQR_FAILED; in dasd_3990_erp_further_erp()
2666 return erp; in dasd_3990_erp_further_erp()
2691 struct dasd_ccw_req *erp) in dasd_3990_erp_handle_match_erp()
2699 while (erp_done != erp) { in dasd_3990_erp_handle_match_erp()
2716 if (erp->retries > 0) { in dasd_3990_erp_handle_match_erp()
2718 char *sense = dasd_get_sense(&erp->refers->irb); in dasd_3990_erp_handle_match_erp()
2721 if (sense && erp->function == dasd_3990_erp_action_4) { in dasd_3990_erp_handle_match_erp()
2723 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_handle_match_erp()
2726 erp->function == dasd_3990_erp_action_1B_32) { in dasd_3990_erp_handle_match_erp()
2728 erp = dasd_3990_update_1B(erp, sense); in dasd_3990_erp_handle_match_erp()
2730 } else if (sense && erp->function == dasd_3990_erp_int_req) { in dasd_3990_erp_handle_match_erp()
2732 erp = dasd_3990_erp_int_req(erp); in dasd_3990_erp_handle_match_erp()
2738 erp->retries, erp); in dasd_3990_erp_handle_match_erp()
2741 erp->status = DASD_CQR_FILLED; in dasd_3990_erp_handle_match_erp()
2747 erp = dasd_3990_erp_further_erp(erp); in dasd_3990_erp_handle_match_erp()
2750 return erp; in dasd_3990_erp_handle_match_erp()
2774 struct dasd_ccw_req *erp = NULL; in dasd_3990_erp_action() local
2807 erp = dasd_3990_erp_in_erp(cqr); in dasd_3990_erp_action()
2809 if (erp == NULL) { in dasd_3990_erp_action()
2811 erp = dasd_3990_erp_additional_erp(cqr); in dasd_3990_erp_action()
2812 if (IS_ERR(erp)) in dasd_3990_erp_action()
2813 return erp; in dasd_3990_erp_action()
2816 erp = dasd_3990_erp_handle_match_erp(cqr, erp); in dasd_3990_erp_action()
2825 if (test_bit(DASD_CQR_VERIFY_PATH, &erp->flags) && cqr->lpm) { in dasd_3990_erp_action()
2826 erp->lpm = cqr->lpm; in dasd_3990_erp_action()
2833 for (temp_erp = erp; in dasd_3990_erp_action()
2844 if (list_empty(&erp->blocklist)) { in dasd_3990_erp_action()
2847 list_add_tail(&erp->blocklist, &cqr->blocklist); in dasd_3990_erp_action()
2852 return erp; in dasd_3990_erp_action()