Lines Matching full:sense

30  * 24 and 32 byte sense ERP functions
290 * sense sense data of the actual error
298 dasd_3990_erp_action_4(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_action_4() argument
315 if (sense && (sense[25] == 0x1D)) { /* state change pending */ in dasd_3990_erp_action_4()
324 } else if (sense && (sense[25] == 0x1E)) { /* busy */ in dasd_3990_erp_action_4()
346 * 24 byte sense ERP functions (only)
381 * Does a analysis of the sense data (message Format)
385 * sense current sense data
391 dasd_3990_handle_env_data(struct dasd_ccw_req * erp, char *sense) in dasd_3990_handle_env_data() argument
395 char msg_format = (sense[7] & 0xF0); in dasd_3990_handle_env_data()
396 char msg_no = (sense[7] & 0x0F); in dasd_3990_handle_env_data()
401 if (sense[1] & 0x10) { /* check message to operator bit */ in dasd_3990_handle_env_data()
445 "... %02x\n", sense[8]); in dasd_3990_handle_env_data()
466 sense[8]); in dasd_3990_handle_env_data()
488 "device = %02x\n", sense[4]); in dasd_3990_handle_env_data()
590 sense[8]); in dasd_3990_handle_env_data()
1018 * sense current sense data
1024 dasd_3990_erp_com_rej(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_com_rej() argument
1032 if (sense[2] & SNS2_ENV_DATA_PRESENT) { in dasd_3990_erp_com_rej()
1037 dasd_3990_handle_env_data(erp, sense); in dasd_3990_erp_com_rej()
1041 } else if (sense[1] & SNS1_WRITE_INHIBITED) { in dasd_3990_erp_com_rej()
1045 } else if (sense[7] == SNS7_INVALID_ON_SEC) { in dasd_3990_erp_com_rej()
1047 /* suppress dump of sense data for this error */ in dasd_3990_erp_com_rej()
1113 dasd_3990_erp_equip_check(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_equip_check() argument
1120 if (sense[1] & SNS1_WRITE_INHIBITED) { in dasd_3990_erp_equip_check()
1125 } else if (sense[2] & SNS2_ENV_DATA_PRESENT) { in dasd_3990_erp_equip_check()
1130 dasd_3990_handle_env_data(erp, sense); in dasd_3990_erp_equip_check()
1132 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_equip_check()
1134 } else if (sense[1] & SNS1_PERM_ERR) { in dasd_3990_erp_equip_check()
1166 dasd_3990_erp_data_check(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_data_check() argument
1173 if (sense[2] & SNS2_CORRECTABLE) { /* correctable data check */ in dasd_3990_erp_data_check()
1184 } else if (sense[2] & SNS2_ENV_DATA_PRESENT) { in dasd_3990_erp_data_check()
1190 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_data_check()
1192 } else if (sense[1] & SNS1_PERM_ERR) { in dasd_3990_erp_data_check()
1225 dasd_3990_erp_overrun(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_overrun() argument
1254 dasd_3990_erp_inv_format(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_inv_format() argument
1261 if (sense[2] & SNS2_ENV_DATA_PRESENT) { in dasd_3990_erp_inv_format()
1267 dasd_3990_handle_env_data(erp, sense); in dasd_3990_erp_inv_format()
1269 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_inv_format()
1292 dasd_3990_erp_EOC(struct dasd_ccw_req * default_erp, char *sense) in dasd_3990_erp_EOC() argument
1317 dasd_3990_erp_env_data(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_env_data() argument
1326 dasd_3990_handle_env_data(erp, sense); in dasd_3990_erp_env_data()
1329 if (sense[7] != 0x0F) { in dasd_3990_erp_env_data()
1330 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_env_data()
1352 dasd_3990_erp_no_rec(struct dasd_ccw_req * default_erp, char *sense) in dasd_3990_erp_no_rec() argument
1415 char *sense; in dasd_3990_erp_inspect_alias() local
1420 sense = dasd_get_sense(&erp->refers->irb); in dasd_3990_erp_inspect_alias()
1424 if (!test_bit(DASD_FLAG_OFFLINE, &cqr->startdev->flags) && sense in dasd_3990_erp_inspect_alias()
1425 && (sense[0] == 0x10) && (sense[7] == 0x0F) in dasd_3990_erp_inspect_alias()
1426 && (sense[8] == 0x67)) { in dasd_3990_erp_inspect_alias()
1457 * Does a detailed inspection of the 24 byte sense data
1461 * sense sense data of the actual error
1468 dasd_3990_erp_inspect_24(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_inspect_24() argument
1473 /* Check sense for .... */ in dasd_3990_erp_inspect_24()
1475 if ((erp_filled == NULL) && (sense[0] & SNS0_CMD_REJECT)) { in dasd_3990_erp_inspect_24()
1476 erp_filled = dasd_3990_erp_com_rej(erp, sense); in dasd_3990_erp_inspect_24()
1479 if ((erp_filled == NULL) && (sense[0] & SNS0_INTERVENTION_REQ)) { in dasd_3990_erp_inspect_24()
1483 if ((erp_filled == NULL) && (sense[0] & SNS0_BUS_OUT_CHECK)) { in dasd_3990_erp_inspect_24()
1487 if ((erp_filled == NULL) && (sense[0] & SNS0_EQUIPMENT_CHECK)) { in dasd_3990_erp_inspect_24()
1488 erp_filled = dasd_3990_erp_equip_check(erp, sense); in dasd_3990_erp_inspect_24()
1491 if ((erp_filled == NULL) && (sense[0] & SNS0_DATA_CHECK)) { in dasd_3990_erp_inspect_24()
1492 erp_filled = dasd_3990_erp_data_check(erp, sense); in dasd_3990_erp_inspect_24()
1495 if ((erp_filled == NULL) && (sense[0] & SNS0_OVERRUN)) { in dasd_3990_erp_inspect_24()
1496 erp_filled = dasd_3990_erp_overrun(erp, sense); in dasd_3990_erp_inspect_24()
1499 if ((erp_filled == NULL) && (sense[1] & SNS1_INV_TRACK_FORMAT)) { in dasd_3990_erp_inspect_24()
1500 erp_filled = dasd_3990_erp_inv_format(erp, sense); in dasd_3990_erp_inspect_24()
1503 if ((erp_filled == NULL) && (sense[1] & SNS1_EOC)) { in dasd_3990_erp_inspect_24()
1504 erp_filled = dasd_3990_erp_EOC(erp, sense); in dasd_3990_erp_inspect_24()
1507 if ((erp_filled == NULL) && (sense[2] & SNS2_ENV_DATA_PRESENT)) { in dasd_3990_erp_inspect_24()
1508 erp_filled = dasd_3990_erp_env_data(erp, sense); in dasd_3990_erp_inspect_24()
1511 if ((erp_filled == NULL) && (sense[1] & SNS1_NO_REC_FOUND)) { in dasd_3990_erp_inspect_24()
1512 erp_filled = dasd_3990_erp_no_rec(erp, sense); in dasd_3990_erp_inspect_24()
1515 if ((erp_filled == NULL) && (sense[1] & SNS1_FILE_PROTECTED)) { in dasd_3990_erp_inspect_24()
1530 * 32 byte sense ERP functions (only)
1543 * sense current sense data
1548 dasd_3990_erp_action_10_32(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_action_10_32() argument
1575 * sense current sense data
1582 dasd_3990_erp_action_1B_32(struct dasd_ccw_req * default_erp, char *sense) in dasd_3990_erp_action_1B_32() argument
1608 "32 bit sense, action 1B is not defined" in dasd_3990_erp_action_1B_32()
1614 if (sense[1] & 0x01) { in dasd_3990_erp_action_1B_32()
1658 if ((sense[3] == 0x01) && (LO_data[1] & 0x01)) { in dasd_3990_erp_action_1B_32()
1663 if ((sense[7] & 0x3F) == 0x01) { in dasd_3990_erp_action_1B_32()
1667 } else if ((sense[7] & 0x3F) == 0x03) { in dasd_3990_erp_action_1B_32()
1672 LO_data[0] = sense[7]; /* operation */ in dasd_3990_erp_action_1B_32()
1675 LO_data[1] = sense[8]; /* auxiliary */ in dasd_3990_erp_action_1B_32()
1676 LO_data[2] = sense[9]; in dasd_3990_erp_action_1B_32()
1677 LO_data[3] = sense[3]; /* count */ in dasd_3990_erp_action_1B_32()
1678 LO_data[4] = sense[29]; /* seek_addr.cyl */ in dasd_3990_erp_action_1B_32()
1679 LO_data[5] = sense[30]; /* seek_addr.cyl 2nd byte */ in dasd_3990_erp_action_1B_32()
1680 LO_data[7] = sense[31]; /* seek_addr.head 2nd byte */ in dasd_3990_erp_action_1B_32()
1682 memcpy(&(LO_data[8]), &(sense[11]), 8); in dasd_3990_erp_action_1B_32()
1735 * sense current sense data
1740 dasd_3990_update_1B(struct dasd_ccw_req * previous_erp, char *sense) in dasd_3990_update_1B() argument
1763 "32 bit sense, action 1B, update," in dasd_3990_update_1B()
1769 if (sense[1] & 0x01) { in dasd_3990_update_1B()
1793 /* update the LO with the new returned sense data */ in dasd_3990_update_1B()
1796 if ((sense[3] == 0x01) && (LO_data[1] & 0x01)) { in dasd_3990_update_1B()
1803 if ((sense[7] & 0x3F) == 0x01) { in dasd_3990_update_1B()
1807 } else if ((sense[7] & 0x3F) == 0x03) { in dasd_3990_update_1B()
1812 LO_data[0] = sense[7]; /* operation */ in dasd_3990_update_1B()
1815 LO_data[1] = sense[8]; /* auxiliary */ in dasd_3990_update_1B()
1816 LO_data[2] = sense[9]; in dasd_3990_update_1B()
1817 LO_data[3] = sense[3]; /* count */ in dasd_3990_update_1B()
1818 LO_data[4] = sense[29]; /* seek_addr.cyl */ in dasd_3990_update_1B()
1819 LO_data[5] = sense[30]; /* seek_addr.cyl 2nd byte */ in dasd_3990_update_1B()
1820 LO_data[7] = sense[31]; /* seek_addr.head 2nd byte */ in dasd_3990_update_1B()
1822 memcpy(&(LO_data[8]), &(sense[11]), 8); in dasd_3990_update_1B()
1842 * by the sense data. This makes enqueueing of the request
1846 * sense sense data of the actual error
1854 dasd_3990_erp_compound_retry(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound_retry() argument
1857 switch (sense[25] & 0x03) { in dasd_3990_erp_compound_retry()
1890 * sense sense data of the actual error
1898 dasd_3990_erp_compound_path(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound_path() argument
1900 if (sense[25] & DASD_SENSE_BIT_3) { in dasd_3990_erp_compound_path()
1923 * sense sense data of the actual error
1931 dasd_3990_erp_compound_code(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound_code() argument
1934 if (sense[25] & DASD_SENSE_BIT_2) { in dasd_3990_erp_compound_code()
1936 switch (sense[28]) { in dasd_3990_erp_compound_code()
1971 * sense sense data of the actual error
1979 dasd_3990_erp_compound_config(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound_config() argument
1982 if ((sense[25] & DASD_SENSE_BIT_1) && (sense[26] & DASD_SENSE_BIT_2)) { in dasd_3990_erp_compound_config()
2000 * sense sense data of the actual error
2008 dasd_3990_erp_compound(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_compound() argument
2014 dasd_3990_erp_compound_path(erp, sense); in dasd_3990_erp_compound()
2020 erp = dasd_3990_erp_compound_code(erp, sense); in dasd_3990_erp_compound()
2026 dasd_3990_erp_compound_config(erp, sense); in dasd_3990_erp_compound()
2041 * inspects the SIM SENSE data and starts an appropriate action
2044 * sense sense data of the actual error
2050 dasd_3990_erp_handle_sim(struct dasd_device *device, char *sense) in dasd_3990_erp_handle_sim() argument
2053 if ((sense[24] & DASD_SIM_MSG_TO_OP) || (sense[1] & 0x10)) { in dasd_3990_erp_handle_sim()
2056 "%02x%02x%02x%02x\n", sense[22], in dasd_3990_erp_handle_sim()
2057 sense[23], sense[11], sense[12]); in dasd_3990_erp_handle_sim()
2058 } else if (sense[24] & DASD_SIM_LOG) { in dasd_3990_erp_handle_sim()
2061 "%02x%02x%02x%02x\n", sense[22], in dasd_3990_erp_handle_sim()
2062 sense[23], sense[11], sense[12]); in dasd_3990_erp_handle_sim()
2070 * Does a detailed inspection of the 32 byte sense data
2074 * sense sense data of the actual error
2082 dasd_3990_erp_inspect_32(struct dasd_ccw_req * erp, char *sense) in dasd_3990_erp_inspect_32() argument
2089 /* check for SIM sense data */ in dasd_3990_erp_inspect_32()
2090 if ((sense[6] & DASD_SIM_SENSE) == DASD_SIM_SENSE) in dasd_3990_erp_inspect_32()
2091 dasd_3990_erp_handle_sim(device, sense); in dasd_3990_erp_inspect_32()
2093 if (sense[25] & DASD_SENSE_BIT_0) { in dasd_3990_erp_inspect_32()
2096 dasd_3990_erp_compound_retry(erp, sense); in dasd_3990_erp_inspect_32()
2101 switch (sense[25]) { in dasd_3990_erp_inspect_32()
2129 erp = dasd_3990_erp_action_10_32(erp, sense); in dasd_3990_erp_inspect_32()
2141 erp = dasd_3990_erp_action_1B_32(erp, sense); in dasd_3990_erp_inspect_32()
2160 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_inspect_32()
2167 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_inspect_32()
2239 * main ERP control functions (24 and 32 byte sense)
2276 * Does a detailed inspection for sense data by calling either
2289 char *sense; in dasd_3990_erp_inspect() local
2296 /* sense data are located in the refers record of the in dasd_3990_erp_inspect()
2300 sense = dasd_get_sense(&erp->refers->irb); in dasd_3990_erp_inspect()
2301 if (!sense) in dasd_3990_erp_inspect()
2303 /* distinguish between 24 and 32 byte sense data */ in dasd_3990_erp_inspect()
2304 else if (sense[27] & DASD_SENSE_BIT_0) { in dasd_3990_erp_inspect()
2306 /* inspect the 24 byte sense data */ in dasd_3990_erp_inspect()
2307 erp_new = dasd_3990_erp_inspect_24(erp, sense); in dasd_3990_erp_inspect()
2311 /* inspect the 32 byte sense data */ in dasd_3990_erp_inspect()
2312 erp_new = dasd_3990_erp_inspect_32(erp, sense); in dasd_3990_erp_inspect()
2314 } /* end distinguish between 24 and 32 byte sense data */ in dasd_3990_erp_inspect()
2329 * TSB so the original sense data will not be changed.
2418 * determined based on the sense data.
2439 /* inspect sense, determine specific ERP if possible */ in dasd_3990_erp_additional_erp()
2454 * This means that the failed CCW and the relevant sense data
2456 * I don't distinguish between 24 and 32 byte sense because in case of
2457 * 24 byte sense byte 25 and 27 is set as well.
2478 /* one request has sense data, the other not -> no match, return 0 */ in dasd_3990_erp_error_match()
2481 /* no sense data in both cases -> check cstat for IFCC */ in dasd_3990_erp_error_match()
2489 /* check sense data; byte 0-2,25,27 */ in dasd_3990_erp_error_match()
2495 return 0; /* sense doesn't match */ in dasd_3990_erp_error_match()
2546 * DASD_3990_ERP_FURTHER_ERP (24 & 32 byte sense)
2566 char *sense = dasd_get_sense(&erp->irb); in dasd_3990_erp_further_erp() local
2568 /* check for 24 byte sense ERP */ in dasd_3990_erp_further_erp()
2583 if (sense && !(sense[2] & DASD_SENSE_BIT_0)) { in dasd_3990_erp_further_erp()
2588 switch (sense[25]) { in dasd_3990_erp_further_erp()
2608 sense[25]); in dasd_3990_erp_further_erp()
2612 /* check for 32 byte sense ERP */ in dasd_3990_erp_further_erp()
2613 } else if (sense && in dasd_3990_erp_further_erp()
2619 erp = dasd_3990_erp_compound(erp, sense); in dasd_3990_erp_further_erp()
2683 char *sense = dasd_get_sense(&erp->refers->irb); in dasd_3990_erp_handle_match_erp() local
2686 if (sense && erp->function == dasd_3990_erp_action_4) { in dasd_3990_erp_handle_match_erp()
2688 erp = dasd_3990_erp_action_4(erp, sense); in dasd_3990_erp_handle_match_erp()
2690 } else if (sense && in dasd_3990_erp_handle_match_erp()
2693 erp = dasd_3990_update_1B(erp, sense); in dasd_3990_erp_handle_match_erp()
2695 } else if (sense && erp->function == dasd_3990_erp_int_req) { in dasd_3990_erp_handle_match_erp()