Lines Matching full:sense
34 * 24 and 32 byte sense ERP functions
294 * sense sense data of the actual error
302 dasd_3990_erp_action_4(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_action_4() argument
319 if (sense && (sense[25] == 0x1D)) { /* state change pending */ in dasd_3990_erp_action_4()
328 } else if (sense && (sense[25] == 0x1E)) { /* busy */ in dasd_3990_erp_action_4()
350 * 24 byte sense ERP functions (only)
385 * Does a analysis of the sense data (message Format)
389 * sense current sense data
395 dasd_3990_handle_env_data(struct dasd_ccw_req * erp, char *sense) in dasd_3990_handle_env_data() argument
399 char msg_format = (sense[7] & 0xF0); in dasd_3990_handle_env_data()
400 char msg_no = (sense[7] & 0x0F); in dasd_3990_handle_env_data()
406 if (sense[1] & 0x10) { /* check message to operator bit */ in dasd_3990_handle_env_data()
450 "... %02x\n", sense[8]); in dasd_3990_handle_env_data()
471 sense[8]); in dasd_3990_handle_env_data()
493 "device = %02x\n", sense[4]); in dasd_3990_handle_env_data()
595 sense[8]); in dasd_3990_handle_env_data()
1026 * sense current sense data
1032 dasd_3990_erp_com_rej(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_com_rej() argument
1040 if (sense[2] & SNS2_ENV_DATA_PRESENT) { in dasd_3990_erp_com_rej()
1045 dasd_3990_handle_env_data(erp, sense); in dasd_3990_erp_com_rej()
1049 } else if (sense[1] & SNS1_WRITE_INHIBITED) { in dasd_3990_erp_com_rej()
1053 } else if (sense[7] & SNS7_INVALID_ON_SEC) { in dasd_3990_erp_com_rej()
1055 /* suppress dump of sense data for this error */ in dasd_3990_erp_com_rej()
1123 dasd_3990_erp_equip_check(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_equip_check() argument
1130 if (sense[1] & SNS1_WRITE_INHIBITED) { in dasd_3990_erp_equip_check()
1141 } else if (sense[2] & SNS2_ENV_DATA_PRESENT) { in dasd_3990_erp_equip_check()
1146 dasd_3990_handle_env_data(erp, sense); in dasd_3990_erp_equip_check()
1148 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_equip_check()
1150 } else if (sense[1] & SNS1_PERM_ERR) { in dasd_3990_erp_equip_check()
1182 dasd_3990_erp_data_check(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_data_check() argument
1189 if (sense[2] & SNS2_CORRECTABLE) { /* correctable data check */ in dasd_3990_erp_data_check()
1200 } else if (sense[2] & SNS2_ENV_DATA_PRESENT) { in dasd_3990_erp_data_check()
1206 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_data_check()
1208 } else if (sense[1] & SNS1_PERM_ERR) { in dasd_3990_erp_data_check()
1241 dasd_3990_erp_overrun(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_overrun() argument
1270 dasd_3990_erp_inv_format(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_inv_format() argument
1277 if (sense[2] & SNS2_ENV_DATA_PRESENT) { in dasd_3990_erp_inv_format()
1283 dasd_3990_handle_env_data(erp, sense); in dasd_3990_erp_inv_format()
1285 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_inv_format()
1312 dasd_3990_erp_EOC(struct dasd_ccw_req * default_erp, char *sense) in dasd_3990_erp_EOC() argument
1337 dasd_3990_erp_env_data(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_env_data() argument
1346 dasd_3990_handle_env_data(erp, sense); in dasd_3990_erp_env_data()
1349 if (sense[7] != 0x0F) { in dasd_3990_erp_env_data()
1350 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_env_data()
1372 dasd_3990_erp_no_rec(struct dasd_ccw_req * default_erp, char *sense) in dasd_3990_erp_no_rec() argument
1441 char *sense; in dasd_3990_erp_inspect_alias() local
1446 sense = dasd_get_sense(&erp->refers->irb); in dasd_3990_erp_inspect_alias()
1450 if (!test_bit(DASD_FLAG_OFFLINE, &cqr->startdev->flags) && sense in dasd_3990_erp_inspect_alias()
1451 && (sense[0] == 0x10) && (sense[7] == 0x0F) in dasd_3990_erp_inspect_alias()
1452 && (sense[8] == 0x67)) { in dasd_3990_erp_inspect_alias()
1483 * Does a detailed inspection of the 24 byte sense data
1487 * sense sense data of the actual error
1494 dasd_3990_erp_inspect_24(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_inspect_24() argument
1499 /* Check sense for .... */ in dasd_3990_erp_inspect_24()
1501 if ((erp_filled == NULL) && (sense[0] & SNS0_CMD_REJECT)) { in dasd_3990_erp_inspect_24()
1502 erp_filled = dasd_3990_erp_com_rej(erp, sense); in dasd_3990_erp_inspect_24()
1505 if ((erp_filled == NULL) && (sense[0] & SNS0_INTERVENTION_REQ)) { in dasd_3990_erp_inspect_24()
1509 if ((erp_filled == NULL) && (sense[0] & SNS0_BUS_OUT_CHECK)) { in dasd_3990_erp_inspect_24()
1513 if ((erp_filled == NULL) && (sense[0] & SNS0_EQUIPMENT_CHECK)) { in dasd_3990_erp_inspect_24()
1514 erp_filled = dasd_3990_erp_equip_check(erp, sense); in dasd_3990_erp_inspect_24()
1517 if ((erp_filled == NULL) && (sense[0] & SNS0_DATA_CHECK)) { in dasd_3990_erp_inspect_24()
1518 erp_filled = dasd_3990_erp_data_check(erp, sense); in dasd_3990_erp_inspect_24()
1521 if ((erp_filled == NULL) && (sense[0] & SNS0_OVERRUN)) { in dasd_3990_erp_inspect_24()
1522 erp_filled = dasd_3990_erp_overrun(erp, sense); in dasd_3990_erp_inspect_24()
1525 if ((erp_filled == NULL) && (sense[1] & SNS1_INV_TRACK_FORMAT)) { in dasd_3990_erp_inspect_24()
1526 erp_filled = dasd_3990_erp_inv_format(erp, sense); in dasd_3990_erp_inspect_24()
1529 if ((erp_filled == NULL) && (sense[1] & SNS1_EOC)) { in dasd_3990_erp_inspect_24()
1530 erp_filled = dasd_3990_erp_EOC(erp, sense); in dasd_3990_erp_inspect_24()
1533 if ((erp_filled == NULL) && (sense[2] & SNS2_ENV_DATA_PRESENT)) { in dasd_3990_erp_inspect_24()
1534 erp_filled = dasd_3990_erp_env_data(erp, sense); in dasd_3990_erp_inspect_24()
1537 if ((erp_filled == NULL) && (sense[1] & SNS1_NO_REC_FOUND)) { in dasd_3990_erp_inspect_24()
1538 erp_filled = dasd_3990_erp_no_rec(erp, sense); in dasd_3990_erp_inspect_24()
1541 if ((erp_filled == NULL) && (sense[1] & SNS1_FILE_PROTECTED)) { in dasd_3990_erp_inspect_24()
1556 * 32 byte sense ERP functions (only)
1569 * sense current sense data
1574 dasd_3990_erp_action_10_32(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_action_10_32() argument
1601 * sense current sense data
1608 dasd_3990_erp_action_1B_32(struct dasd_ccw_req * default_erp, char *sense) in dasd_3990_erp_action_1B_32() argument
1634 "32 bit sense, action 1B is not defined" in dasd_3990_erp_action_1B_32()
1640 if (sense[1] & 0x01) { in dasd_3990_erp_action_1B_32()
1685 if ((sense[3] == 0x01) && (LO_data[1] & 0x01)) { in dasd_3990_erp_action_1B_32()
1690 if ((sense[7] & 0x3F) == 0x01) { in dasd_3990_erp_action_1B_32()
1694 } else if ((sense[7] & 0x3F) == 0x03) { in dasd_3990_erp_action_1B_32()
1699 LO_data[0] = sense[7]; /* operation */ in dasd_3990_erp_action_1B_32()
1702 LO_data[1] = sense[8]; /* auxiliary */ in dasd_3990_erp_action_1B_32()
1703 LO_data[2] = sense[9]; in dasd_3990_erp_action_1B_32()
1704 LO_data[3] = sense[3]; /* count */ in dasd_3990_erp_action_1B_32()
1705 LO_data[4] = sense[29]; /* seek_addr.cyl */ in dasd_3990_erp_action_1B_32()
1706 LO_data[5] = sense[30]; /* seek_addr.cyl 2nd byte */ in dasd_3990_erp_action_1B_32()
1707 LO_data[7] = sense[31]; /* seek_addr.head 2nd byte */ in dasd_3990_erp_action_1B_32()
1709 memcpy(&(LO_data[8]), &(sense[11]), 8); in dasd_3990_erp_action_1B_32()
1762 * sense current sense data
1767 dasd_3990_update_1B(struct dasd_ccw_req * previous_erp, char *sense) in dasd_3990_update_1B() argument
1790 "32 bit sense, action 1B, update," in dasd_3990_update_1B()
1796 if (sense[1] & 0x01) { in dasd_3990_update_1B()
1822 /* update the LO with the new returned sense data */ in dasd_3990_update_1B()
1825 if ((sense[3] == 0x01) && (LO_data[1] & 0x01)) { in dasd_3990_update_1B()
1832 if ((sense[7] & 0x3F) == 0x01) { in dasd_3990_update_1B()
1836 } else if ((sense[7] & 0x3F) == 0x03) { in dasd_3990_update_1B()
1841 LO_data[0] = sense[7]; /* operation */ in dasd_3990_update_1B()
1844 LO_data[1] = sense[8]; /* auxiliary */ in dasd_3990_update_1B()
1845 LO_data[2] = sense[9]; in dasd_3990_update_1B()
1846 LO_data[3] = sense[3]; /* count */ in dasd_3990_update_1B()
1847 LO_data[4] = sense[29]; /* seek_addr.cyl */ in dasd_3990_update_1B()
1848 LO_data[5] = sense[30]; /* seek_addr.cyl 2nd byte */ in dasd_3990_update_1B()
1849 LO_data[7] = sense[31]; /* seek_addr.head 2nd byte */ in dasd_3990_update_1B()
1851 memcpy(&(LO_data[8]), &(sense[11]), 8); in dasd_3990_update_1B()
1871 * by the sense data. This makes enqueueing of the request
1875 * sense sense data of the actual error
1883 dasd_3990_erp_compound_retry(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound_retry() argument
1886 switch (sense[25] & 0x03) { in dasd_3990_erp_compound_retry()
1919 * sense sense data of the actual error
1927 dasd_3990_erp_compound_path(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound_path() argument
1929 if (sense[25] & DASD_SENSE_BIT_3) { in dasd_3990_erp_compound_path()
1952 * sense sense data of the actual error
1960 dasd_3990_erp_compound_code(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound_code() argument
1963 if (sense[25] & DASD_SENSE_BIT_2) { in dasd_3990_erp_compound_code()
1965 switch (sense[28]) { in dasd_3990_erp_compound_code()
2000 * sense sense data of the actual error
2008 dasd_3990_erp_compound_config(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound_config() argument
2011 if ((sense[25] & DASD_SENSE_BIT_1) && (sense[26] & DASD_SENSE_BIT_2)) { in dasd_3990_erp_compound_config()
2035 * sense sense data of the actual error
2043 dasd_3990_erp_compound(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound() argument
2049 dasd_3990_erp_compound_path(erp, sense); in dasd_3990_erp_compound()
2055 erp = dasd_3990_erp_compound_code(erp, sense); in dasd_3990_erp_compound()
2061 dasd_3990_erp_compound_config(erp, sense); in dasd_3990_erp_compound()
2076 * inspects the SIM SENSE data and starts an appropriate action
2079 * sense sense data of the actual error
2085 dasd_3990_erp_handle_sim(struct dasd_device *device, char *sense) in dasd_3990_erp_handle_sim() argument
2088 if ((sense[24] & DASD_SIM_MSG_TO_OP) || (sense[1] & 0x10)) { in dasd_3990_erp_handle_sim()
2091 "%02x%02x%02x%02x\n", sense[22], in dasd_3990_erp_handle_sim()
2092 sense[23], sense[11], sense[12]); in dasd_3990_erp_handle_sim()
2093 } else if (sense[24] & DASD_SIM_LOG) { in dasd_3990_erp_handle_sim()
2096 "%02x%02x%02x%02x\n", sense[22], in dasd_3990_erp_handle_sim()
2097 sense[23], sense[11], sense[12]); in dasd_3990_erp_handle_sim()
2105 * Does a detailed inspection of the 32 byte sense data
2109 * sense sense data of the actual error
2117 dasd_3990_erp_inspect_32(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_inspect_32() argument
2124 /* check for SIM sense data */ in dasd_3990_erp_inspect_32()
2125 if ((sense[6] & DASD_SIM_SENSE) == DASD_SIM_SENSE) in dasd_3990_erp_inspect_32()
2126 dasd_3990_erp_handle_sim(device, sense); in dasd_3990_erp_inspect_32()
2128 if (sense[25] & DASD_SENSE_BIT_0) { in dasd_3990_erp_inspect_32()
2131 dasd_3990_erp_compound_retry(erp, sense); in dasd_3990_erp_inspect_32()
2136 switch (sense[25]) { in dasd_3990_erp_inspect_32()
2165 erp = dasd_3990_erp_action_10_32(erp, sense); in dasd_3990_erp_inspect_32()
2180 erp = dasd_3990_erp_action_1B_32(erp, sense); in dasd_3990_erp_inspect_32()
2199 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_inspect_32()
2206 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_inspect_32()
2278 * main ERP control functions (24 and 32 byte sense)
2315 * Does a detailed inspection for sense data by calling either
2328 char *sense; in dasd_3990_erp_inspect() local
2335 /* sense data are located in the refers record of the in dasd_3990_erp_inspect()
2339 sense = dasd_get_sense(&erp->refers->irb); in dasd_3990_erp_inspect()
2340 if (!sense) in dasd_3990_erp_inspect()
2342 /* distinguish between 24 and 32 byte sense data */ in dasd_3990_erp_inspect()
2343 else if (sense[27] & DASD_SENSE_BIT_0) { in dasd_3990_erp_inspect()
2345 /* inspect the 24 byte sense data */ in dasd_3990_erp_inspect()
2346 erp_new = dasd_3990_erp_inspect_24(erp, sense); in dasd_3990_erp_inspect()
2350 /* inspect the 32 byte sense data */ in dasd_3990_erp_inspect()
2351 erp_new = dasd_3990_erp_inspect_32(erp, sense); in dasd_3990_erp_inspect()
2353 } /* end distinguish between 24 and 32 byte sense data */ in dasd_3990_erp_inspect()
2368 * TSB so the original sense data will not be changed.
2457 * determined based on the sense data.
2478 /* inspect sense, determine specific ERP if possible */ in dasd_3990_erp_additional_erp()
2493 * This means that the failed CCW and the relevant sense data
2495 * I don't distinguish between 24 and 32 byte sense because in case of
2496 * 24 byte sense byte 25 and 27 is set as well.
2517 /* one request has sense data, the other not -> no match, return 0 */ in dasd_3990_erp_error_match()
2520 /* no sense data in both cases -> check cstat for IFCC */ in dasd_3990_erp_error_match()
2528 /* check sense data; byte 0-2,25,27 */ in dasd_3990_erp_error_match()
2534 return 0; /* sense doesn't match */ in dasd_3990_erp_error_match()
2585 * DASD_3990_ERP_FURTHER_ERP (24 & 32 byte sense)
2605 char *sense = dasd_get_sense(&erp->irb); in dasd_3990_erp_further_erp() local
2607 /* check for 24 byte sense ERP */ in dasd_3990_erp_further_erp()
2622 if (sense && !(sense[2] & DASD_SENSE_BIT_0)) { in dasd_3990_erp_further_erp()
2627 switch (sense[25]) { in dasd_3990_erp_further_erp()
2647 sense[25]); in dasd_3990_erp_further_erp()
2651 /* check for 32 byte sense ERP */ in dasd_3990_erp_further_erp()
2652 } else if (sense && in dasd_3990_erp_further_erp()
2658 erp = dasd_3990_erp_compound(erp, sense); in dasd_3990_erp_further_erp()
2723 char *sense = dasd_get_sense(&erp->refers->irb); in dasd_3990_erp_handle_match_erp() local
2726 if (sense && erp->function == dasd_3990_erp_action_4) { in dasd_3990_erp_handle_match_erp()
2728 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_handle_match_erp()
2730 } else if (sense && in dasd_3990_erp_handle_match_erp()
2733 erp = dasd_3990_update_1B(erp, sense); in dasd_3990_erp_handle_match_erp()
2735 } else if (sense && erp->function == dasd_3990_erp_int_req) { in dasd_3990_erp_handle_match_erp()