/* Check since device may again have become not operational. */ if (!sch->schib.pmcw.dnv) state = DEV_STATE_NOT_OPER; 
ccw_device_recog_done(struct ccw_device *cdev, int state){	struct subchannel *sch;	int notify, old_lpm, same_dev;	sch = to_subchannel(cdev->dev.parent);	ccw_device_set_timeout(cdev, 0);	cio_disable_subchannel(sch);	/*	 * Now that we tried recognition, we have performed device selection	 * through ssch() and the path information is up to date.	 */	old_lpm = sch->lpm;	stsch(sch->irq, &sch->schib);	sch->lpm = sch->schib.pmcw.pim &		sch->schib.pmcw.pam &		sch->schib.pmcw.pom &		sch->opm;	if (cdev->private->state == DEV_STATE_DISCONNECTED_SENSE_ID)		/* Force reprobe on all chpids. */		old_lpm = 0;	if (sch->lpm != old_lpm)		__recover_lost_chpids(sch, old_lpm);	if (cdev->private->state == DEV_STATE_DISCONNECTED_SENSE_ID) {		if (state == DEV_STATE_NOT_OPER) {			cdev->private->flags.recog_done = 1;			cdev->private->state = DEV_STATE_DISCONNECTED;			return;		}		/* Boxed devices don't need extra treatment. */	}	notify = 0;	same_dev = 0; /* Keep the compiler quiet... */	switch (state) {	case DEV_STATE_NOT_OPER:		CIO_DEBUG(KERN_WARNING, 2,			  "SenseID : unknown device %04x on subchannel %04x\n",			  cdev->private->devno, sch->irq);		break;	case DEV_STATE_OFFLINE:		if (cdev->private->state == DEV_STATE_DISCONNECTED_SENSE_ID) {			same_dev = ccw_device_handle_oper(cdev);			notify = 1;		}		/* fill out sense information */		cdev->id = (struct ccw_device_id) {			.cu_type   = cdev->private->senseid.cu_type,			.cu_model  = cdev->private->senseid.cu_model,			.dev_type  = cdev->private->senseid.dev_type,			.dev_model = cdev->private->senseid.dev_model,		};		if (notify) {			cdev->private->state = DEV_STATE_OFFLINE;			if (same_dev) {				/* Get device online again. */				ccw_device_online(cdev);				wake_up(&cdev->private->wait_q);			}			return;		}		/* Issue device info message. */		CIO_DEBUG(KERN_INFO, 2, "SenseID : device %04x reports: "			  "CU  Type/Mod = %04X/%02X, Dev Type/Mod = "			  "%04X/%02X\n", cdev->private->devno,			  cdev->id.cu_type, cdev->id.cu_model,			  cdev->id.dev_type, cdev->id.dev_model);		break;	case DEV_STATE_BOXED:		CIO_DEBUG(KERN_WARNING, 2,			  "SenseID : boxed device %04x on subchannel %04x\n",			  cdev->private->devno, sch->irq);		break;	}	cdev->private->state = state;	io_subchannel_recog_done(cdev);	if (state != DEV_STATE_NOT_OPER)		wake_up(&cdev->private->wait_q);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/4ffa92340b22a59575afe60ea155195c43213120/device_fsm.c/clean/drivers/s390/cio/device_fsm.c