[S390] Add timeouts during sense PGID, path verification and disband PGID.

While the machine owns us an interrupt in these cases (and we should get
one), reality isn't always like that...

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>

authored by Cornelia Huck and committed by Martin Schwidefsky f1ee3281 b05e3703

+13
+2
drivers/s390/cio/device_fsm.c
··· 349 350 sch = to_subchannel(cdev->dev.parent); 351 352 if (state != DEV_STATE_ONLINE) 353 cio_disable_subchannel(sch); 354
··· 349 350 sch = to_subchannel(cdev->dev.parent); 351 352 + ccw_device_set_timeout(cdev, 0); 353 + 354 if (state != DEV_STATE_ONLINE) 355 cio_disable_subchannel(sch); 356
+3
drivers/s390/cio/device_ops.c
··· 216 (stctl & SCSW_STCTL_PRIM_STATUS))) 217 return 0; 218 219 /* 220 * Now we are ready to call the device driver interrupt handler. 221 */
··· 216 (stctl & SCSW_STCTL_PRIM_STATUS))) 217 return 0; 218 219 + /* Clear pending timers for device driver initiated I/O. */ 220 + if (ending_status) 221 + ccw_device_set_timeout(cdev, 0); 222 /* 223 * Now we are ready to call the device driver interrupt handler. 224 */
+8
drivers/s390/cio/device_pgid.c
··· 96 { 97 int ret; 98 99 cdev->private->state = DEV_STATE_SENSE_PGID; 100 cdev->private->imask = 0x80; 101 cdev->private->iretry = 5; ··· 483 ccw_device_verify_done(cdev, -ENODEV); 484 return; 485 } 486 __ccw_device_verify_start(cdev); 487 } 488 ··· 559 void 560 ccw_device_disband_start(struct ccw_device *cdev) 561 { 562 cdev->private->flags.pgid_single = 0; 563 cdev->private->iretry = 5; 564 cdev->private->imask = 0x80;
··· 96 { 97 int ret; 98 99 + /* Set a timeout of 60s */ 100 + ccw_device_set_timeout(cdev, 60*HZ); 101 + 102 cdev->private->state = DEV_STATE_SENSE_PGID; 103 cdev->private->imask = 0x80; 104 cdev->private->iretry = 5; ··· 480 ccw_device_verify_done(cdev, -ENODEV); 481 return; 482 } 483 + /* After 60s path verification is considered to have failed. */ 484 + ccw_device_set_timeout(cdev, 60*HZ); 485 __ccw_device_verify_start(cdev); 486 } 487 ··· 554 void 555 ccw_device_disband_start(struct ccw_device *cdev) 556 { 557 + /* After 60s disbanding is considered to have failed. */ 558 + ccw_device_set_timeout(cdev, 60*HZ); 559 + 560 cdev->private->flags.pgid_single = 0; 561 cdev->private->iretry = 5; 562 cdev->private->imask = 0x80;