aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390')
-rw-r--r--drivers/s390/block/dasd_3990_erp.c6
-rw-r--r--drivers/s390/block/dasd_devmap.c2
-rw-r--r--drivers/s390/block/dasd_eckd.c2
-rw-r--r--drivers/s390/char/raw3270.c2
-rw-r--r--drivers/s390/char/tape_char.c2
-rw-r--r--drivers/s390/char/tty3270.c2
-rw-r--r--drivers/s390/cio/device.c24
-rw-r--r--drivers/s390/cio/device_fsm.c4
-rw-r--r--drivers/s390/cio/qdio_main.c16
-rw-r--r--drivers/s390/crypto/zcrypt_api.h2
-rw-r--r--drivers/s390/net/claw.c2
-rw-r--r--drivers/s390/net/ctcm_fsms.c2
-rw-r--r--drivers/s390/net/lcs.c2
-rw-r--r--drivers/s390/net/qeth_core_main.c2
-rw-r--r--drivers/s390/scsi/zfcp_fsf.c2
-rw-r--r--drivers/s390/scsi/zfcp_qdio.c2
16 files changed, 43 insertions, 31 deletions
diff --git a/drivers/s390/block/dasd_3990_erp.c b/drivers/s390/block/dasd_3990_erp.c
index 1654a24817be..87a0cf160fe5 100644
--- a/drivers/s390/block/dasd_3990_erp.c
+++ b/drivers/s390/block/dasd_3990_erp.c
@@ -2207,7 +2207,7 @@ dasd_3990_erp_inspect_32(struct dasd_ccw_req * erp, char *sense)
2207 * DASD_3990_ERP_CONTROL_CHECK 2207 * DASD_3990_ERP_CONTROL_CHECK
2208 * 2208 *
2209 * DESCRIPTION 2209 * DESCRIPTION
2210 * Does a generic inspection if a control check occured and sets up 2210 * Does a generic inspection if a control check occurred and sets up
2211 * the related error recovery procedure 2211 * the related error recovery procedure
2212 * 2212 *
2213 * PARAMETER 2213 * PARAMETER
@@ -2250,7 +2250,7 @@ dasd_3990_erp_inspect(struct dasd_ccw_req *erp)
2250 struct dasd_ccw_req *erp_new = NULL; 2250 struct dasd_ccw_req *erp_new = NULL;
2251 char *sense; 2251 char *sense;
2252 2252
2253 /* if this problem occured on an alias retry on base */ 2253 /* if this problem occurred on an alias retry on base */
2254 erp_new = dasd_3990_erp_inspect_alias(erp); 2254 erp_new = dasd_3990_erp_inspect_alias(erp);
2255 if (erp_new) 2255 if (erp_new)
2256 return erp_new; 2256 return erp_new;
@@ -2282,7 +2282,7 @@ dasd_3990_erp_inspect(struct dasd_ccw_req *erp)
2282 * DASD_3990_ERP_ADD_ERP 2282 * DASD_3990_ERP_ADD_ERP
2283 * 2283 *
2284 * DESCRIPTION 2284 * DESCRIPTION
2285 * This funtion adds an additional request block (ERP) to the head of 2285 * This function adds an additional request block (ERP) to the head of
2286 * the given cqr (or erp). 2286 * the given cqr (or erp).
2287 * For a command mode cqr the erp is initialized as an default erp 2287 * For a command mode cqr the erp is initialized as an default erp
2288 * (retry TIC). 2288 * (retry TIC).
diff --git a/drivers/s390/block/dasd_devmap.c b/drivers/s390/block/dasd_devmap.c
index cb6a67bc89ff..42e1bf35f689 100644
--- a/drivers/s390/block/dasd_devmap.c
+++ b/drivers/s390/block/dasd_devmap.c
@@ -302,7 +302,7 @@ dasd_parse_keyword( char *parsestring ) {
302/* 302/*
303 * Try to interprete the first element on the comma separated parse string 303 * Try to interprete the first element on the comma separated parse string
304 * as a device number or a range of devices. If the interpretation is 304 * as a device number or a range of devices. If the interpretation is
305 * successfull, create the matching dasd_devmap entries and return a pointer 305 * successful, create the matching dasd_devmap entries and return a pointer
306 * to the residual string. 306 * to the residual string.
307 * If interpretation fails or in case of an error, return an error code. 307 * If interpretation fails or in case of an error, return an error code.
308 */ 308 */
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index 459f2cbe80fc..db8005d9f2fd 100644
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -2858,7 +2858,7 @@ static struct dasd_ccw_req *dasd_raw_build_cp(struct dasd_device *startdev,
2858 /* 2858 /*
2859 * struct PFX_eckd_data has up to 2 byte as extended parameter 2859 * struct PFX_eckd_data has up to 2 byte as extended parameter
2860 * this is needed for write full track and has to be mentioned 2860 * this is needed for write full track and has to be mentioned
2861 * seperately 2861 * separately
2862 * add 8 instead of 2 to keep 8 byte boundary 2862 * add 8 instead of 2 to keep 8 byte boundary
2863 */ 2863 */
2864 pfx_datasize = sizeof(struct PFX_eckd_data) + 8; 2864 pfx_datasize = sizeof(struct PFX_eckd_data) + 8;
diff --git a/drivers/s390/char/raw3270.c b/drivers/s390/char/raw3270.c
index 4c023761946f..e21a5c39ef20 100644
--- a/drivers/s390/char/raw3270.c
+++ b/drivers/s390/char/raw3270.c
@@ -604,7 +604,7 @@ __raw3270_size_device(struct raw3270 *rp)
604 /* 604 /*
605 * To determine the size of the 3270 device we need to do: 605 * To determine the size of the 3270 device we need to do:
606 * 1) send a 'read partition' data stream to the device 606 * 1) send a 'read partition' data stream to the device
607 * 2) wait for the attn interrupt that preceeds the query reply 607 * 2) wait for the attn interrupt that precedes the query reply
608 * 3) do a read modified to get the query reply 608 * 3) do a read modified to get the query reply
609 * To make things worse we have to cope with intervention 609 * To make things worse we have to cope with intervention
610 * required (3270 device switched to 'stand-by') and command 610 * required (3270 device switched to 'stand-by') and command
diff --git a/drivers/s390/char/tape_char.c b/drivers/s390/char/tape_char.c
index e090a307fdee..87cd0ab242de 100644
--- a/drivers/s390/char/tape_char.c
+++ b/drivers/s390/char/tape_char.c
@@ -139,7 +139,7 @@ tapechar_read(struct file *filp, char __user *data, size_t count, loff_t *ppos)
139 /* 139 /*
140 * If the tape isn't terminated yet, do it now. And since we then 140 * If the tape isn't terminated yet, do it now. And since we then
141 * are at the end of the tape there wouldn't be anything to read 141 * are at the end of the tape there wouldn't be anything to read
142 * anyways. So we return immediatly. 142 * anyways. So we return immediately.
143 */ 143 */
144 if(device->required_tapemarks) { 144 if(device->required_tapemarks) {
145 return tape_std_terminate_write(device); 145 return tape_std_terminate_write(device);
diff --git a/drivers/s390/char/tty3270.c b/drivers/s390/char/tty3270.c
index d33554df2b06..2db1482b406e 100644
--- a/drivers/s390/char/tty3270.c
+++ b/drivers/s390/char/tty3270.c
@@ -328,7 +328,7 @@ tty3270_write_callback(struct raw3270_request *rq, void *data)
328 328
329 tp = (struct tty3270 *) rq->view; 329 tp = (struct tty3270 *) rq->view;
330 if (rq->rc != 0) { 330 if (rq->rc != 0) {
331 /* Write wasn't successfull. Refresh all. */ 331 /* Write wasn't successful. Refresh all. */
332 tp->update_flags = TTY_UPDATE_ALL; 332 tp->update_flags = TTY_UPDATE_ALL;
333 tty3270_set_timer(tp, 1); 333 tty3270_set_timer(tp, 1);
334 } 334 }
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c
index df14c51f6532..8e04c00cf0ad 100644
--- a/drivers/s390/cio/device.c
+++ b/drivers/s390/cio/device.c
@@ -541,15 +541,24 @@ static ssize_t online_store (struct device *dev, struct device_attribute *attr,
541 int force, ret; 541 int force, ret;
542 unsigned long i; 542 unsigned long i;
543 543
544 if (!dev_fsm_final_state(cdev) && 544 /* Prevent conflict between multiple on-/offline processing requests. */
545 cdev->private->state != DEV_STATE_DISCONNECTED)
546 return -EAGAIN;
547 if (atomic_cmpxchg(&cdev->private->onoff, 0, 1) != 0) 545 if (atomic_cmpxchg(&cdev->private->onoff, 0, 1) != 0)
548 return -EAGAIN; 546 return -EAGAIN;
547 /* Prevent conflict between internal I/Os and on-/offline processing. */
548 if (!dev_fsm_final_state(cdev) &&
549 cdev->private->state != DEV_STATE_DISCONNECTED) {
550 ret = -EAGAIN;
551 goto out_onoff;
552 }
553 /* Prevent conflict between pending work and on-/offline processing.*/
554 if (work_pending(&cdev->private->todo_work)) {
555 ret = -EAGAIN;
556 goto out_onoff;
557 }
549 558
550 if (cdev->drv && !try_module_get(cdev->drv->driver.owner)) { 559 if (cdev->drv && !try_module_get(cdev->drv->driver.owner)) {
551 atomic_set(&cdev->private->onoff, 0); 560 ret = -EINVAL;
552 return -EINVAL; 561 goto out_onoff;
553 } 562 }
554 if (!strncmp(buf, "force\n", count)) { 563 if (!strncmp(buf, "force\n", count)) {
555 force = 1; 564 force = 1;
@@ -574,6 +583,7 @@ static ssize_t online_store (struct device *dev, struct device_attribute *attr,
574out: 583out:
575 if (cdev->drv) 584 if (cdev->drv)
576 module_put(cdev->drv->driver.owner); 585 module_put(cdev->drv->driver.owner);
586out_onoff:
577 atomic_set(&cdev->private->onoff, 0); 587 atomic_set(&cdev->private->onoff, 0);
578 return (ret < 0) ? ret : count; 588 return (ret < 0) ? ret : count;
579} 589}
@@ -1311,10 +1321,12 @@ static int purge_fn(struct device *dev, void *data)
1311 1321
1312 spin_lock_irq(cdev->ccwlock); 1322 spin_lock_irq(cdev->ccwlock);
1313 if (is_blacklisted(id->ssid, id->devno) && 1323 if (is_blacklisted(id->ssid, id->devno) &&
1314 (cdev->private->state == DEV_STATE_OFFLINE)) { 1324 (cdev->private->state == DEV_STATE_OFFLINE) &&
1325 (atomic_cmpxchg(&cdev->private->onoff, 0, 1) == 0)) {
1315 CIO_MSG_EVENT(3, "ccw: purging 0.%x.%04x\n", id->ssid, 1326 CIO_MSG_EVENT(3, "ccw: purging 0.%x.%04x\n", id->ssid,
1316 id->devno); 1327 id->devno);
1317 ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); 1328 ccw_device_sched_todo(cdev, CDEV_TODO_UNREG);
1329 atomic_set(&cdev->private->onoff, 0);
1318 } 1330 }
1319 spin_unlock_irq(cdev->ccwlock); 1331 spin_unlock_irq(cdev->ccwlock);
1320 /* Abort loop in case of pending signal. */ 1332 /* Abort loop in case of pending signal. */
diff --git a/drivers/s390/cio/device_fsm.c b/drivers/s390/cio/device_fsm.c
index a845695ac314..6084103672b5 100644
--- a/drivers/s390/cio/device_fsm.c
+++ b/drivers/s390/cio/device_fsm.c
@@ -318,7 +318,7 @@ ccw_device_sense_id_done(struct ccw_device *cdev, int err)
318 318
319/** 319/**
320 * ccw_device_notify() - inform the device's driver about an event 320 * ccw_device_notify() - inform the device's driver about an event
321 * @cdev: device for which an event occured 321 * @cdev: device for which an event occurred
322 * @event: event that occurred 322 * @event: event that occurred
323 * 323 *
324 * Returns: 324 * Returns:
@@ -688,7 +688,7 @@ ccw_device_online_verify(struct ccw_device *cdev, enum dev_event dev_event)
688 (scsw_stctl(&cdev->private->irb.scsw) & SCSW_STCTL_STATUS_PEND)) { 688 (scsw_stctl(&cdev->private->irb.scsw) & SCSW_STCTL_STATUS_PEND)) {
689 /* 689 /*
690 * No final status yet or final status not yet delivered 690 * No final status yet or final status not yet delivered
691 * to the device driver. Can't do path verfication now, 691 * to the device driver. Can't do path verification now,
692 * delay until final status was delivered. 692 * delay until final status was delivered.
693 */ 693 */
694 cdev->private->flags.doverify = 1; 694 cdev->private->flags.doverify = 1;
diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c
index 479c665e9e7c..c532ba929ccd 100644
--- a/drivers/s390/cio/qdio_main.c
+++ b/drivers/s390/cio/qdio_main.c
@@ -1649,26 +1649,26 @@ static int __init init_QDIO(void)
1649{ 1649{
1650 int rc; 1650 int rc;
1651 1651
1652 rc = qdio_setup_init(); 1652 rc = qdio_debug_init();
1653 if (rc) 1653 if (rc)
1654 return rc; 1654 return rc;
1655 rc = qdio_setup_init();
1656 if (rc)
1657 goto out_debug;
1655 rc = tiqdio_allocate_memory(); 1658 rc = tiqdio_allocate_memory();
1656 if (rc) 1659 if (rc)
1657 goto out_cache; 1660 goto out_cache;
1658 rc = qdio_debug_init();
1659 if (rc)
1660 goto out_ti;
1661 rc = tiqdio_register_thinints(); 1661 rc = tiqdio_register_thinints();
1662 if (rc) 1662 if (rc)
1663 goto out_debug; 1663 goto out_ti;
1664 return 0; 1664 return 0;
1665 1665
1666out_debug:
1667 qdio_debug_exit();
1668out_ti: 1666out_ti:
1669 tiqdio_free_memory(); 1667 tiqdio_free_memory();
1670out_cache: 1668out_cache:
1671 qdio_setup_exit(); 1669 qdio_setup_exit();
1670out_debug:
1671 qdio_debug_exit();
1672 return rc; 1672 return rc;
1673} 1673}
1674 1674
@@ -1676,8 +1676,8 @@ static void __exit exit_QDIO(void)
1676{ 1676{
1677 tiqdio_unregister_thinints(); 1677 tiqdio_unregister_thinints();
1678 tiqdio_free_memory(); 1678 tiqdio_free_memory();
1679 qdio_debug_exit();
1680 qdio_setup_exit(); 1679 qdio_setup_exit();
1680 qdio_debug_exit();
1681} 1681}
1682 1682
1683module_init(init_QDIO); 1683module_init(init_QDIO);
diff --git a/drivers/s390/crypto/zcrypt_api.h b/drivers/s390/crypto/zcrypt_api.h
index 88ebd114735b..9688f3985b07 100644
--- a/drivers/s390/crypto/zcrypt_api.h
+++ b/drivers/s390/crypto/zcrypt_api.h
@@ -76,7 +76,7 @@ struct ica_z90_status {
76 76
77/** 77/**
78 * Large random numbers are pulled in 4096 byte chunks from the crypto cards 78 * Large random numbers are pulled in 4096 byte chunks from the crypto cards
79 * and stored in a page. Be carefull when increasing this buffer due to size 79 * and stored in a page. Be careful when increasing this buffer due to size
80 * limitations for AP requests. 80 * limitations for AP requests.
81 */ 81 */
82#define ZCRYPT_RNG_BUFFER_SIZE 4096 82#define ZCRYPT_RNG_BUFFER_SIZE 4096
diff --git a/drivers/s390/net/claw.c b/drivers/s390/net/claw.c
index 9feb62febb3d..da8aa75bb20b 100644
--- a/drivers/s390/net/claw.c
+++ b/drivers/s390/net/claw.c
@@ -779,7 +779,7 @@ claw_irq_handler(struct ccw_device *cdev,
779 case CLAW_START_WRITE: 779 case CLAW_START_WRITE:
780 if (p_ch->irb->scsw.cmd.dstat & DEV_STAT_UNIT_CHECK) { 780 if (p_ch->irb->scsw.cmd.dstat & DEV_STAT_UNIT_CHECK) {
781 dev_info(&cdev->dev, 781 dev_info(&cdev->dev,
782 "%s: Unit Check Occured in " 782 "%s: Unit Check Occurred in "
783 "write channel\n", dev->name); 783 "write channel\n", dev->name);
784 clear_bit(0, (void *)&p_ch->IO_active); 784 clear_bit(0, (void *)&p_ch->IO_active);
785 if (p_ch->irb->ecw[0] & 0x80) { 785 if (p_ch->irb->ecw[0] & 0x80) {
diff --git a/drivers/s390/net/ctcm_fsms.c b/drivers/s390/net/ctcm_fsms.c
index 8c921fc3511a..2d602207541b 100644
--- a/drivers/s390/net/ctcm_fsms.c
+++ b/drivers/s390/net/ctcm_fsms.c
@@ -184,7 +184,7 @@ static void ctcmpc_chx_resend(fsm_instance *, int, void *);
184static void ctcmpc_chx_send_sweep(fsm_instance *fsm, int event, void *arg); 184static void ctcmpc_chx_send_sweep(fsm_instance *fsm, int event, void *arg);
185 185
186/** 186/**
187 * Check return code of a preceeding ccw_device call, halt_IO etc... 187 * Check return code of a preceding ccw_device call, halt_IO etc...
188 * 188 *
189 * ch : The channel, the error belongs to. 189 * ch : The channel, the error belongs to.
190 * Returns the error code (!= 0) to inspect. 190 * Returns the error code (!= 0) to inspect.
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c
index 7fbc4adbb6d5..49d1cfc3217e 100644
--- a/drivers/s390/net/lcs.c
+++ b/drivers/s390/net/lcs.c
@@ -1123,7 +1123,7 @@ list_modified:
1123 list_for_each_entry_safe(ipm, tmp, &card->ipm_list, list){ 1123 list_for_each_entry_safe(ipm, tmp, &card->ipm_list, list){
1124 switch (ipm->ipm_state) { 1124 switch (ipm->ipm_state) {
1125 case LCS_IPM_STATE_SET_REQUIRED: 1125 case LCS_IPM_STATE_SET_REQUIRED:
1126 /* del from ipm_list so noone else can tamper with 1126 /* del from ipm_list so no one else can tamper with
1127 * this entry */ 1127 * this entry */
1128 list_del_init(&ipm->list); 1128 list_del_init(&ipm->list);
1129 spin_unlock_irqrestore(&card->ipm_lock, flags); 1129 spin_unlock_irqrestore(&card->ipm_lock, flags);
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
index 10a3a3b4dd3e..85cc53117ea6 100644
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -1107,7 +1107,7 @@ static int qeth_setup_card(struct qeth_card *card)
1107 INIT_LIST_HEAD(card->ip_tbd_list); 1107 INIT_LIST_HEAD(card->ip_tbd_list);
1108 INIT_LIST_HEAD(&card->cmd_waiter_list); 1108 INIT_LIST_HEAD(&card->cmd_waiter_list);
1109 init_waitqueue_head(&card->wait_q); 1109 init_waitqueue_head(&card->wait_q);
1110 /* intial options */ 1110 /* initial options */
1111 qeth_set_intial_options(card); 1111 qeth_set_intial_options(card);
1112 /* IP address takeover */ 1112 /* IP address takeover */
1113 INIT_LIST_HEAD(&card->ipato.entries); 1113 INIT_LIST_HEAD(&card->ipato.entries);
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c
index a0e05ef65924..8512b5c0ef82 100644
--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -1083,7 +1083,7 @@ static void zfcp_fsf_send_els_handler(struct zfcp_fsf_req *req)
1083 } 1083 }
1084 break; 1084 break;
1085 case FSF_SBAL_MISMATCH: 1085 case FSF_SBAL_MISMATCH:
1086 /* should never occure, avoided in zfcp_fsf_send_els */ 1086 /* should never occur, avoided in zfcp_fsf_send_els */
1087 /* fall through */ 1087 /* fall through */
1088 default: 1088 default:
1089 req->status |= ZFCP_STATUS_FSFREQ_ERROR; 1089 req->status |= ZFCP_STATUS_FSFREQ_ERROR;
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c
index 8da5ed644c2b..98e97d90835b 100644
--- a/drivers/s390/scsi/zfcp_qdio.c
+++ b/drivers/s390/scsi/zfcp_qdio.c
@@ -391,7 +391,7 @@ int zfcp_qdio_open(struct zfcp_qdio *qdio)
391 if (do_QDIO(cdev, QDIO_FLAG_SYNC_INPUT, 0, 0, QDIO_MAX_BUFFERS_PER_Q)) 391 if (do_QDIO(cdev, QDIO_FLAG_SYNC_INPUT, 0, 0, QDIO_MAX_BUFFERS_PER_Q))
392 goto failed_qdio; 392 goto failed_qdio;
393 393
394 /* set index of first avalable SBALS / number of available SBALS */ 394 /* set index of first available SBALS / number of available SBALS */
395 qdio->req_q_idx = 0; 395 qdio->req_q_idx = 0;
396 atomic_set(&qdio->req_q_free, QDIO_MAX_BUFFERS_PER_Q); 396 atomic_set(&qdio->req_q_free, QDIO_MAX_BUFFERS_PER_Q);
397 atomic_set_mask(ZFCP_STATUS_ADAPTER_QDIOUP, &qdio->adapter->status); 397 atomic_set_mask(ZFCP_STATUS_ADAPTER_QDIOUP, &qdio->adapter->status);