⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dasd_3990_erp.c

📁 内核linux2.4.20,可跟rtlinux3.2打补丁 组成实时linux系统,编译内核
💻 C
📖 第 1 页 / 共 5 页
字号:
                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 7 - Invalid DCC selection "                                      "response or timeout");			break;		case 0x06:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 7 - Missing end operation; device "                                      "transfer complete");			break;		case 0x07:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 7 - Missing end operation; device "                                      "transfer incomplete");			break;		case 0x08:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 7 - Invalid tag-in for an "                                      "immediate command sequence");			break;		case 0x09:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 7 - Invalid tag-in for an "                                      "extended command sequence");			break;		case 0x0A:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 7 - 3990 microcode time out when "                                      "stopping selection");			break;		case 0x0B:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 7 - No response to selection "                                      "after a poll interruption");			break;		case 0x0C:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 7 - Permanent path error (DASD "                                      "controller not available)");			break;		case 0x0D:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 7 - DASD controller not available"                                      " on disconnected command chain");			break;		default:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 7 - Reserved");		}                break;			case 0x80:	/* Format 8 - Additional Device Equipment Checks */		switch (msg_no) {		case 0x00:	/* No Message */		case 0x01:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 8 - Error correction code "                                      "hardware fault");			break;		case 0x03:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 8 - Unexpected end operation "                                      "response code");			break;		case 0x04:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 8 - End operation with transfer "                                      "count not zero");			break;		case 0x05:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 8 - End operation with transfer "                                      "count zero");			break;		case 0x06:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 8 - DPS checks after a system "                                      "reset or selective reset");			break;		case 0x07:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 8 - DPS cannot be filled");			break;		case 0x08:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 8 - Short busy time-out during "                                      "device selection");			break;		case 0x09:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 8 - DASD controller failed to "                                      "set or reset the long busy latch");			break;		case 0x0A:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 8 - No interruption from device "                                      "during a command chain");			break;		default:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 8 - Reserved");		}                break;			case 0x90:	/* Format 9 - Device Read, Write, and Seek Checks */		switch (msg_no) {		case 0x00:			break;	/* No Message */		case 0x06:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 9 - Device check-2 error");			break;		case 0x07:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 9 - Head address did not compare");			break;		case 0x0A:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 9 - Track physical address did "                                      "not compare while oriented");			break;		case 0x0E:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 9 - Cylinder address did not "                                      "compare");			break;		default:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT 9 - Reserved");		}                break;			case 0xF0:		/* Format F - Cache Storage Checks */		switch (msg_no) {		case 0x00:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT F - Operation Terminated");			break;		case 0x01:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT F - Subsystem Processing Error");			break;		case 0x02:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT F - Cache or nonvolatile storage "                                      "equipment failure");			break;		case 0x04:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT F - Caching terminated");			break;		case 0x06:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT F - Cache fast write access not "                                      "authorized");			break;		case 0x07:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT F - Track format incorrect");			break;		case 0x09:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT F - Caching reinitiated");			break;		case 0x0A:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT F - Nonvolatile storage "                                      "terminated");			break;		case 0x0B:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT F - Volume is suspended duplex");			break;		case 0x0C:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT F - Subsystem status connot be "                                      "determined");			break;		case 0x0D:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT F - Caching status reset to "                                      "default");			break;		case 0x0E:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT F - DASD Fast Write inhibited");			break;		default:                        DASD_MESSAGE (KERN_WARNING, device, "%s",                                      "FORMAT D - Reserved");		}                break;			default:	/* unknown message format - should not happen */	} /* end switch message format */} /* end dasd_3990_handle_env_data *//* * DASD_3990_ERP_COM_REJ * * DESCRIPTION *   Handles 24 byte 'Command Reject' error. * * PARAMETER *   erp                current erp_head *   sense              current sense data *  * RETURN VALUES *   erp                'new' erp_head - pointer to new ERP  */ccw_req_t *dasd_3990_erp_com_rej (ccw_req_t *erp,		       char      *sense){	dasd_device_t *device = erp->device;        erp->function = dasd_3990_erp_com_rej;	/* env data present (ACTION 10 - retry should work) */	if (sense[2] & SNS2_ENV_DATA_PRESENT) {                DASD_MESSAGE (KERN_DEBUG, device, "%s",                              "Command Reject - environmental data present");		dasd_3990_handle_env_data (erp,                                           sense);		erp->retries = 5;	} else {		/* fatal error -  set status to FAILED */                DASD_MESSAGE (KERN_ERR, device, "%s",                              "Command Reject - Fatal error");                erp = dasd_3990_erp_cleanup (erp,                                             CQR_STATUS_FAILED);	}	return erp;} /* end dasd_3990_erp_com_rej *//* * DASD_3990_ERP_BUS_OUT  * * DESCRIPTION *   Handles 24 byte 'Bus Out Parity Check' error. * * PARAMETER *   erp                current erp_head * RETURN VALUES *   erp                new erp_head - pointer to new ERP */ccw_req_t *dasd_3990_erp_bus_out (ccw_req_t *erp){	dasd_device_t *device = erp->device;        /* first time set initial retry counter and erp_function */        /* and retry once without blocking queue                 */        /* (this enables easier enqueing of the cqr)             */        if (erp->function != dasd_3990_erp_bus_out) {                erp->retries  = 256;                erp->function = dasd_3990_erp_bus_out;        } else {                /* issue a message and wait for 'device ready' interrupt */                DASD_MESSAGE (KERN_DEBUG, device, "%s",                              "bus out parity error or BOPC requested by "                              "channel");                                dasd_3990_erp_block_queue (erp,                                           60);                        }	return erp;} /* end dasd_3990_erp_bus_out *//* * DASD_3990_ERP_EQUIP_CHECK * * DESCRIPTION *   Handles 24 byte 'Equipment Check' error. * * PARAMETER *   erp                current erp_head * RETURN VALUES *   erp                new erp_head - pointer to new ERP */ccw_req_t *dasd_3990_erp_equip_check (ccw_req_t *erp,			   char      *sense){	dasd_device_t *device = erp->device;	erp->function = dasd_3990_erp_equip_check;	if (sense[1] & SNS1_WRITE_INHIBITED) {		DASD_MESSAGE (KERN_DEBUG, device, "%s",                              "Write inhibited path encountered");		/* vary path offline */		DASD_MESSAGE (KERN_ERR, device, "%s",                              "Path should be varied off-line. "                              "This is not implemented yet \n - please report "                              "to linux390@de.ibm.com");		erp = dasd_3990_erp_action_1 (erp);	} else if (sense[2] & SNS2_ENV_DATA_PRESENT) {                                DASD_MESSAGE (KERN_DEBUG, device, "%s",                              "Equipment Check - "                              "environmental data present");                                dasd_3990_handle_env_data (erp,                                           sense);                                erp = dasd_3990_erp_action_4 (erp,                                              sense);                        } else if (sense[1] & SNS1_PERM_ERR) {                DASD_MESSAGE (KERN_DEBUG, device, "%s",                              "Equipment Check - retry exhausted or "                              "undesirable");                                erp = dasd_3990_erp_action_1 (erp);                        } else {                /* all other equipment checks - Action 5 */                /* rest is done when retries == 0 */                DASD_MESSAGE (KERN_DEBUG, device, "%s",                              "Equipment check or processing error");                                erp = dasd_3990_erp_action_5 (erp);        }                return erp;        } /* end dasd_3990_erp_equip_check *//* * DASD_3990_ERP_DATA_CHECK * * DESCRIPTION *   Handles 24 byte 'Data Check' error. * * PARAMETER *   erp                current erp_head * RETURN VALUES *   erp                new erp_head - pointer to new ERP */ccw_req_t *dasd_3990_erp_data_check (ccw_req_t *erp,			  char      *sense){	dasd_device_t *device = erp->device;	erp->function = dasd_3990_erp_data_check;	if (sense[2] & SNS2_CORRECTABLE) {	/* correctable data check */		/* issue message that the data has been corrected */		DASD_MESSAGE (KERN_EMERG, device, "%s",                              "Data recovered during retry with PCI "                              "fetch mode active");                /* not possible to handle this situation in Linux */                    panic("No way to inform appliction about the possibly "                      "incorret data");	} else if (sense[2] & SNS2_ENV_DATA_PRESENT) {		DASD_MESSAGE (KERN_DEBUG, device, "%s",                              "Uncorrectable data check recovered secondary "                              "addr of duplex pair");		erp = dasd_3990_erp_action_4 (erp,					      sense);	} else if (sense[1] & SNS1_PERM_ERR) {		DASD_MESSAGE (KERN_DEBUG, device, "%s",                              "Uncorrectable data check with internal "                              "retry exhausted");		erp = dasd_3990_erp_action_1 (erp);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -