aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-03-21 11:52:18 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-21 11:52:18 -0500
commitb05005772f34497eb2b7415a651fe785cbe70e16 (patch)
treeb176aeb7fa9baf69e77ddd83e844727490bfcf28 /drivers/s390
parent044f324f6ea5d55391db62fca6a295b2651cb946 (diff)
parent7705a8792b0fc82fd7d4dd923724606bbfd9fb20 (diff)
Merge branch 'origin'
Conflicts: Documentation/video4linux/CARDLIST.cx88 drivers/media/video/cx88/Kconfig drivers/media/video/em28xx/em28xx-video.c drivers/media/video/saa7134/saa7134-dvb.c Resolved as in the original merge by Mauro Carvalho Chehab
Diffstat (limited to 'drivers/s390')
-rw-r--r--drivers/s390/Kconfig7
-rw-r--r--drivers/s390/block/dasd.c105
-rw-r--r--drivers/s390/block/dasd_3370_erp.c1
-rw-r--r--drivers/s390/block/dasd_3990_erp.c1
-rw-r--r--drivers/s390/block/dasd_9336_erp.c1
-rw-r--r--drivers/s390/block/dasd_9343_erp.c1
-rw-r--r--drivers/s390/block/dasd_cmb.c2
-rw-r--r--drivers/s390/block/dasd_devmap.c1
-rw-r--r--drivers/s390/block/dasd_diag.c1
-rw-r--r--drivers/s390/block/dasd_diag.h1
-rw-r--r--drivers/s390/block/dasd_eckd.c1
-rw-r--r--drivers/s390/block/dasd_eckd.h1
-rw-r--r--drivers/s390/block/dasd_erp.c1
-rw-r--r--drivers/s390/block/dasd_fba.c1
-rw-r--r--drivers/s390/block/dasd_fba.h1
-rw-r--r--drivers/s390/block/dasd_genhd.c3
-rw-r--r--drivers/s390/block/dasd_int.h9
-rw-r--r--drivers/s390/block/dasd_ioctl.c11
-rw-r--r--drivers/s390/block/dasd_proc.c4
-rw-r--r--drivers/s390/char/con3215.c3
-rw-r--r--drivers/s390/char/con3270.c3
-rw-r--r--drivers/s390/char/keyboard.c6
-rw-r--r--drivers/s390/char/sclp.c13
-rw-r--r--drivers/s390/char/tape_34xx.c5
-rw-r--r--drivers/s390/char/tape_class.c4
-rw-r--r--drivers/s390/char/tape_class.h2
-rw-r--r--drivers/s390/char/tape_core.c5
-rw-r--r--drivers/s390/cio/airq.c2
-rw-r--r--drivers/s390/cio/blacklist.c1
-rw-r--r--drivers/s390/cio/ccwgroup.c1
-rw-r--r--drivers/s390/cio/chsc.c16
-rw-r--r--drivers/s390/cio/chsc.h2
-rw-r--r--drivers/s390/cio/cio.c1
-rw-r--r--drivers/s390/cio/cmf.c2
-rw-r--r--drivers/s390/cio/css.c4
-rw-r--r--drivers/s390/cio/device.c7
-rw-r--r--drivers/s390/cio/device_ops.c2
-rw-r--r--drivers/s390/cio/device_pgid.c2
-rw-r--r--drivers/s390/cio/device_status.c1
-rw-r--r--drivers/s390/cio/qdio.c18
-rw-r--r--drivers/s390/cio/qdio.h2
-rw-r--r--drivers/s390/crypto/z90common.h2
-rw-r--r--drivers/s390/crypto/z90crypt.h2
-rw-r--r--drivers/s390/crypto/z90hardware.c6
-rw-r--r--drivers/s390/crypto/z90main.c10
-rw-r--r--drivers/s390/net/claw.c11
-rw-r--r--drivers/s390/net/claw.h2
-rw-r--r--drivers/s390/net/ctcdbug.c5
-rw-r--r--drivers/s390/net/ctcdbug.h4
-rw-r--r--drivers/s390/net/ctcmain.c19
-rw-r--r--drivers/s390/net/ctcmain.h4
-rw-r--r--drivers/s390/net/ctctty.c2
-rw-r--r--drivers/s390/net/ctctty.h2
-rw-r--r--drivers/s390/net/cu3088.c2
-rw-r--r--drivers/s390/net/fsm.c2
-rw-r--r--drivers/s390/net/fsm.h2
-rw-r--r--drivers/s390/net/iucv.c16
-rw-r--r--drivers/s390/net/lcs.c36
-rw-r--r--drivers/s390/net/lcs.h4
-rw-r--r--drivers/s390/net/netiucv.c15
-rw-r--r--drivers/s390/net/qeth.h114
-rw-r--r--drivers/s390/net/qeth_eddp.c16
-rw-r--r--drivers/s390/net/qeth_eddp.h6
-rw-r--r--drivers/s390/net/qeth_fs.h5
-rw-r--r--drivers/s390/net/qeth_main.c30
-rw-r--r--drivers/s390/net/qeth_mpc.c2
-rw-r--r--drivers/s390/net/qeth_mpc.h4
-rw-r--r--drivers/s390/net/qeth_proc.c4
-rw-r--r--drivers/s390/net/qeth_sys.c4
-rw-r--r--drivers/s390/net/qeth_tso.h4
-rw-r--r--drivers/s390/net/smsgiucv.c2
-rw-r--r--drivers/s390/s390_rdev.c1
-rw-r--r--drivers/s390/s390mach.h17
-rw-r--r--drivers/s390/scsi/zfcp_aux.c2
-rw-r--r--drivers/s390/scsi/zfcp_ccw.c2
-rw-r--r--drivers/s390/scsi/zfcp_dbf.c78
-rw-r--r--drivers/s390/scsi/zfcp_def.h16
-rw-r--r--drivers/s390/scsi/zfcp_erp.c95
-rw-r--r--drivers/s390/scsi/zfcp_ext.h7
-rw-r--r--drivers/s390/scsi/zfcp_fsf.c82
-rw-r--r--drivers/s390/scsi/zfcp_qdio.c2
-rw-r--r--drivers/s390/scsi/zfcp_scsi.c25
-rw-r--r--drivers/s390/scsi/zfcp_sysfs_adapter.c6
-rw-r--r--drivers/s390/scsi/zfcp_sysfs_driver.c2
-rw-r--r--drivers/s390/scsi/zfcp_sysfs_port.c2
-rw-r--r--drivers/s390/scsi/zfcp_sysfs_unit.c2
86 files changed, 396 insertions, 535 deletions
diff --git a/drivers/s390/Kconfig b/drivers/s390/Kconfig
index a86a650f3d6d..721787cc5a1c 100644
--- a/drivers/s390/Kconfig
+++ b/drivers/s390/Kconfig
@@ -51,6 +51,13 @@ config UNIX98_PTY_COUNT
51 When not in use, each additional set of 256 PTYs occupy 51 When not in use, each additional set of 256 PTYs occupy
52 approximately 8 KB of kernel memory on 32-bit architectures. 52 approximately 8 KB of kernel memory on 32-bit architectures.
53 53
54config HANGCHECK_TIMER
55 tristate "Hangcheck timer"
56 help
57 The hangcheck-timer module detects when the system has gone
58 out to lunch past a certain margin. It can reboot the system
59 or merely print a warning.
60
54source "drivers/char/watchdog/Kconfig" 61source "drivers/char/watchdog/Kconfig"
55 62
56comment "S/390 character device drivers" 63comment "S/390 character device drivers"
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index ef4c687e7c01..33157c84d1d3 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -7,7 +7,6 @@
7 * Bugreports.to..: <Linux390@de.ibm.com> 7 * Bugreports.to..: <Linux390@de.ibm.com>
8 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 8 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001
9 * 9 *
10 * $Revision: 1.172 $
11 */ 10 */
12 11
13#include <linux/config.h> 12#include <linux/config.h>
@@ -153,7 +152,12 @@ static inline void
153dasd_state_known_to_new(struct dasd_device * device) 152dasd_state_known_to_new(struct dasd_device * device)
154{ 153{
155 /* Forget the discipline information. */ 154 /* Forget the discipline information. */
155 if (device->discipline)
156 module_put(device->discipline->owner);
156 device->discipline = NULL; 157 device->discipline = NULL;
158 if (device->base_discipline)
159 module_put(device->base_discipline->owner);
160 device->base_discipline = NULL;
157 device->state = DASD_STATE_NEW; 161 device->state = DASD_STATE_NEW;
158 162
159 dasd_free_queue(device); 163 dasd_free_queue(device);
@@ -211,9 +215,10 @@ dasd_state_basic_to_known(struct dasd_device * device)
211 * interrupt for this detection ccw uses the kernel event daemon to 215 * interrupt for this detection ccw uses the kernel event daemon to
212 * trigger the call to dasd_change_state. All this is done in the 216 * trigger the call to dasd_change_state. All this is done in the
213 * discipline code, see dasd_eckd.c. 217 * discipline code, see dasd_eckd.c.
214 * After the analysis ccw is done (do_analysis returned 0 or error) 218 * After the analysis ccw is done (do_analysis returned 0) the block
215 * the block device is setup. Either a fake disk is added to allow 219 * device is setup.
216 * formatting or a proper device request queue is created. 220 * In case the analysis returns an error, the device setup is stopped
221 * (a fake disk was already added to allow formatting).
217 */ 222 */
218static inline int 223static inline int
219dasd_state_basic_to_ready(struct dasd_device * device) 224dasd_state_basic_to_ready(struct dasd_device * device)
@@ -223,13 +228,19 @@ dasd_state_basic_to_ready(struct dasd_device * device)
223 rc = 0; 228 rc = 0;
224 if (device->discipline->do_analysis != NULL) 229 if (device->discipline->do_analysis != NULL)
225 rc = device->discipline->do_analysis(device); 230 rc = device->discipline->do_analysis(device);
226 if (rc) 231 if (rc) {
232 if (rc != -EAGAIN)
233 device->state = DASD_STATE_UNFMT;
227 return rc; 234 return rc;
235 }
236 /* make disk known with correct capacity */
228 dasd_setup_queue(device); 237 dasd_setup_queue(device);
238 set_capacity(device->gdp, device->blocks << device->s2b_shift);
229 device->state = DASD_STATE_READY; 239 device->state = DASD_STATE_READY;
230 if (dasd_scan_partitions(device) != 0) 240 rc = dasd_scan_partitions(device);
241 if (rc)
231 device->state = DASD_STATE_BASIC; 242 device->state = DASD_STATE_BASIC;
232 return 0; 243 return rc;
233} 244}
234 245
235/* 246/*
@@ -250,6 +261,15 @@ dasd_state_ready_to_basic(struct dasd_device * device)
250} 261}
251 262
252/* 263/*
264 * Back to basic.
265 */
266static inline void
267dasd_state_unfmt_to_basic(struct dasd_device * device)
268{
269 device->state = DASD_STATE_BASIC;
270}
271
272/*
253 * Make the device online and schedule the bottom half to start 273 * Make the device online and schedule the bottom half to start
254 * the requeueing of requests from the linux request queue to the 274 * the requeueing of requests from the linux request queue to the
255 * ccw queue. 275 * ccw queue.
@@ -315,8 +335,12 @@ dasd_decrease_state(struct dasd_device *device)
315 if (device->state == DASD_STATE_READY && 335 if (device->state == DASD_STATE_READY &&
316 device->target <= DASD_STATE_BASIC) 336 device->target <= DASD_STATE_BASIC)
317 dasd_state_ready_to_basic(device); 337 dasd_state_ready_to_basic(device);
318 338
319 if (device->state == DASD_STATE_BASIC && 339 if (device->state == DASD_STATE_UNFMT &&
340 device->target <= DASD_STATE_BASIC)
341 dasd_state_unfmt_to_basic(device);
342
343 if (device->state == DASD_STATE_BASIC &&
320 device->target <= DASD_STATE_KNOWN) 344 device->target <= DASD_STATE_KNOWN)
321 dasd_state_basic_to_known(device); 345 dasd_state_basic_to_known(device);
322 346
@@ -675,11 +699,8 @@ dasd_term_IO(struct dasd_ccw_req * cqr)
675 rc = ccw_device_clear(device->cdev, (long) cqr); 699 rc = ccw_device_clear(device->cdev, (long) cqr);
676 switch (rc) { 700 switch (rc) {
677 case 0: /* termination successful */ 701 case 0: /* termination successful */
678 if (cqr->retries > 0) { 702 cqr->retries--;
679 cqr->retries--; 703 cqr->status = DASD_CQR_CLEAR;
680 cqr->status = DASD_CQR_CLEAR;
681 } else
682 cqr->status = DASD_CQR_FAILED;
683 cqr->stopclk = get_clock(); 704 cqr->stopclk = get_clock();
684 DBF_DEV_EVENT(DBF_DEBUG, device, 705 DBF_DEV_EVENT(DBF_DEBUG, device,
685 "terminate cqr %p successful", 706 "terminate cqr %p successful",
@@ -1308,7 +1329,7 @@ dasd_tasklet(struct dasd_device * device)
1308 /* Now call the callback function of requests with final status */ 1329 /* Now call the callback function of requests with final status */
1309 list_for_each_safe(l, n, &final_queue) { 1330 list_for_each_safe(l, n, &final_queue) {
1310 cqr = list_entry(l, struct dasd_ccw_req, list); 1331 cqr = list_entry(l, struct dasd_ccw_req, list);
1311 list_del(&cqr->list); 1332 list_del_init(&cqr->list);
1312 if (cqr->callback != NULL) 1333 if (cqr->callback != NULL)
1313 (cqr->callback)(cqr, cqr->callback_data); 1334 (cqr->callback)(cqr, cqr->callback_data);
1314 } 1335 }
@@ -1393,7 +1414,9 @@ _wait_for_wakeup(struct dasd_ccw_req *cqr)
1393 1414
1394 device = cqr->device; 1415 device = cqr->device;
1395 spin_lock_irq(get_ccwdev_lock(device->cdev)); 1416 spin_lock_irq(get_ccwdev_lock(device->cdev));
1396 rc = cqr->status == DASD_CQR_DONE || cqr->status == DASD_CQR_FAILED; 1417 rc = ((cqr->status == DASD_CQR_DONE ||
1418 cqr->status == DASD_CQR_FAILED) &&
1419 list_empty(&cqr->list));
1397 spin_unlock_irq(get_ccwdev_lock(device->cdev)); 1420 spin_unlock_irq(get_ccwdev_lock(device->cdev));
1398 return rc; 1421 return rc;
1399} 1422}
@@ -1457,15 +1480,37 @@ dasd_sleep_on_interruptible(struct dasd_ccw_req * cqr)
1457 while (!finished) { 1480 while (!finished) {
1458 rc = wait_event_interruptible(wait_q, _wait_for_wakeup(cqr)); 1481 rc = wait_event_interruptible(wait_q, _wait_for_wakeup(cqr));
1459 if (rc != -ERESTARTSYS) { 1482 if (rc != -ERESTARTSYS) {
1460 /* Request status is either done or failed. */ 1483 /* Request is final (done or failed) */
1461 rc = (cqr->status == DASD_CQR_FAILED) ? -EIO : 0; 1484 rc = (cqr->status == DASD_CQR_DONE) ? 0 : -EIO;
1462 break; 1485 break;
1463 } 1486 }
1464 spin_lock_irq(get_ccwdev_lock(device->cdev)); 1487 spin_lock_irq(get_ccwdev_lock(device->cdev));
1465 if (cqr->status == DASD_CQR_IN_IO && 1488 switch (cqr->status) {
1466 device->discipline->term_IO(cqr) == 0) { 1489 case DASD_CQR_IN_IO:
1467 list_del(&cqr->list); 1490 /* terminate runnig cqr */
1491 if (device->discipline->term_IO) {
1492 cqr->retries = -1;
1493 device->discipline->term_IO(cqr);
1494 /*nished =
1495 * wait (non-interruptible) for final status
1496 * because signal ist still pending
1497 */
1498 spin_unlock_irq(get_ccwdev_lock(device->cdev));
1499 wait_event(wait_q, _wait_for_wakeup(cqr));
1500 spin_lock_irq(get_ccwdev_lock(device->cdev));
1501 rc = (cqr->status == DASD_CQR_DONE) ? 0 : -EIO;
1502 finished = 1;
1503 }
1504 break;
1505 case DASD_CQR_QUEUED:
1506 /* request */
1507 list_del_init(&cqr->list);
1508 rc = -EIO;
1468 finished = 1; 1509 finished = 1;
1510 break;
1511 default:
1512 /* cqr with 'non-interruptable' status - just wait */
1513 break;
1469 } 1514 }
1470 spin_unlock_irq(get_ccwdev_lock(device->cdev)); 1515 spin_unlock_irq(get_ccwdev_lock(device->cdev));
1471 } 1516 }
@@ -1697,7 +1742,7 @@ dasd_open(struct inode *inp, struct file *filp)
1697 goto out; 1742 goto out;
1698 } 1743 }
1699 1744
1700 if (device->state < DASD_STATE_BASIC) { 1745 if (device->state <= DASD_STATE_BASIC) {
1701 DBF_DEV_EVENT(DBF_ERR, device, " %s", 1746 DBF_DEV_EVENT(DBF_ERR, device, " %s",
1702 " Cannot open unrecognized device"); 1747 " Cannot open unrecognized device");
1703 rc = -ENODEV; 1748 rc = -ENODEV;
@@ -1839,9 +1884,10 @@ dasd_generic_remove (struct ccw_device *cdev)
1839 */ 1884 */
1840int 1885int
1841dasd_generic_set_online (struct ccw_device *cdev, 1886dasd_generic_set_online (struct ccw_device *cdev,
1842 struct dasd_discipline *discipline) 1887 struct dasd_discipline *base_discipline)
1843 1888
1844{ 1889{
1890 struct dasd_discipline *discipline;
1845 struct dasd_device *device; 1891 struct dasd_device *device;
1846 int rc; 1892 int rc;
1847 1893
@@ -1849,6 +1895,7 @@ dasd_generic_set_online (struct ccw_device *cdev,
1849 if (IS_ERR(device)) 1895 if (IS_ERR(device))
1850 return PTR_ERR(device); 1896 return PTR_ERR(device);
1851 1897
1898 discipline = base_discipline;
1852 if (device->features & DASD_FEATURE_USEDIAG) { 1899 if (device->features & DASD_FEATURE_USEDIAG) {
1853 if (!dasd_diag_discipline_pointer) { 1900 if (!dasd_diag_discipline_pointer) {
1854 printk (KERN_WARNING 1901 printk (KERN_WARNING
@@ -1860,6 +1907,16 @@ dasd_generic_set_online (struct ccw_device *cdev,
1860 } 1907 }
1861 discipline = dasd_diag_discipline_pointer; 1908 discipline = dasd_diag_discipline_pointer;
1862 } 1909 }
1910 if (!try_module_get(base_discipline->owner)) {
1911 dasd_delete_device(device);
1912 return -EINVAL;
1913 }
1914 if (!try_module_get(discipline->owner)) {
1915 module_put(base_discipline->owner);
1916 dasd_delete_device(device);
1917 return -EINVAL;
1918 }
1919 device->base_discipline = base_discipline;
1863 device->discipline = discipline; 1920 device->discipline = discipline;
1864 1921
1865 rc = discipline->check_device(device); 1922 rc = discipline->check_device(device);
@@ -1868,6 +1925,8 @@ dasd_generic_set_online (struct ccw_device *cdev,
1868 "dasd_generic couldn't online device %s " 1925 "dasd_generic couldn't online device %s "
1869 "with discipline %s rc=%i\n", 1926 "with discipline %s rc=%i\n",
1870 cdev->dev.bus_id, discipline->name, rc); 1927 cdev->dev.bus_id, discipline->name, rc);
1928 module_put(discipline->owner);
1929 module_put(base_discipline->owner);
1871 dasd_delete_device(device); 1930 dasd_delete_device(device);
1872 return rc; 1931 return rc;
1873 } 1932 }
diff --git a/drivers/s390/block/dasd_3370_erp.c b/drivers/s390/block/dasd_3370_erp.c
index 84565c8f584e..1d11c2a9525d 100644
--- a/drivers/s390/block/dasd_3370_erp.c
+++ b/drivers/s390/block/dasd_3370_erp.c
@@ -4,7 +4,6 @@
4 * Bugreports.to..: <Linux390@de.ibm.com> 4 * Bugreports.to..: <Linux390@de.ibm.com>
5 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000 5 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000
6 * 6 *
7 * $Revision: 1.9 $
8 */ 7 */
9 8
10#define PRINTK_HEADER "dasd_erp(3370)" 9#define PRINTK_HEADER "dasd_erp(3370)"
diff --git a/drivers/s390/block/dasd_3990_erp.c b/drivers/s390/block/dasd_3990_erp.c
index c143ecb53d9d..4ee0f934e325 100644
--- a/drivers/s390/block/dasd_3990_erp.c
+++ b/drivers/s390/block/dasd_3990_erp.c
@@ -5,7 +5,6 @@
5 * Bugreports.to..: <Linux390@de.ibm.com> 5 * Bugreports.to..: <Linux390@de.ibm.com>
6 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000, 2001 6 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000, 2001
7 * 7 *
8 * $Revision: 1.36 $
9 */ 8 */
10 9
11#include <linux/timer.h> 10#include <linux/timer.h>
diff --git a/drivers/s390/block/dasd_9336_erp.c b/drivers/s390/block/dasd_9336_erp.c
index 01e87170a3a2..dc861446d056 100644
--- a/drivers/s390/block/dasd_9336_erp.c
+++ b/drivers/s390/block/dasd_9336_erp.c
@@ -4,7 +4,6 @@
4 * Bugreports.to..: <Linux390@de.ibm.com> 4 * Bugreports.to..: <Linux390@de.ibm.com>
5 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000 5 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000
6 * 6 *
7 * $Revision: 1.8 $
8 */ 7 */
9 8
10#define PRINTK_HEADER "dasd_erp(9336)" 9#define PRINTK_HEADER "dasd_erp(9336)"
diff --git a/drivers/s390/block/dasd_9343_erp.c b/drivers/s390/block/dasd_9343_erp.c
index 2a23b74faf3f..4a5b79569aaa 100644
--- a/drivers/s390/block/dasd_9343_erp.c
+++ b/drivers/s390/block/dasd_9343_erp.c
@@ -4,7 +4,6 @@
4 * Bugreports.to..: <Linux390@de.ibm.com> 4 * Bugreports.to..: <Linux390@de.ibm.com>
5 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000 5 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000
6 * 6 *
7 * $Revision: 1.13 $
8 */ 7 */
9 8
10#define PRINTK_HEADER "dasd_erp(9343)" 9#define PRINTK_HEADER "dasd_erp(9343)"
diff --git a/drivers/s390/block/dasd_cmb.c b/drivers/s390/block/dasd_cmb.c
index 4f365bff275c..e88f73ee72ce 100644
--- a/drivers/s390/block/dasd_cmb.c
+++ b/drivers/s390/block/dasd_cmb.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * linux/drivers/s390/block/dasd_cmb.c ($Revision: 1.9 $)
3 *
4 * Linux on zSeries Channel Measurement Facility support 2 * Linux on zSeries Channel Measurement Facility support
5 * (dasd device driver interface) 3 * (dasd device driver interface)
6 * 4 *
diff --git a/drivers/s390/block/dasd_devmap.c b/drivers/s390/block/dasd_devmap.c
index caee16a3dc62..1629b27c48ab 100644
--- a/drivers/s390/block/dasd_devmap.c
+++ b/drivers/s390/block/dasd_devmap.c
@@ -11,7 +11,6 @@
11 * functions may not be called from interrupt context. In particular 11 * functions may not be called from interrupt context. In particular
12 * dasd_get_device is a no-no from interrupt context. 12 * dasd_get_device is a no-no from interrupt context.
13 * 13 *
14 * $Revision: 1.43 $
15 */ 14 */
16 15
17#include <linux/config.h> 16#include <linux/config.h>
diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c
index ba80fdea7ebf..3f9d704d2657 100644
--- a/drivers/s390/block/dasd_diag.c
+++ b/drivers/s390/block/dasd_diag.c
@@ -6,7 +6,6 @@
6 * Bugreports.to..: <Linux390@de.ibm.com> 6 * Bugreports.to..: <Linux390@de.ibm.com>
7 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 7 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
8 * 8 *
9 * $Revision: 1.53 $
10 */ 9 */
11 10
12#include <linux/config.h> 11#include <linux/config.h>
diff --git a/drivers/s390/block/dasd_diag.h b/drivers/s390/block/dasd_diag.h
index a4f80bd735f1..38a4e55f8953 100644
--- a/drivers/s390/block/dasd_diag.h
+++ b/drivers/s390/block/dasd_diag.h
@@ -6,7 +6,6 @@
6 * Bugreports.to..: <Linux390@de.ibm.com> 6 * Bugreports.to..: <Linux390@de.ibm.com>
7 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 7 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
8 * 8 *
9 * $Revision: 1.9 $
10 */ 9 */
11 10
12#define MDSK_WRITE_REQ 0x01 11#define MDSK_WRITE_REQ 0x01
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index 96eb48258580..822e2a265578 100644
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -7,7 +7,6 @@
7 * Bugreports.to..: <Linux390@de.ibm.com> 7 * Bugreports.to..: <Linux390@de.ibm.com>
8 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 8 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
9 * 9 *
10 * $Revision: 1.74 $
11 */ 10 */
12 11
13#include <linux/config.h> 12#include <linux/config.h>
diff --git a/drivers/s390/block/dasd_eckd.h b/drivers/s390/block/dasd_eckd.h
index b6888c68b224..bc3823d35223 100644
--- a/drivers/s390/block/dasd_eckd.h
+++ b/drivers/s390/block/dasd_eckd.h
@@ -5,7 +5,6 @@
5 * Bugreports.to..: <Linux390@de.ibm.com> 5 * Bugreports.to..: <Linux390@de.ibm.com>
6 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 6 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
7 * 7 *
8 * $Revision: 1.10 $
9 */ 8 */
10 9
11#ifndef DASD_ECKD_H 10#ifndef DASD_ECKD_H
diff --git a/drivers/s390/block/dasd_erp.c b/drivers/s390/block/dasd_erp.c
index 7cb98d25f341..8fd71ab02ef0 100644
--- a/drivers/s390/block/dasd_erp.c
+++ b/drivers/s390/block/dasd_erp.c
@@ -7,7 +7,6 @@
7 * Bugreports.to..: <Linux390@de.ibm.com> 7 * Bugreports.to..: <Linux390@de.ibm.com>
8 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 8 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001
9 * 9 *
10 * $Revision: 1.14 $
11 */ 10 */
12 11
13#include <linux/config.h> 12#include <linux/config.h>
diff --git a/drivers/s390/block/dasd_fba.c b/drivers/s390/block/dasd_fba.c
index 8ec75dc08e2c..91145698f8e9 100644
--- a/drivers/s390/block/dasd_fba.c
+++ b/drivers/s390/block/dasd_fba.c
@@ -4,7 +4,6 @@
4 * Bugreports.to..: <Linux390@de.ibm.com> 4 * Bugreports.to..: <Linux390@de.ibm.com>
5 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 5 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
6 * 6 *
7 * $Revision: 1.41 $
8 */ 7 */
9 8
10#include <linux/config.h> 9#include <linux/config.h>
diff --git a/drivers/s390/block/dasd_fba.h b/drivers/s390/block/dasd_fba.h
index 624f0402ee22..da1fa91fc01d 100644
--- a/drivers/s390/block/dasd_fba.h
+++ b/drivers/s390/block/dasd_fba.h
@@ -4,7 +4,6 @@
4 * Bugreports.to..: <Linux390@de.ibm.com> 4 * Bugreports.to..: <Linux390@de.ibm.com>
5 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 5 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
6 * 6 *
7 * $Revision: 1.6 $
8 */ 7 */
9 8
10#ifndef DASD_FBA_H 9#ifndef DASD_FBA_H
diff --git a/drivers/s390/block/dasd_genhd.c b/drivers/s390/block/dasd_genhd.c
index a601c9a33541..fce2835e7d19 100644
--- a/drivers/s390/block/dasd_genhd.c
+++ b/drivers/s390/block/dasd_genhd.c
@@ -9,7 +9,6 @@
9 * 9 *
10 * gendisk related functions for the dasd driver. 10 * gendisk related functions for the dasd driver.
11 * 11 *
12 * $Revision: 1.51 $
13 */ 12 */
14 13
15#include <linux/config.h> 14#include <linux/config.h>
@@ -101,8 +100,6 @@ dasd_scan_partitions(struct dasd_device * device)
101{ 100{
102 struct block_device *bdev; 101 struct block_device *bdev;
103 102
104 /* Make the disk known. */
105 set_capacity(device->gdp, device->blocks << device->s2b_shift);
106 bdev = bdget_disk(device->gdp, 0); 103 bdev = bdget_disk(device->gdp, 0);
107 if (!bdev || blkdev_get(bdev, FMODE_READ, 1) < 0) 104 if (!bdev || blkdev_get(bdev, FMODE_READ, 1) < 0)
108 return -ENODEV; 105 return -ENODEV;
diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h
index e4b401500b01..7cb0b9e78a6a 100644
--- a/drivers/s390/block/dasd_int.h
+++ b/drivers/s390/block/dasd_int.h
@@ -6,7 +6,6 @@
6 * Bugreports.to..: <Linux390@de.ibm.com> 6 * Bugreports.to..: <Linux390@de.ibm.com>
7 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 7 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
8 * 8 *
9 * $Revision: 1.68 $
10 */ 9 */
11 10
12#ifndef DASD_INT_H 11#ifndef DASD_INT_H
@@ -27,7 +26,7 @@
27 * new: the dasd_device structure is allocated. 26 * new: the dasd_device structure is allocated.
28 * known: the discipline for the device is identified. 27 * known: the discipline for the device is identified.
29 * basic: the device can do basic i/o. 28 * basic: the device can do basic i/o.
30 * accept: the device is analysed (format is known). 29 * unfmt: the device could not be analyzed (format is unknown).
31 * ready: partition detection is done and the device is can do block io. 30 * ready: partition detection is done and the device is can do block io.
32 * online: the device accepts requests from the block device queue. 31 * online: the device accepts requests from the block device queue.
33 * 32 *
@@ -48,8 +47,9 @@
48#define DASD_STATE_NEW 0 47#define DASD_STATE_NEW 0
49#define DASD_STATE_KNOWN 1 48#define DASD_STATE_KNOWN 1
50#define DASD_STATE_BASIC 2 49#define DASD_STATE_BASIC 2
51#define DASD_STATE_READY 3 50#define DASD_STATE_UNFMT 3
52#define DASD_STATE_ONLINE 4 51#define DASD_STATE_READY 4
52#define DASD_STATE_ONLINE 5
53 53
54#include <linux/module.h> 54#include <linux/module.h>
55#include <linux/wait.h> 55#include <linux/wait.h>
@@ -291,6 +291,7 @@ struct dasd_device {
291 291
292 /* Device discipline stuff. */ 292 /* Device discipline stuff. */
293 struct dasd_discipline *discipline; 293 struct dasd_discipline *discipline;
294 struct dasd_discipline *base_discipline;
294 char *private; 295 char *private;
295 296
296 /* Device state and target state. */ 297 /* Device state and target state. */
diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c
index 9396fcacb8f8..fafeeae52675 100644
--- a/drivers/s390/block/dasd_ioctl.c
+++ b/drivers/s390/block/dasd_ioctl.c
@@ -7,8 +7,6 @@
7 * Bugreports.to..: <Linux390@de.ibm.com> 7 * Bugreports.to..: <Linux390@de.ibm.com>
8 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 8 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001
9 * 9 *
10 * $Revision: 1.50 $
11 *
12 * i/o controls for the dasd driver. 10 * i/o controls for the dasd driver.
13 */ 11 */
14#include <linux/config.h> 12#include <linux/config.h>
@@ -423,8 +421,15 @@ dasd_ioctl_information(struct block_device *bdev, int no, long args)
423 dasd_info->cu_model = cdev->id.cu_model; 421 dasd_info->cu_model = cdev->id.cu_model;
424 dasd_info->dev_type = cdev->id.dev_type; 422 dasd_info->dev_type = cdev->id.dev_type;
425 dasd_info->dev_model = cdev->id.dev_model; 423 dasd_info->dev_model = cdev->id.dev_model;
426 dasd_info->open_count = atomic_read(&device->open_count);
427 dasd_info->status = device->state; 424 dasd_info->status = device->state;
425 /*
426 * The open_count is increased for every opener, that includes
427 * the blkdev_get in dasd_scan_partitions.
428 * This must be hidden from user-space.
429 */
430 dasd_info->open_count = atomic_read(&device->open_count);
431 if (!device->bdev)
432 dasd_info->open_count++;
428 433
429 /* 434 /*
430 * check if device is really formatted 435 * check if device is really formatted
diff --git a/drivers/s390/block/dasd_proc.c b/drivers/s390/block/dasd_proc.c
index fff9020d4886..1aa3c261718a 100644
--- a/drivers/s390/block/dasd_proc.c
+++ b/drivers/s390/block/dasd_proc.c
@@ -9,7 +9,6 @@
9 * 9 *
10 * /proc interface for the dasd driver. 10 * /proc interface for the dasd driver.
11 * 11 *
12 * $Revision: 1.33 $
13 */ 12 */
14 13
15#include <linux/config.h> 14#include <linux/config.h>
@@ -94,6 +93,9 @@ dasd_devices_show(struct seq_file *m, void *v)
94 case DASD_STATE_BASIC: 93 case DASD_STATE_BASIC:
95 seq_printf(m, "basic"); 94 seq_printf(m, "basic");
96 break; 95 break;
96 case DASD_STATE_UNFMT:
97 seq_printf(m, "unformatted");
98 break;
97 case DASD_STATE_READY: 99 case DASD_STATE_READY:
98 case DASD_STATE_ONLINE: 100 case DASD_STATE_ONLINE:
99 seq_printf(m, "active "); 101 seq_printf(m, "active ");
diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c
index 1f060914cfa4..606f6ad285a0 100644
--- a/drivers/s390/char/con3215.c
+++ b/drivers/s390/char/con3215.c
@@ -21,6 +21,7 @@
21#include <linux/init.h> 21#include <linux/init.h>
22#include <linux/console.h> 22#include <linux/console.h>
23#include <linux/interrupt.h> 23#include <linux/interrupt.h>
24#include <linux/err.h>
24 25
25#include <linux/slab.h> 26#include <linux/slab.h>
26#include <linux/bootmem.h> 27#include <linux/bootmem.h>
@@ -864,7 +865,7 @@ con3215_init(void)
864 } 865 }
865 866
866 cdev = ccw_device_probe_console(); 867 cdev = ccw_device_probe_console();
867 if (!cdev) 868 if (IS_ERR(cdev))
868 return -ENODEV; 869 return -ENODEV;
869 870
870 raw3215[0] = raw = (struct raw3215_info *) 871 raw3215[0] = raw = (struct raw3215_info *)
diff --git a/drivers/s390/char/con3270.c b/drivers/s390/char/con3270.c
index c570a9f6ce9c..ef607a1de55a 100644
--- a/drivers/s390/char/con3270.c
+++ b/drivers/s390/char/con3270.c
@@ -15,6 +15,7 @@
15#include <linux/interrupt.h> 15#include <linux/interrupt.h>
16#include <linux/list.h> 16#include <linux/list.h>
17#include <linux/types.h> 17#include <linux/types.h>
18#include <linux/err.h>
18 19
19#include <asm/ccwdev.h> 20#include <asm/ccwdev.h>
20#include <asm/cio.h> 21#include <asm/cio.h>
@@ -597,7 +598,7 @@ con3270_init(void)
597 } 598 }
598 599
599 cdev = ccw_device_probe_console(); 600 cdev = ccw_device_probe_console();
600 if (!cdev) 601 if (IS_ERR(cdev))
601 return -ENODEV; 602 return -ENODEV;
602 rp = raw3270_setup_console(cdev); 603 rp = raw3270_setup_console(cdev);
603 if (IS_ERR(rp)) 604 if (IS_ERR(rp))
diff --git a/drivers/s390/char/keyboard.c b/drivers/s390/char/keyboard.c
index 5bda2340a39d..a317a123daba 100644
--- a/drivers/s390/char/keyboard.c
+++ b/drivers/s390/char/keyboard.c
@@ -440,7 +440,11 @@ do_kdgkb_ioctl(struct kbd_data *kbd, struct kbsentry __user *u_kbs,
440 return -EPERM; 440 return -EPERM;
441 len = strnlen_user(u_kbs->kb_string, 441 len = strnlen_user(u_kbs->kb_string,
442 sizeof(u_kbs->kb_string) - 1); 442 sizeof(u_kbs->kb_string) - 1);
443 p = kmalloc(len, GFP_KERNEL); 443 if (!len)
444 return -EFAULT;
445 if (len > sizeof(u_kbs->kb_string) - 1)
446 return -EINVAL;
447 p = kmalloc(len + 1, GFP_KERNEL);
444 if (!p) 448 if (!p)
445 return -ENOMEM; 449 return -ENOMEM;
446 if (copy_from_user(p, u_kbs->kb_string, len)) { 450 if (copy_from_user(p, u_kbs->kb_string, len)) {
diff --git a/drivers/s390/char/sclp.c b/drivers/s390/char/sclp.c
index ceb0e474fde4..4138564402b8 100644
--- a/drivers/s390/char/sclp.c
+++ b/drivers/s390/char/sclp.c
@@ -85,11 +85,10 @@ static volatile enum sclp_mask_state_t {
85/* Maximum retry counts */ 85/* Maximum retry counts */
86#define SCLP_INIT_RETRY 3 86#define SCLP_INIT_RETRY 3
87#define SCLP_MASK_RETRY 3 87#define SCLP_MASK_RETRY 3
88#define SCLP_REQUEST_RETRY 3
89 88
90/* Timeout intervals in seconds.*/ 89/* Timeout intervals in seconds.*/
91#define SCLP_BUSY_INTERVAL 2 90#define SCLP_BUSY_INTERVAL 10
92#define SCLP_RETRY_INTERVAL 5 91#define SCLP_RETRY_INTERVAL 15
93 92
94static void sclp_process_queue(void); 93static void sclp_process_queue(void);
95static int sclp_init_mask(int calculate); 94static int sclp_init_mask(int calculate);
@@ -153,11 +152,9 @@ __sclp_start_request(struct sclp_req *req)
153 if (sclp_running_state != sclp_running_state_idle) 152 if (sclp_running_state != sclp_running_state_idle)
154 return 0; 153 return 0;
155 del_timer(&sclp_request_timer); 154 del_timer(&sclp_request_timer);
156 if (req->start_count <= SCLP_REQUEST_RETRY) { 155 rc = service_call(req->command, req->sccb);
157 rc = service_call(req->command, req->sccb); 156 req->start_count++;
158 req->start_count++; 157
159 } else
160 rc = -EIO;
161 if (rc == 0) { 158 if (rc == 0) {
162 /* Sucessfully started request */ 159 /* Sucessfully started request */
163 req->status = SCLP_REQ_RUNNING; 160 req->status = SCLP_REQ_RUNNING;
diff --git a/drivers/s390/char/tape_34xx.c b/drivers/s390/char/tape_34xx.c
index 20be88e91fa1..682039cac15b 100644
--- a/drivers/s390/char/tape_34xx.c
+++ b/drivers/s390/char/tape_34xx.c
@@ -1357,7 +1357,7 @@ tape_34xx_init (void)
1357 debug_set_level(TAPE_DBF_AREA, 6); 1357 debug_set_level(TAPE_DBF_AREA, 6);
1358#endif 1358#endif
1359 1359
1360 DBF_EVENT(3, "34xx init: $Revision: 1.23 $\n"); 1360 DBF_EVENT(3, "34xx init\n");
1361 /* Register driver for 3480/3490 tapes. */ 1361 /* Register driver for 3480/3490 tapes. */
1362 rc = ccw_driver_register(&tape_34xx_driver); 1362 rc = ccw_driver_register(&tape_34xx_driver);
1363 if (rc) 1363 if (rc)
@@ -1377,8 +1377,7 @@ tape_34xx_exit(void)
1377 1377
1378MODULE_DEVICE_TABLE(ccw, tape_34xx_ids); 1378MODULE_DEVICE_TABLE(ccw, tape_34xx_ids);
1379MODULE_AUTHOR("(C) 2001-2002 IBM Deutschland Entwicklung GmbH"); 1379MODULE_AUTHOR("(C) 2001-2002 IBM Deutschland Entwicklung GmbH");
1380MODULE_DESCRIPTION("Linux on zSeries channel attached 3480 tape " 1380MODULE_DESCRIPTION("Linux on zSeries channel attached 3480 tape device driver");
1381 "device driver ($Revision: 1.23 $)");
1382MODULE_LICENSE("GPL"); 1381MODULE_LICENSE("GPL");
1383 1382
1384module_init(tape_34xx_init); 1383module_init(tape_34xx_init);
diff --git a/drivers/s390/char/tape_class.c b/drivers/s390/char/tape_class.c
index fcaee447d6fe..b3569c82bb16 100644
--- a/drivers/s390/char/tape_class.c
+++ b/drivers/s390/char/tape_class.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * (C) Copyright IBM Corp. 2004 2 * (C) Copyright IBM Corp. 2004
3 * tape_class.c ($Revision: 1.8 $) 3 * tape_class.c
4 * 4 *
5 * Tape class device support 5 * Tape class device support
6 * 6 *
@@ -12,7 +12,7 @@
12MODULE_AUTHOR("Stefan Bader <shbader@de.ibm.com>"); 12MODULE_AUTHOR("Stefan Bader <shbader@de.ibm.com>");
13MODULE_DESCRIPTION( 13MODULE_DESCRIPTION(
14 "(C) Copyright IBM Corp. 2004 All Rights Reserved.\n" 14 "(C) Copyright IBM Corp. 2004 All Rights Reserved.\n"
15 "tape_class.c ($Revision: 1.8 $)" 15 "tape_class.c"
16); 16);
17MODULE_LICENSE("GPL"); 17MODULE_LICENSE("GPL");
18 18
diff --git a/drivers/s390/char/tape_class.h b/drivers/s390/char/tape_class.h
index 33133ad00ba2..3d0ca054cdee 100644
--- a/drivers/s390/char/tape_class.h
+++ b/drivers/s390/char/tape_class.h
@@ -1,6 +1,6 @@
1/* 1/*
2 * (C) Copyright IBM Corp. 2004 All Rights Reserved. 2 * (C) Copyright IBM Corp. 2004 All Rights Reserved.
3 * tape_class.h ($Revision: 1.4 $) 3 * tape_class.h
4 * 4 *
5 * Tape class device support 5 * Tape class device support
6 * 6 *
diff --git a/drivers/s390/char/tape_core.c b/drivers/s390/char/tape_core.c
index 8f486e1a8507..4ea438c749c9 100644
--- a/drivers/s390/char/tape_core.c
+++ b/drivers/s390/char/tape_core.c
@@ -1239,7 +1239,7 @@ tape_init (void)
1239#ifdef DBF_LIKE_HELL 1239#ifdef DBF_LIKE_HELL
1240 debug_set_level(TAPE_DBF_AREA, 6); 1240 debug_set_level(TAPE_DBF_AREA, 6);
1241#endif 1241#endif
1242 DBF_EVENT(3, "tape init: ($Revision: 1.54 $)\n"); 1242 DBF_EVENT(3, "tape init\n");
1243 tape_proc_init(); 1243 tape_proc_init();
1244 tapechar_init (); 1244 tapechar_init ();
1245 tapeblock_init (); 1245 tapeblock_init ();
@@ -1263,8 +1263,7 @@ tape_exit(void)
1263 1263
1264MODULE_AUTHOR("(C) 2001 IBM Deutschland Entwicklung GmbH by Carsten Otte and " 1264MODULE_AUTHOR("(C) 2001 IBM Deutschland Entwicklung GmbH by Carsten Otte and "
1265 "Michael Holzheu (cotte@de.ibm.com,holzheu@de.ibm.com)"); 1265 "Michael Holzheu (cotte@de.ibm.com,holzheu@de.ibm.com)");
1266MODULE_DESCRIPTION("Linux on zSeries channel attached " 1266MODULE_DESCRIPTION("Linux on zSeries channel attached tape device driver");
1267 "tape device driver ($Revision: 1.54 $)");
1268MODULE_LICENSE("GPL"); 1267MODULE_LICENSE("GPL");
1269 1268
1270module_init(tape_init); 1269module_init(tape_init);
diff --git a/drivers/s390/cio/airq.c b/drivers/s390/cio/airq.c
index cd2cc28e16a7..5287631fbfc8 100644
--- a/drivers/s390/cio/airq.c
+++ b/drivers/s390/cio/airq.c
@@ -2,8 +2,6 @@
2 * drivers/s390/cio/airq.c 2 * drivers/s390/cio/airq.c
3 * S/390 common I/O routines -- support for adapter interruptions 3 * S/390 common I/O routines -- support for adapter interruptions
4 * 4 *
5 * $Revision: 1.15 $
6 *
7 * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, 5 * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH,
8 * IBM Corporation 6 * IBM Corporation
9 * Author(s): Ingo Adlung (adlung@de.ibm.com) 7 * Author(s): Ingo Adlung (adlung@de.ibm.com)
diff --git a/drivers/s390/cio/blacklist.c b/drivers/s390/cio/blacklist.c
index 72f27c151c09..cb8e2e672b68 100644
--- a/drivers/s390/cio/blacklist.c
+++ b/drivers/s390/cio/blacklist.c
@@ -1,7 +1,6 @@
1/* 1/*
2 * drivers/s390/cio/blacklist.c 2 * drivers/s390/cio/blacklist.c
3 * S/390 common I/O routines -- blacklisting of specific devices 3 * S/390 common I/O routines -- blacklisting of specific devices
4 * $Revision: 1.42 $
5 * 4 *
6 * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, 5 * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH,
7 * IBM Corporation 6 * IBM Corporation
diff --git a/drivers/s390/cio/ccwgroup.c b/drivers/s390/cio/ccwgroup.c
index 6c077ad71edc..8013c8eb76fe 100644
--- a/drivers/s390/cio/ccwgroup.c
+++ b/drivers/s390/cio/ccwgroup.c
@@ -1,7 +1,6 @@
1/* 1/*
2 * drivers/s390/cio/ccwgroup.c 2 * drivers/s390/cio/ccwgroup.c
3 * bus driver for ccwgroup 3 * bus driver for ccwgroup
4 * $Revision: 1.35 $
5 * 4 *
6 * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, 5 * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH,
7 * IBM Corporation 6 * IBM Corporation
diff --git a/drivers/s390/cio/chsc.c b/drivers/s390/cio/chsc.c
index 2cbb724791a8..f4183d660258 100644
--- a/drivers/s390/cio/chsc.c
+++ b/drivers/s390/cio/chsc.c
@@ -1,7 +1,6 @@
1/* 1/*
2 * drivers/s390/cio/chsc.c 2 * drivers/s390/cio/chsc.c
3 * S/390 common I/O routines -- channel subsystem call 3 * S/390 common I/O routines -- channel subsystem call
4 * $Revision: 1.128 $
5 * 4 *
6 * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, 5 * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH,
7 * IBM Corporation 6 * IBM Corporation
@@ -233,7 +232,7 @@ s390_subchannel_remove_chpid(struct device *dev, void *data)
233 return 0; 232 return 0;
234 233
235 mask = 0x80 >> j; 234 mask = 0x80 >> j;
236 spin_lock(&sch->lock); 235 spin_lock_irq(&sch->lock);
237 236
238 stsch(sch->schid, &schib); 237 stsch(sch->schid, &schib);
239 if (!schib.pmcw.dnv) 238 if (!schib.pmcw.dnv)
@@ -282,10 +281,10 @@ s390_subchannel_remove_chpid(struct device *dev, void *data)
282 if (sch->driver && sch->driver->verify) 281 if (sch->driver && sch->driver->verify)
283 sch->driver->verify(&sch->dev); 282 sch->driver->verify(&sch->dev);
284out_unlock: 283out_unlock:
285 spin_unlock(&sch->lock); 284 spin_unlock_irq(&sch->lock);
286 return 0; 285 return 0;
287out_unreg: 286out_unreg:
288 spin_unlock(&sch->lock); 287 spin_unlock_irq(&sch->lock);
289 sch->lpm = 0; 288 sch->lpm = 0;
290 if (css_enqueue_subchannel_slow(sch->schid)) { 289 if (css_enqueue_subchannel_slow(sch->schid)) {
291 css_clear_subchannel_slow_list(); 290 css_clear_subchannel_slow_list();
@@ -653,7 +652,7 @@ __chp_add(struct subchannel_id schid, void *data)
653 if (!sch) 652 if (!sch)
654 /* Check if the subchannel is now available. */ 653 /* Check if the subchannel is now available. */
655 return __chp_add_new_sch(schid); 654 return __chp_add_new_sch(schid);
656 spin_lock(&sch->lock); 655 spin_lock_irq(&sch->lock);
657 for (i=0; i<8; i++) 656 for (i=0; i<8; i++)
658 if (sch->schib.pmcw.chpid[i] == chp->id) { 657 if (sch->schib.pmcw.chpid[i] == chp->id) {
659 if (stsch(sch->schid, &sch->schib) != 0) { 658 if (stsch(sch->schid, &sch->schib) != 0) {
@@ -675,7 +674,7 @@ __chp_add(struct subchannel_id schid, void *data)
675 if (sch->driver && sch->driver->verify) 674 if (sch->driver && sch->driver->verify)
676 sch->driver->verify(&sch->dev); 675 sch->driver->verify(&sch->dev);
677 676
678 spin_unlock(&sch->lock); 677 spin_unlock_irq(&sch->lock);
679 put_device(&sch->dev); 678 put_device(&sch->dev);
680 return 0; 679 return 0;
681} 680}
@@ -1116,6 +1115,9 @@ chsc_enable_facility(int operation_code)
1116 goto out; 1115 goto out;
1117 } 1116 }
1118 switch (sda_area->response.code) { 1117 switch (sda_area->response.code) {
1118 case 0x0001: /* everything ok */
1119 ret = 0;
1120 break;
1119 case 0x0003: /* invalid request block */ 1121 case 0x0003: /* invalid request block */
1120 case 0x0007: 1122 case 0x0007:
1121 ret = -EINVAL; 1123 ret = -EINVAL;
@@ -1124,6 +1126,8 @@ chsc_enable_facility(int operation_code)
1124 case 0x0101: /* facility not provided */ 1126 case 0x0101: /* facility not provided */
1125 ret = -EOPNOTSUPP; 1127 ret = -EOPNOTSUPP;
1126 break; 1128 break;
1129 default: /* something went wrong */
1130 ret = -EIO;
1127 } 1131 }
1128 out: 1132 out:
1129 free_page((unsigned long)sda_area); 1133 free_page((unsigned long)sda_area);
diff --git a/drivers/s390/cio/chsc.h b/drivers/s390/cio/chsc.h
index 44e4b4bb1c5a..3e75095f35d0 100644
--- a/drivers/s390/cio/chsc.h
+++ b/drivers/s390/cio/chsc.h
@@ -68,6 +68,6 @@ extern void *chsc_get_chp_desc(struct subchannel*, int);
68 68
69extern int chsc_enable_facility(int); 69extern int chsc_enable_facility(int);
70 70
71#define to_channelpath(dev) container_of(dev, struct channel_path, dev) 71#define to_channelpath(device) container_of(device, struct channel_path, dev)
72 72
73#endif 73#endif
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c
index 6223b06d27d5..cbb86fa5f293 100644
--- a/drivers/s390/cio/cio.c
+++ b/drivers/s390/cio/cio.c
@@ -1,7 +1,6 @@
1/* 1/*
2 * drivers/s390/cio/cio.c 2 * drivers/s390/cio/cio.c
3 * S/390 common I/O routines -- low level i/o calls 3 * S/390 common I/O routines -- low level i/o calls
4 * $Revision: 1.140 $
5 * 4 *
6 * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, 5 * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH,
7 * IBM Corporation 6 * IBM Corporation
diff --git a/drivers/s390/cio/cmf.c b/drivers/s390/cio/cmf.c
index 0b03714e696a..07ef3f640f4a 100644
--- a/drivers/s390/cio/cmf.c
+++ b/drivers/s390/cio/cmf.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * linux/drivers/s390/cio/cmf.c ($Revision: 1.19 $) 2 * linux/drivers/s390/cio/cmf.c
3 * 3 *
4 * Linux on zSeries Channel Measurement Facility support 4 * Linux on zSeries Channel Measurement Facility support
5 * 5 *
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c
index 516108779f60..3c77d65960db 100644
--- a/drivers/s390/cio/css.c
+++ b/drivers/s390/cio/css.c
@@ -1,7 +1,6 @@
1/* 1/*
2 * drivers/s390/cio/css.c 2 * drivers/s390/cio/css.c
3 * driver for channel subsystem 3 * driver for channel subsystem
4 * $Revision: 1.96 $
5 * 4 *
6 * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, 5 * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH,
7 * IBM Corporation 6 * IBM Corporation
@@ -410,6 +409,9 @@ __init_channel_subsystem(struct subchannel_id schid, void *data)
410 /* -ENXIO: no more subchannels. */ 409 /* -ENXIO: no more subchannels. */
411 case -ENXIO: 410 case -ENXIO:
412 return ret; 411 return ret;
412 /* -EIO: this subchannel set not supported. */
413 case -EIO:
414 return ret;
413 default: 415 default:
414 return 0; 416 return 0;
415 } 417 }
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c
index a67e7e60e330..afc4e88551ad 100644
--- a/drivers/s390/cio/device.c
+++ b/drivers/s390/cio/device.c
@@ -1,7 +1,6 @@
1/* 1/*
2 * drivers/s390/cio/device.c 2 * drivers/s390/cio/device.c
3 * bus driver for ccw devices 3 * bus driver for ccw devices
4 * $Revision: 1.140 $
5 * 4 *
6 * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, 5 * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH,
7 * IBM Corporation 6 * IBM Corporation
@@ -255,7 +254,7 @@ modalias_show (struct device *dev, struct device_attribute *attr, char *buf)
255 struct ccw_device_id *id = &(cdev->id); 254 struct ccw_device_id *id = &(cdev->id);
256 int ret; 255 int ret;
257 256
258 ret = sprintf(buf, "ccw:t%04Xm%02x", 257 ret = sprintf(buf, "ccw:t%04Xm%02X",
259 id->cu_type, id->cu_model); 258 id->cu_type, id->cu_model);
260 if (id->dev_type != 0) 259 if (id->dev_type != 0)
261 ret += sprintf(buf + ret, "dt%04Xdm%02X\n", 260 ret += sprintf(buf + ret, "dt%04Xdm%02X\n",
@@ -360,7 +359,7 @@ ccw_device_set_online(struct ccw_device *cdev)
360 else 359 else
361 pr_debug("ccw_device_offline returned %d, device %s\n", 360 pr_debug("ccw_device_offline returned %d, device %s\n",
362 ret, cdev->dev.bus_id); 361 ret, cdev->dev.bus_id);
363 return (ret = 0) ? -ENODEV : ret; 362 return (ret == 0) ? -ENODEV : ret;
364} 363}
365 364
366static ssize_t 365static ssize_t
@@ -1013,7 +1012,7 @@ ccw_device_probe_console(void)
1013 int ret; 1012 int ret;
1014 1013
1015 if (xchg(&console_cdev_in_use, 1) != 0) 1014 if (xchg(&console_cdev_in_use, 1) != 0)
1016 return NULL; 1015 return ERR_PTR(-EBUSY);
1017 sch = cio_probe_console(); 1016 sch = cio_probe_console();
1018 if (IS_ERR(sch)) { 1017 if (IS_ERR(sch)) {
1019 console_cdev_in_use = 0; 1018 console_cdev_in_use = 0;
diff --git a/drivers/s390/cio/device_ops.c b/drivers/s390/cio/device_ops.c
index 8b0218949b62..3a50b1903287 100644
--- a/drivers/s390/cio/device_ops.c
+++ b/drivers/s390/cio/device_ops.c
@@ -1,8 +1,6 @@
1/* 1/*
2 * drivers/s390/cio/device_ops.c 2 * drivers/s390/cio/device_ops.c
3 * 3 *
4 * $Revision: 1.61 $
5 *
6 * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, 4 * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH,
7 * IBM Corporation 5 * IBM Corporation
8 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 6 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
diff --git a/drivers/s390/cio/device_pgid.c b/drivers/s390/cio/device_pgid.c
index d2a5b04d7cba..85b1020a1fcc 100644
--- a/drivers/s390/cio/device_pgid.c
+++ b/drivers/s390/cio/device_pgid.c
@@ -405,7 +405,7 @@ __ccw_device_disband_start(struct ccw_device *cdev)
405 cdev->private->iretry = 5; 405 cdev->private->iretry = 5;
406 cdev->private->imask >>= 1; 406 cdev->private->imask >>= 1;
407 } 407 }
408 ccw_device_verify_done(cdev, (sch->lpm != 0) ? 0 : -ENODEV); 408 ccw_device_disband_done(cdev, (sch->lpm != 0) ? 0 : -ENODEV);
409} 409}
410 410
411/* 411/*
diff --git a/drivers/s390/cio/device_status.c b/drivers/s390/cio/device_status.c
index dad4dd9887c9..6c762b43f921 100644
--- a/drivers/s390/cio/device_status.c
+++ b/drivers/s390/cio/device_status.c
@@ -317,7 +317,6 @@ ccw_device_do_sense(struct ccw_device *cdev, struct irb *irb)
317 /* 317 /*
318 * We have ending status but no sense information. Do a basic sense. 318 * We have ending status but no sense information. Do a basic sense.
319 */ 319 */
320 sch = to_subchannel(cdev->dev.parent);
321 sch->sense_ccw.cmd_code = CCW_CMD_BASIC_SENSE; 320 sch->sense_ccw.cmd_code = CCW_CMD_BASIC_SENSE;
322 sch->sense_ccw.cda = (__u32) __pa(cdev->private->irb.ecw); 321 sch->sense_ccw.cda = (__u32) __pa(cdev->private->irb.ecw);
323 sch->sense_ccw.count = SENSE_MAX_COUNT; 322 sch->sense_ccw.count = SENSE_MAX_COUNT;
diff --git a/drivers/s390/cio/qdio.c b/drivers/s390/cio/qdio.c
index 77be2c39bfe4..9ed37dc9a1b0 100644
--- a/drivers/s390/cio/qdio.c
+++ b/drivers/s390/cio/qdio.c
@@ -56,8 +56,6 @@
56#include "ioasm.h" 56#include "ioasm.h"
57#include "chsc.h" 57#include "chsc.h"
58 58
59#define VERSION_QDIO_C "$Revision: 1.117 $"
60
61/****************** MODULE PARAMETER VARIABLES ********************/ 59/****************** MODULE PARAMETER VARIABLES ********************/
62MODULE_AUTHOR("Utz Bacher <utz.bacher@de.ibm.com>"); 60MODULE_AUTHOR("Utz Bacher <utz.bacher@de.ibm.com>");
63MODULE_DESCRIPTION("QDIO base support version 2, " \ 61MODULE_DESCRIPTION("QDIO base support version 2, " \
@@ -66,8 +64,7 @@ MODULE_LICENSE("GPL");
66 64
67/******************** HERE WE GO ***********************************/ 65/******************** HERE WE GO ***********************************/
68 66
69static const char version[] = "QDIO base support version 2 (" 67static const char version[] = "QDIO base support version 2";
70 VERSION_QDIO_C "/" VERSION_QDIO_H "/" VERSION_CIO_QDIO_H ")";
71 68
72#ifdef QDIO_PERFORMANCE_STATS 69#ifdef QDIO_PERFORMANCE_STATS
73static int proc_perf_file_registration; 70static int proc_perf_file_registration;
@@ -168,8 +165,13 @@ qdio_do_eqbs(struct qdio_q *q, unsigned char *state,
168 q_no = q->q_no; 165 q_no = q->q_no;
169 if(!q->is_input_q) 166 if(!q->is_input_q)
170 q_no += irq->no_input_qs; 167 q_no += irq->no_input_qs;
168again:
171 ccq = do_eqbs(irq->sch_token, state, q_no, start, cnt); 169 ccq = do_eqbs(irq->sch_token, state, q_no, start, cnt);
172 rc = qdio_check_ccq(q, ccq); 170 rc = qdio_check_ccq(q, ccq);
171 if (rc == 1) {
172 QDIO_DBF_TEXT5(1,trace,"eqAGAIN");
173 goto again;
174 }
173 if (rc < 0) { 175 if (rc < 0) {
174 QDIO_DBF_TEXT2(1,trace,"eqberr"); 176 QDIO_DBF_TEXT2(1,trace,"eqberr");
175 sprintf(dbf_text,"%2x,%2x,%d,%d",tmp_cnt, *cnt, ccq, q_no); 177 sprintf(dbf_text,"%2x,%2x,%d,%d",tmp_cnt, *cnt, ccq, q_no);
@@ -198,8 +200,13 @@ qdio_do_sqbs(struct qdio_q *q, unsigned char state,
198 q_no = q->q_no; 200 q_no = q->q_no;
199 if(!q->is_input_q) 201 if(!q->is_input_q)
200 q_no += irq->no_input_qs; 202 q_no += irq->no_input_qs;
203again:
201 ccq = do_sqbs(irq->sch_token, state, q_no, start, cnt); 204 ccq = do_sqbs(irq->sch_token, state, q_no, start, cnt);
202 rc = qdio_check_ccq(q, ccq); 205 rc = qdio_check_ccq(q, ccq);
206 if (rc == 1) {
207 QDIO_DBF_TEXT5(1,trace,"sqAGAIN");
208 goto again;
209 }
203 if (rc < 0) { 210 if (rc < 0) {
204 QDIO_DBF_TEXT3(1,trace,"sqberr"); 211 QDIO_DBF_TEXT3(1,trace,"sqberr");
205 sprintf(dbf_text,"%2x,%2x,%d,%d",tmp_cnt,*cnt,ccq,q_no); 212 sprintf(dbf_text,"%2x,%2x,%d,%d",tmp_cnt,*cnt,ccq,q_no);
@@ -1190,8 +1197,7 @@ tiqdio_is_inbound_q_done(struct qdio_q *q)
1190 1197
1191 if (!no_used) 1198 if (!no_used)
1192 return 1; 1199 return 1;
1193 1200 if (!q->siga_sync && !irq->is_qebsm)
1194 if (!q->siga_sync)
1195 /* we'll check for more primed buffers in qeth_stop_polling */ 1201 /* we'll check for more primed buffers in qeth_stop_polling */
1196 return 0; 1202 return 0;
1197 if (irq->is_qebsm) { 1203 if (irq->is_qebsm) {
diff --git a/drivers/s390/cio/qdio.h b/drivers/s390/cio/qdio.h
index fa385e761fe1..ceb3ab31ee08 100644
--- a/drivers/s390/cio/qdio.h
+++ b/drivers/s390/cio/qdio.h
@@ -5,8 +5,6 @@
5 5
6#include "schid.h" 6#include "schid.h"
7 7
8#define VERSION_CIO_QDIO_H "$Revision: 1.40 $"
9
10#ifdef CONFIG_QDIO_DEBUG 8#ifdef CONFIG_QDIO_DEBUG
11#define QDIO_VERBOSE_LEVEL 9 9#define QDIO_VERBOSE_LEVEL 9
12#else /* CONFIG_QDIO_DEBUG */ 10#else /* CONFIG_QDIO_DEBUG */
diff --git a/drivers/s390/crypto/z90common.h b/drivers/s390/crypto/z90common.h
index f87c785f2039..dbbcda3c846a 100644
--- a/drivers/s390/crypto/z90common.h
+++ b/drivers/s390/crypto/z90common.h
@@ -27,8 +27,6 @@
27#ifndef _Z90COMMON_H_ 27#ifndef _Z90COMMON_H_
28#define _Z90COMMON_H_ 28#define _Z90COMMON_H_
29 29
30#define VERSION_Z90COMMON_H "$Revision: 1.17 $"
31
32 30
33#define RESPBUFFSIZE 256 31#define RESPBUFFSIZE 256
34#define PCI_FUNC_KEY_DECRYPT 0x5044 32#define PCI_FUNC_KEY_DECRYPT 0x5044
diff --git a/drivers/s390/crypto/z90crypt.h b/drivers/s390/crypto/z90crypt.h
index 3a18443fdfa7..5e6b1f535f62 100644
--- a/drivers/s390/crypto/z90crypt.h
+++ b/drivers/s390/crypto/z90crypt.h
@@ -29,8 +29,6 @@
29 29
30#include <linux/ioctl.h> 30#include <linux/ioctl.h>
31 31
32#define VERSION_Z90CRYPT_H "$Revision: 1.2.2.4 $"
33
34#define z90crypt_VERSION 1 32#define z90crypt_VERSION 1
35#define z90crypt_RELEASE 3 // 2 = PCIXCC, 3 = rewrite for coding standards 33#define z90crypt_RELEASE 3 // 2 = PCIXCC, 3 = rewrite for coding standards
36#define z90crypt_VARIANT 3 // 3 = CEX2A support 34#define z90crypt_VARIANT 3 // 3 = CEX2A support
diff --git a/drivers/s390/crypto/z90hardware.c b/drivers/s390/crypto/z90hardware.c
index d7f7494a0cbe..4141919da805 100644
--- a/drivers/s390/crypto/z90hardware.c
+++ b/drivers/s390/crypto/z90hardware.c
@@ -32,12 +32,6 @@
32#include "z90crypt.h" 32#include "z90crypt.h"
33#include "z90common.h" 33#include "z90common.h"
34 34
35#define VERSION_Z90HARDWARE_C "$Revision: 1.34 $"
36
37char z90hardware_version[] __initdata =
38 "z90hardware.o (" VERSION_Z90HARDWARE_C "/"
39 VERSION_Z90COMMON_H "/" VERSION_Z90CRYPT_H ")";
40
41struct cca_token_hdr { 35struct cca_token_hdr {
42 unsigned char token_identifier; 36 unsigned char token_identifier;
43 unsigned char version; 37 unsigned char version;
diff --git a/drivers/s390/crypto/z90main.c b/drivers/s390/crypto/z90main.c
index 2f54d033d7cf..7d6f19030ef9 100644
--- a/drivers/s390/crypto/z90main.c
+++ b/drivers/s390/crypto/z90main.c
@@ -38,14 +38,6 @@
38#include "z90crypt.h" 38#include "z90crypt.h"
39#include "z90common.h" 39#include "z90common.h"
40 40
41#define VERSION_Z90MAIN_C "$Revision: 1.62 $"
42
43static char z90main_version[] __initdata =
44 "z90main.o (" VERSION_Z90MAIN_C "/"
45 VERSION_Z90COMMON_H "/" VERSION_Z90CRYPT_H ")";
46
47extern char z90hardware_version[];
48
49/** 41/**
50 * Defaults that may be modified. 42 * Defaults that may be modified.
51 */ 43 */
@@ -594,8 +586,6 @@ z90crypt_init_module(void)
594 PRINTKN("Version %d.%d.%d loaded, built on %s %s\n", 586 PRINTKN("Version %d.%d.%d loaded, built on %s %s\n",
595 z90crypt_VERSION, z90crypt_RELEASE, z90crypt_VARIANT, 587 z90crypt_VERSION, z90crypt_RELEASE, z90crypt_VARIANT,
596 __DATE__, __TIME__); 588 __DATE__, __TIME__);
597 PRINTKN("%s\n", z90main_version);
598 PRINTKN("%s\n", z90hardware_version);
599 PDEBUG("create_z90crypt (domain index %d) successful.\n", 589 PDEBUG("create_z90crypt (domain index %d) successful.\n",
600 domain); 590 domain);
601 } else 591 } else
diff --git a/drivers/s390/net/claw.c b/drivers/s390/net/claw.c
index e70af7f39946..a86436a7a606 100644
--- a/drivers/s390/net/claw.c
+++ b/drivers/s390/net/claw.c
@@ -2,8 +2,6 @@
2 * drivers/s390/net/claw.c 2 * drivers/s390/net/claw.c
3 * ESCON CLAW network driver 3 * ESCON CLAW network driver
4 * 4 *
5 * $Revision: 1.38 $ $Date: 2005/08/29 09:47:04 $
6 *
7 * Linux for zSeries version 5 * Linux for zSeries version
8 * Copyright (C) 2002,2005 IBM Corporation 6 * Copyright (C) 2002,2005 IBM Corporation
9 * Author(s) Original code written by: 7 * Author(s) Original code written by:
@@ -4391,14 +4389,7 @@ static int __init
4391claw_init(void) 4389claw_init(void)
4392{ 4390{
4393 int ret = 0; 4391 int ret = 0;
4394 printk(KERN_INFO "claw: starting driver " 4392 printk(KERN_INFO "claw: starting driver\n");
4395#ifdef MODULE
4396 "module "
4397#else
4398 "compiled into kernel "
4399#endif
4400 " $Revision: 1.38 $ $Date: 2005/08/29 09:47:04 $ \n");
4401
4402 4393
4403#ifdef FUNCTRACE 4394#ifdef FUNCTRACE
4404 printk(KERN_INFO "claw: %s() enter \n",__FUNCTION__); 4395 printk(KERN_INFO "claw: %s() enter \n",__FUNCTION__);
diff --git a/drivers/s390/net/claw.h b/drivers/s390/net/claw.h
index 3df71970f601..969be465309c 100644
--- a/drivers/s390/net/claw.h
+++ b/drivers/s390/net/claw.h
@@ -2,7 +2,7 @@
2* Define constants * 2* Define constants *
3* * 3* *
4********************************************************/ 4********************************************************/
5#define VERSION_CLAW_H "$Revision: 1.6 $" 5
6/*-----------------------------------------------------* 6/*-----------------------------------------------------*
7* CCW command codes for CLAW protocol * 7* CCW command codes for CLAW protocol *
8*------------------------------------------------------*/ 8*------------------------------------------------------*/
diff --git a/drivers/s390/net/ctcdbug.c b/drivers/s390/net/ctcdbug.c
index 0e2a8bb93032..e6e72deb36b5 100644
--- a/drivers/s390/net/ctcdbug.c
+++ b/drivers/s390/net/ctcdbug.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * 2 *
3 * linux/drivers/s390/net/ctcdbug.c ($Revision: 1.6 $) 3 * linux/drivers/s390/net/ctcdbug.c
4 * 4 *
5 * CTC / ESCON network driver - s390 dbf exploit. 5 * CTC / ESCON network driver - s390 dbf exploit.
6 * 6 *
@@ -9,8 +9,6 @@
9 * Author(s): Original Code written by 9 * Author(s): Original Code written by
10 * Peter Tiedemann (ptiedem@de.ibm.com) 10 * Peter Tiedemann (ptiedem@de.ibm.com)
11 * 11 *
12 * $Revision: 1.6 $ $Date: 2005/05/11 08:10:17 $
13 *
14 * This program is free software; you can redistribute it and/or modify 12 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by 13 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2, or (at your option) 14 * the Free Software Foundation; either version 2, or (at your option)
@@ -80,4 +78,3 @@ ctc_register_dbf_views(void)
80 return 0; 78 return 0;
81} 79}
82 80
83
diff --git a/drivers/s390/net/ctcdbug.h b/drivers/s390/net/ctcdbug.h
index 7d6afa1627c3..413925ee23d1 100644
--- a/drivers/s390/net/ctcdbug.h
+++ b/drivers/s390/net/ctcdbug.h
@@ -1,6 +1,6 @@
1/* 1/*
2 * 2 *
3 * linux/drivers/s390/net/ctcdbug.h ($Revision: 1.6 $) 3 * linux/drivers/s390/net/ctcdbug.h
4 * 4 *
5 * CTC / ESCON network driver - s390 dbf exploit. 5 * CTC / ESCON network driver - s390 dbf exploit.
6 * 6 *
@@ -9,8 +9,6 @@
9 * Author(s): Original Code written by 9 * Author(s): Original Code written by
10 * Peter Tiedemann (ptiedem@de.ibm.com) 10 * Peter Tiedemann (ptiedem@de.ibm.com)
11 * 11 *
12 * $Revision: 1.6 $ $Date: 2005/05/11 08:10:17 $
13 *
14 * This program is free software; you can redistribute it and/or modify 12 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by 13 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2, or (at your option) 14 * the Free Software Foundation; either version 2, or (at your option)
diff --git a/drivers/s390/net/ctcmain.c b/drivers/s390/net/ctcmain.c
index 1901feef07d9..af9f212314b3 100644
--- a/drivers/s390/net/ctcmain.c
+++ b/drivers/s390/net/ctcmain.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: ctcmain.c,v 1.79 2006/01/11 11:32:18 cohuck Exp $
3 *
4 * CTC / ESCON network driver 2 * CTC / ESCON network driver
5 * 3 *
6 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation 4 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation
@@ -37,8 +35,6 @@
37 * along with this program; if not, write to the Free Software 35 * along with this program; if not, write to the Free Software
38 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 36 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
39 * 37 *
40 * RELEASE-TAG: CTC/ESCON network driver $Revision: 1.79 $
41 *
42 */ 38 */
43#undef DEBUG 39#undef DEBUG
44#include <linux/module.h> 40#include <linux/module.h>
@@ -248,22 +244,11 @@ static void
248print_banner(void) 244print_banner(void)
249{ 245{
250 static int printed = 0; 246 static int printed = 0;
251 char vbuf[] = "$Revision: 1.79 $";
252 char *version = vbuf;
253 247
254 if (printed) 248 if (printed)
255 return; 249 return;
256 if ((version = strchr(version, ':'))) { 250
257 char *p = strchr(version + 1, '$'); 251 printk(KERN_INFO "CTC driver initialized\n");
258 if (p)
259 *p = '\0';
260 } else
261 version = " ??? ";
262 printk(KERN_INFO "CTC driver Version%s"
263#ifdef DEBUG
264 " (DEBUG-VERSION, " __DATE__ __TIME__ ")"
265#endif
266 " initialized\n", version);
267 printed = 1; 252 printed = 1;
268} 253}
269 254
diff --git a/drivers/s390/net/ctcmain.h b/drivers/s390/net/ctcmain.h
index ba3605f16335..d2e835c0c134 100644
--- a/drivers/s390/net/ctcmain.h
+++ b/drivers/s390/net/ctcmain.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: ctcmain.h,v 1.4 2005/03/24 09:04:17 mschwide Exp $
3 *
4 * CTC / ESCON network driver 2 * CTC / ESCON network driver
5 * 3 *
6 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation 4 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation
@@ -29,8 +27,6 @@
29 * along with this program; if not, write to the Free Software 27 * along with this program; if not, write to the Free Software
30 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 28 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
31 * 29 *
32 * RELEASE-TAG: CTC/ESCON network driver $Revision: 1.4 $
33 *
34 */ 30 */
35 31
36#ifndef _CTCMAIN_H_ 32#ifndef _CTCMAIN_H_
diff --git a/drivers/s390/net/ctctty.c b/drivers/s390/net/ctctty.c
index 93d1725eb79b..5cdcdbf92962 100644
--- a/drivers/s390/net/ctctty.c
+++ b/drivers/s390/net/ctctty.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: ctctty.c,v 1.29 2005/04/05 08:50:44 mschwide Exp $
3 *
4 * CTC / ESCON network driver, tty interface. 2 * CTC / ESCON network driver, tty interface.
5 * 3 *
6 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation 4 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation
diff --git a/drivers/s390/net/ctctty.h b/drivers/s390/net/ctctty.h
index 84b2f8f23ab3..7254dc006311 100644
--- a/drivers/s390/net/ctctty.h
+++ b/drivers/s390/net/ctctty.h
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: ctctty.h,v 1.4 2003/09/18 08:01:10 mschwide Exp $
3 *
4 * CTC / ESCON network driver, tty interface. 2 * CTC / ESCON network driver, tty interface.
5 * 3 *
6 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation 4 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation
diff --git a/drivers/s390/net/cu3088.c b/drivers/s390/net/cu3088.c
index 2014fb7a4881..b12533104c1f 100644
--- a/drivers/s390/net/cu3088.c
+++ b/drivers/s390/net/cu3088.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: cu3088.c,v 1.38 2006/01/12 14:33:09 cohuck Exp $
3 *
4 * CTC / LCS ccw_device driver 2 * CTC / LCS ccw_device driver
5 * 3 *
6 * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, IBM Corporation 4 * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, IBM Corporation
diff --git a/drivers/s390/net/fsm.c b/drivers/s390/net/fsm.c
index 24029bd9c7d0..6caf5fa6a3b5 100644
--- a/drivers/s390/net/fsm.c
+++ b/drivers/s390/net/fsm.c
@@ -1,6 +1,4 @@
1/** 1/**
2 * $Id: fsm.c,v 1.6 2003/10/15 11:37:29 mschwide Exp $
3 *
4 * A generic FSM based on fsm used in isdn4linux 2 * A generic FSM based on fsm used in isdn4linux
5 * 3 *
6 */ 4 */
diff --git a/drivers/s390/net/fsm.h b/drivers/s390/net/fsm.h
index 5b98253be7aa..af679c10f1bd 100644
--- a/drivers/s390/net/fsm.h
+++ b/drivers/s390/net/fsm.h
@@ -1,5 +1,3 @@
1/* $Id: fsm.h,v 1.1.1.1 2002/03/13 19:33:09 mschwide Exp $
2 */
3#ifndef _FSM_H_ 1#ifndef _FSM_H_
4#define _FSM_H_ 2#define _FSM_H_
5 3
diff --git a/drivers/s390/net/iucv.c b/drivers/s390/net/iucv.c
index ea8177392564..760e77ec5a11 100644
--- a/drivers/s390/net/iucv.c
+++ b/drivers/s390/net/iucv.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: iucv.c,v 1.47 2005/11/21 11:35:22 mschwide Exp $
3 *
4 * IUCV network driver 2 * IUCV network driver
5 * 3 *
6 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation 4 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation
@@ -29,8 +27,6 @@
29 * along with this program; if not, write to the Free Software 27 * along with this program; if not, write to the Free Software
30 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 28 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
31 * 29 *
32 * RELEASE-TAG: IUCV lowlevel driver $Revision: 1.47 $
33 *
34 */ 30 */
35 31
36/* #define DEBUG */ 32/* #define DEBUG */
@@ -355,17 +351,7 @@ do { \
355static void 351static void
356iucv_banner(void) 352iucv_banner(void)
357{ 353{
358 char vbuf[] = "$Revision: 1.47 $"; 354 printk(KERN_INFO "IUCV lowlevel driver initialized\n");
359 char *version = vbuf;
360
361 if ((version = strchr(version, ':'))) {
362 char *p = strchr(version + 1, '$');
363 if (p)
364 *p = '\0';
365 } else
366 version = " ??? ";
367 printk(KERN_INFO
368 "IUCV lowlevel driver Version%s initialized\n", version);
369} 355}
370 356
371/** 357/**
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c
index da8c515743e8..9cf88d7201d3 100644
--- a/drivers/s390/net/lcs.c
+++ b/drivers/s390/net/lcs.c
@@ -11,8 +11,6 @@
11 * Frank Pavlic (fpavlic@de.ibm.com) and 11 * Frank Pavlic (fpavlic@de.ibm.com) and
12 * Martin Schwidefsky <schwidefsky@de.ibm.com> 12 * Martin Schwidefsky <schwidefsky@de.ibm.com>
13 * 13 *
14 * $Revision: 1.99 $ $Date: 2005/05/11 08:10:17 $
15 *
16 * This program is free software; you can redistribute it and/or modify 14 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by 15 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation; either version 2, or (at your option) 16 * the Free Software Foundation; either version 2, or (at your option)
@@ -59,9 +57,8 @@
59/** 57/**
60 * initialization string for output 58 * initialization string for output
61 */ 59 */
62#define VERSION_LCS_C "$Revision: 1.99 $"
63 60
64static char version[] __initdata = "LCS driver ("VERSION_LCS_C "/" VERSION_LCS_H ")"; 61static char version[] __initdata = "LCS driver";
65static char debug_buffer[255]; 62static char debug_buffer[255];
66 63
67/** 64/**
@@ -101,9 +98,9 @@ lcs_register_debug_facility(void)
101 return -ENOMEM; 98 return -ENOMEM;
102 } 99 }
103 debug_register_view(lcs_dbf_setup, &debug_hex_ascii_view); 100 debug_register_view(lcs_dbf_setup, &debug_hex_ascii_view);
104 debug_set_level(lcs_dbf_setup, 4); 101 debug_set_level(lcs_dbf_setup, 2);
105 debug_register_view(lcs_dbf_trace, &debug_hex_ascii_view); 102 debug_register_view(lcs_dbf_trace, &debug_hex_ascii_view);
106 debug_set_level(lcs_dbf_trace, 4); 103 debug_set_level(lcs_dbf_trace, 2);
107 return 0; 104 return 0;
108} 105}
109 106
@@ -1295,9 +1292,8 @@ lcs_set_multicast_list(struct net_device *dev)
1295 LCS_DBF_TEXT(4, trace, "setmulti"); 1292 LCS_DBF_TEXT(4, trace, "setmulti");
1296 card = (struct lcs_card *) dev->priv; 1293 card = (struct lcs_card *) dev->priv;
1297 1294
1298 if (!lcs_set_thread_start_bit(card, LCS_SET_MC_THREAD)) { 1295 if (!lcs_set_thread_start_bit(card, LCS_SET_MC_THREAD))
1299 schedule_work(&card->kernel_thread_starter); 1296 schedule_work(&card->kernel_thread_starter);
1300 }
1301} 1297}
1302 1298
1303#endif /* CONFIG_IP_MULTICAST */ 1299#endif /* CONFIG_IP_MULTICAST */
@@ -1462,6 +1458,8 @@ lcs_txbuffer_cb(struct lcs_channel *channel, struct lcs_buffer *buffer)
1462 lcs_release_buffer(channel, buffer); 1458 lcs_release_buffer(channel, buffer);
1463 card = (struct lcs_card *) 1459 card = (struct lcs_card *)
1464 ((char *) channel - offsetof(struct lcs_card, write)); 1460 ((char *) channel - offsetof(struct lcs_card, write));
1461 if (netif_queue_stopped(card->dev))
1462 netif_wake_queue(card->dev);
1465 spin_lock(&card->lock); 1463 spin_lock(&card->lock);
1466 card->tx_emitted--; 1464 card->tx_emitted--;
1467 if (card->tx_emitted <= 0 && card->tx_buffer != NULL) 1465 if (card->tx_emitted <= 0 && card->tx_buffer != NULL)
@@ -1481,6 +1479,7 @@ __lcs_start_xmit(struct lcs_card *card, struct sk_buff *skb,
1481 struct net_device *dev) 1479 struct net_device *dev)
1482{ 1480{
1483 struct lcs_header *header; 1481 struct lcs_header *header;
1482 int rc = 0;
1484 1483
1485 LCS_DBF_TEXT(5, trace, "hardxmit"); 1484 LCS_DBF_TEXT(5, trace, "hardxmit");
1486 if (skb == NULL) { 1485 if (skb == NULL) {
@@ -1495,10 +1494,8 @@ __lcs_start_xmit(struct lcs_card *card, struct sk_buff *skb,
1495 card->stats.tx_carrier_errors++; 1494 card->stats.tx_carrier_errors++;
1496 return 0; 1495 return 0;
1497 } 1496 }
1498 if (netif_queue_stopped(dev) ) { 1497 netif_stop_queue(card->dev);
1499 card->stats.tx_dropped++; 1498 spin_lock(&card->lock);
1500 return -EBUSY;
1501 }
1502 if (card->tx_buffer != NULL && 1499 if (card->tx_buffer != NULL &&
1503 card->tx_buffer->count + sizeof(struct lcs_header) + 1500 card->tx_buffer->count + sizeof(struct lcs_header) +
1504 skb->len + sizeof(u16) > LCS_IOBUFFERSIZE) 1501 skb->len + sizeof(u16) > LCS_IOBUFFERSIZE)
@@ -1509,7 +1506,8 @@ __lcs_start_xmit(struct lcs_card *card, struct sk_buff *skb,
1509 card->tx_buffer = lcs_get_buffer(&card->write); 1506 card->tx_buffer = lcs_get_buffer(&card->write);
1510 if (card->tx_buffer == NULL) { 1507 if (card->tx_buffer == NULL) {
1511 card->stats.tx_dropped++; 1508 card->stats.tx_dropped++;
1512 return -EBUSY; 1509 rc = -EBUSY;
1510 goto out;
1513 } 1511 }
1514 card->tx_buffer->callback = lcs_txbuffer_cb; 1512 card->tx_buffer->callback = lcs_txbuffer_cb;
1515 card->tx_buffer->count = 0; 1513 card->tx_buffer->count = 0;
@@ -1521,13 +1519,18 @@ __lcs_start_xmit(struct lcs_card *card, struct sk_buff *skb,
1521 header->type = card->lan_type; 1519 header->type = card->lan_type;
1522 header->slot = card->portno; 1520 header->slot = card->portno;
1523 memcpy(header + 1, skb->data, skb->len); 1521 memcpy(header + 1, skb->data, skb->len);
1522 spin_unlock(&card->lock);
1524 card->stats.tx_bytes += skb->len; 1523 card->stats.tx_bytes += skb->len;
1525 card->stats.tx_packets++; 1524 card->stats.tx_packets++;
1526 dev_kfree_skb(skb); 1525 dev_kfree_skb(skb);
1527 if (card->tx_emitted <= 0) 1526 netif_wake_queue(card->dev);
1527 spin_lock(&card->lock);
1528 if (card->tx_emitted <= 0 && card->tx_buffer != NULL)
1528 /* If this is the first tx buffer emit it immediately. */ 1529 /* If this is the first tx buffer emit it immediately. */
1529 __lcs_emit_txbuffer(card); 1530 __lcs_emit_txbuffer(card);
1530 return 0; 1531out:
1532 spin_unlock(&card->lock);
1533 return rc;
1531} 1534}
1532 1535
1533static int 1536static int
@@ -1538,9 +1541,7 @@ lcs_start_xmit(struct sk_buff *skb, struct net_device *dev)
1538 1541
1539 LCS_DBF_TEXT(5, trace, "pktxmit"); 1542 LCS_DBF_TEXT(5, trace, "pktxmit");
1540 card = (struct lcs_card *) dev->priv; 1543 card = (struct lcs_card *) dev->priv;
1541 spin_lock(&card->lock);
1542 rc = __lcs_start_xmit(card, skb, dev); 1544 rc = __lcs_start_xmit(card, skb, dev);
1543 spin_unlock(&card->lock);
1544 return rc; 1545 return rc;
1545} 1546}
1546 1547
@@ -2322,7 +2323,6 @@ __init lcs_init_module(void)
2322 PRINT_ERR("Initialization failed\n"); 2323 PRINT_ERR("Initialization failed\n");
2323 return rc; 2324 return rc;
2324 } 2325 }
2325
2326 return 0; 2326 return 0;
2327} 2327}
2328 2328
diff --git a/drivers/s390/net/lcs.h b/drivers/s390/net/lcs.h
index a7f348ef1b08..2fad5e40c2e4 100644
--- a/drivers/s390/net/lcs.h
+++ b/drivers/s390/net/lcs.h
@@ -6,8 +6,6 @@
6#include <linux/workqueue.h> 6#include <linux/workqueue.h>
7#include <asm/ccwdev.h> 7#include <asm/ccwdev.h>
8 8
9#define VERSION_LCS_H "$Revision: 1.19 $"
10
11#define LCS_DBF_TEXT(level, name, text) \ 9#define LCS_DBF_TEXT(level, name, text) \
12 do { \ 10 do { \
13 debug_text_event(lcs_dbf_##name, level, text); \ 11 debug_text_event(lcs_dbf_##name, level, text); \
@@ -97,7 +95,7 @@ do { \
97 */ 95 */
98#define LCS_ILLEGAL_OFFSET 0xffff 96#define LCS_ILLEGAL_OFFSET 0xffff
99#define LCS_IOBUFFERSIZE 0x5000 97#define LCS_IOBUFFERSIZE 0x5000
100#define LCS_NUM_BUFFS 8 /* needs to be power of 2 */ 98#define LCS_NUM_BUFFS 32 /* needs to be power of 2 */
101#define LCS_MAC_LENGTH 6 99#define LCS_MAC_LENGTH 6
102#define LCS_INVALID_PORT_NO -1 100#define LCS_INVALID_PORT_NO -1
103#define LCS_LANCMD_TIMEOUT_DEFAULT 5 101#define LCS_LANCMD_TIMEOUT_DEFAULT 5
diff --git a/drivers/s390/net/netiucv.c b/drivers/s390/net/netiucv.c
index ac4c4b83fe17..71d3853e8682 100644
--- a/drivers/s390/net/netiucv.c
+++ b/drivers/s390/net/netiucv.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: netiucv.c,v 1.69 2006/01/12 14:33:09 cohuck Exp $
3 *
4 * IUCV network driver 2 * IUCV network driver
5 * 3 *
6 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation 4 * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation
@@ -31,8 +29,6 @@
31 * along with this program; if not, write to the Free Software 29 * along with this program; if not, write to the Free Software
32 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 30 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
33 * 31 *
34 * RELEASE-TAG: IUCV network driver $Revision: 1.69 $
35 *
36 */ 32 */
37 33
38#undef DEBUG 34#undef DEBUG
@@ -2077,16 +2073,7 @@ DRIVER_ATTR(remove, 0200, NULL, remove_write);
2077static void 2073static void
2078netiucv_banner(void) 2074netiucv_banner(void)
2079{ 2075{
2080 char vbuf[] = "$Revision: 1.69 $"; 2076 PRINT_INFO("NETIUCV driver initialized\n");
2081 char *version = vbuf;
2082
2083 if ((version = strchr(version, ':'))) {
2084 char *p = strchr(version + 1, '$');
2085 if (p)
2086 *p = '\0';
2087 } else
2088 version = " ??? ";
2089 PRINT_INFO("NETIUCV driver Version%s initialized\n", version);
2090} 2077}
2091 2078
2092static void __exit 2079static void __exit
diff --git a/drivers/s390/net/qeth.h b/drivers/s390/net/qeth.h
index d238c7ed103b..4df0fcd7b10b 100644
--- a/drivers/s390/net/qeth.h
+++ b/drivers/s390/net/qeth.h
@@ -25,8 +25,6 @@
25 25
26#include "qeth_mpc.h" 26#include "qeth_mpc.h"
27 27
28#define VERSION_QETH_H "$Revision: 1.152 $"
29
30#ifdef CONFIG_QETH_IPV6 28#ifdef CONFIG_QETH_IPV6
31#define QETH_VERSION_IPV6 ":IPv6" 29#define QETH_VERSION_IPV6 ":IPv6"
32#else 30#else
@@ -1078,16 +1076,6 @@ qeth_get_qdio_q_format(struct qeth_card *card)
1078} 1076}
1079 1077
1080static inline int 1078static inline int
1081qeth_isdigit(char * buf)
1082{
1083 while (*buf) {
1084 if (!isdigit(*buf++))
1085 return 0;
1086 }
1087 return 1;
1088}
1089
1090static inline int
1091qeth_isxdigit(char * buf) 1079qeth_isxdigit(char * buf)
1092{ 1080{
1093 while (*buf) { 1081 while (*buf) {
@@ -1106,33 +1094,17 @@ qeth_ipaddr4_to_string(const __u8 *addr, char *buf)
1106static inline int 1094static inline int
1107qeth_string_to_ipaddr4(const char *buf, __u8 *addr) 1095qeth_string_to_ipaddr4(const char *buf, __u8 *addr)
1108{ 1096{
1109 const char *start, *end; 1097 int count = 0, rc = 0;
1110 char abuf[4]; 1098 int in[4];
1111 char *tmp; 1099
1112 int len; 1100 rc = sscanf(buf, "%d.%d.%d.%d%n",
1113 int i; 1101 &in[0], &in[1], &in[2], &in[3], &count);
1114 1102 if (rc != 4 || count)
1115 start = buf; 1103 return -EINVAL;
1116 for (i = 0; i < 4; i++) { 1104 for (count = 0; count < 4; count++) {
1117 if (i == 3) { 1105 if (in[count] > 255)
1118 end = strchr(start,0xa);
1119 if (end)
1120 len = end - start;
1121 else
1122 len = strlen(start);
1123 }
1124 else {
1125 end = strchr(start, '.');
1126 len = end - start;
1127 }
1128 if ((len <= 0) || (len > 3))
1129 return -EINVAL;
1130 memset(abuf, 0, 4);
1131 strncpy(abuf, start, len);
1132 if (!qeth_isdigit(abuf))
1133 return -EINVAL; 1106 return -EINVAL;
1134 addr[i] = simple_strtoul(abuf, &tmp, 10); 1107 addr[count] = in[count];
1135 start = end + 1;
1136 } 1108 }
1137 return 0; 1109 return 0;
1138} 1110}
@@ -1151,36 +1123,44 @@ qeth_ipaddr6_to_string(const __u8 *addr, char *buf)
1151static inline int 1123static inline int
1152qeth_string_to_ipaddr6(const char *buf, __u8 *addr) 1124qeth_string_to_ipaddr6(const char *buf, __u8 *addr)
1153{ 1125{
1154 const char *start, *end; 1126 char *end, *start;
1155 u16 *tmp_addr; 1127 __u16 *in;
1156 char abuf[5]; 1128 char num[5];
1157 char *tmp; 1129 int num2, cnt, out, found, save_cnt;
1158 int len; 1130 unsigned short in_tmp[8] = {0, };
1159 int i; 1131
1160 1132 cnt = out = found = save_cnt = num2 = 0;
1161 tmp_addr = (u16 *)addr; 1133 end = start = (char *) buf;
1162 start = buf; 1134 in = (__u16 *) addr;
1163 for (i = 0; i < 8; i++) { 1135 memset(in, 0, 16);
1164 if (i == 7) { 1136 while (end) {
1165 end = strchr(start,0xa); 1137 end = strchr(end,':');
1166 if (end) 1138 if (end == NULL) {
1167 len = end - start; 1139 end = (char *)buf + (strlen(buf));
1168 else 1140 out = 1;
1169 len = strlen(start); 1141 }
1170 } 1142 if ((end - start)) {
1171 else { 1143 memset(num, 0, 5);
1172 end = strchr(start, ':'); 1144 memcpy(num, start, end - start);
1173 len = end - start; 1145 if (!qeth_isxdigit(num))
1146 return -EINVAL;
1147 sscanf(start, "%x", &num2);
1148 if (found)
1149 in_tmp[save_cnt++] = num2;
1150 else
1151 in[cnt++] = num2;
1152 if (out)
1153 break;
1154 } else {
1155 if (found)
1156 return -EINVAL;
1157 found = 1;
1174 } 1158 }
1175 if ((len <= 0) || (len > 4)) 1159 start = ++end;
1176 return -EINVAL; 1160 }
1177 memset(abuf, 0, 5); 1161 cnt = 7;
1178 strncpy(abuf, start, len); 1162 while (save_cnt)
1179 if (!qeth_isxdigit(abuf)) 1163 in[cnt--] = in_tmp[--save_cnt];
1180 return -EINVAL;
1181 tmp_addr[i] = simple_strtoul(abuf, &tmp, 16);
1182 start = end + 1;
1183 }
1184 return 0; 1164 return 0;
1185} 1165}
1186 1166
diff --git a/drivers/s390/net/qeth_eddp.c b/drivers/s390/net/qeth_eddp.c
index f94f1f25eec6..82cb4af2f0e7 100644
--- a/drivers/s390/net/qeth_eddp.c
+++ b/drivers/s390/net/qeth_eddp.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 * linux/drivers/s390/net/qeth_eddp.c
3 * linux/drivers/s390/net/qeth_eddp.c ($Revision: 1.13 $)
4 * 3 *
5 * Enhanced Device Driver Packing (EDDP) support for the qeth driver. 4 * Enhanced Device Driver Packing (EDDP) support for the qeth driver.
6 * 5 *
@@ -8,8 +7,6 @@
8 * 7 *
9 * Author(s): Thomas Spatzier <tspat@de.ibm.com> 8 * Author(s): Thomas Spatzier <tspat@de.ibm.com>
10 * 9 *
11 * $Revision: 1.13 $ $Date: 2005/05/04 20:19:18 $
12 *
13 */ 10 */
14#include <linux/config.h> 11#include <linux/config.h>
15#include <linux/errno.h> 12#include <linux/errno.h>
@@ -62,8 +59,7 @@ qeth_eddp_free_context(struct qeth_eddp_context *ctx)
62 for (i = 0; i < ctx->num_pages; ++i) 59 for (i = 0; i < ctx->num_pages; ++i)
63 free_page((unsigned long)ctx->pages[i]); 60 free_page((unsigned long)ctx->pages[i]);
64 kfree(ctx->pages); 61 kfree(ctx->pages);
65 if (ctx->elements != NULL) 62 kfree(ctx->elements);
66 kfree(ctx->elements);
67 kfree(ctx); 63 kfree(ctx);
68} 64}
69 65
@@ -416,6 +412,13 @@ __qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx,
416 412
417 QETH_DBF_TEXT(trace, 5, "eddpftcp"); 413 QETH_DBF_TEXT(trace, 5, "eddpftcp");
418 eddp->skb_offset = sizeof(struct qeth_hdr) + eddp->nhl + eddp->thl; 414 eddp->skb_offset = sizeof(struct qeth_hdr) + eddp->nhl + eddp->thl;
415 if (eddp->qh.hdr.l2.id == QETH_HEADER_TYPE_LAYER2) {
416 eddp->skb_offset += sizeof(struct ethhdr);
417#ifdef CONFIG_QETH_VLAN
418 if (eddp->mac.h_proto == __constant_htons(ETH_P_8021Q))
419 eddp->skb_offset += VLAN_HLEN;
420#endif /* CONFIG_QETH_VLAN */
421 }
419 tcph = eddp->skb->h.th; 422 tcph = eddp->skb->h.th;
420 while (eddp->skb_offset < eddp->skb->len) { 423 while (eddp->skb_offset < eddp->skb->len) {
421 data_len = min((int)skb_shinfo(eddp->skb)->tso_size, 424 data_len = min((int)skb_shinfo(eddp->skb)->tso_size,
@@ -486,6 +489,7 @@ qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx,
486 return -ENOMEM; 489 return -ENOMEM;
487 } 490 }
488 if (qhdr->hdr.l2.id == QETH_HEADER_TYPE_LAYER2) { 491 if (qhdr->hdr.l2.id == QETH_HEADER_TYPE_LAYER2) {
492 skb->mac.raw = (skb->data) + sizeof(struct qeth_hdr);
489 memcpy(&eddp->mac, eth_hdr(skb), ETH_HLEN); 493 memcpy(&eddp->mac, eth_hdr(skb), ETH_HLEN);
490#ifdef CONFIG_QETH_VLAN 494#ifdef CONFIG_QETH_VLAN
491 if (eddp->mac.h_proto == __constant_htons(ETH_P_8021Q)) { 495 if (eddp->mac.h_proto == __constant_htons(ETH_P_8021Q)) {
diff --git a/drivers/s390/net/qeth_eddp.h b/drivers/s390/net/qeth_eddp.h
index e1b51860bc57..cae9ba265056 100644
--- a/drivers/s390/net/qeth_eddp.h
+++ b/drivers/s390/net/qeth_eddp.h
@@ -1,14 +1,12 @@
1/* 1/*
2 * linux/drivers/s390/net/qeth_eddp.c ($Revision: 1.5 $) 2 * linux/drivers/s390/net/qeth_eddp.h
3 * 3 *
4 * Header file for qeth enhanced device driver pakcing. 4 * Header file for qeth enhanced device driver packing.
5 * 5 *
6 * Copyright 2004 IBM Corporation 6 * Copyright 2004 IBM Corporation
7 * 7 *
8 * Author(s): Thomas Spatzier <tspat@de.ibm.com> 8 * Author(s): Thomas Spatzier <tspat@de.ibm.com>
9 * 9 *
10 * $Revision: 1.5 $ $Date: 2005/03/24 09:04:18 $
11 *
12 */ 10 */
13#ifndef __QETH_EDDP_H__ 11#ifndef __QETH_EDDP_H__
14#define __QETH_EDDP_H__ 12#define __QETH_EDDP_H__
diff --git a/drivers/s390/net/qeth_fs.h b/drivers/s390/net/qeth_fs.h
index c0b4c8d82c45..e422b41c656e 100644
--- a/drivers/s390/net/qeth_fs.h
+++ b/drivers/s390/net/qeth_fs.h
@@ -12,11 +12,6 @@
12#ifndef __QETH_FS_H__ 12#ifndef __QETH_FS_H__
13#define __QETH_FS_H__ 13#define __QETH_FS_H__
14 14
15#define VERSION_QETH_FS_H "$Revision: 1.10 $"
16
17extern const char *VERSION_QETH_PROC_C;
18extern const char *VERSION_QETH_SYS_C;
19
20#ifdef CONFIG_PROC_FS 15#ifdef CONFIG_PROC_FS
21extern int 16extern int
22qeth_create_procfs_entries(void); 17qeth_create_procfs_entries(void);
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
index 97f927c01a82..dba7f7f02e79 100644
--- a/drivers/s390/net/qeth_main.c
+++ b/drivers/s390/net/qeth_main.c
@@ -1,6 +1,5 @@
1/* 1/*
2 * 2 * linux/drivers/s390/net/qeth_main.c
3 * linux/drivers/s390/net/qeth_main.c ($Revision: 1.251 $)
4 * 3 *
5 * Linux on zSeries OSA Express and HiperSockets support 4 * Linux on zSeries OSA Express and HiperSockets support
6 * 5 *
@@ -12,8 +11,6 @@
12 * Frank Pavlic (fpavlic@de.ibm.com) and 11 * Frank Pavlic (fpavlic@de.ibm.com) and
13 * Thomas Spatzier <tspat@de.ibm.com> 12 * Thomas Spatzier <tspat@de.ibm.com>
14 * 13 *
15 * $Revision: 1.251 $ $Date: 2005/05/04 20:19:18 $
16 *
17 * This program is free software; you can redistribute it and/or modify 14 * This program is free software; you can redistribute it and/or modify
18 * it under the terms of the GNU General Public License as published by 15 * it under the terms of the GNU General Public License as published by
19 * the Free Software Foundation; either version 2, or (at your option) 16 * the Free Software Foundation; either version 2, or (at your option)
@@ -73,7 +70,6 @@
73#include "qeth_eddp.h" 70#include "qeth_eddp.h"
74#include "qeth_tso.h" 71#include "qeth_tso.h"
75 72
76#define VERSION_QETH_C "$Revision: 1.251 $"
77static const char *version = "qeth S/390 OSA-Express driver"; 73static const char *version = "qeth S/390 OSA-Express driver";
78 74
79/** 75/**
@@ -520,7 +516,8 @@ __qeth_set_offline(struct ccwgroup_device *cgdev, int recovery_mode)
520 QETH_DBF_TEXT(setup, 3, "setoffl"); 516 QETH_DBF_TEXT(setup, 3, "setoffl");
521 QETH_DBF_HEX(setup, 3, &card, sizeof(void *)); 517 QETH_DBF_HEX(setup, 3, &card, sizeof(void *));
522 518
523 netif_carrier_off(card->dev); 519 if (card->dev && netif_carrier_ok(card->dev))
520 netif_carrier_off(card->dev);
524 recover_flag = card->state; 521 recover_flag = card->state;
525 if (qeth_stop_card(card, recovery_mode) == -ERESTARTSYS){ 522 if (qeth_stop_card(card, recovery_mode) == -ERESTARTSYS){
526 PRINT_WARN("Stopping card %s interrupted by user!\n", 523 PRINT_WARN("Stopping card %s interrupted by user!\n",
@@ -1683,6 +1680,7 @@ qeth_cmd_timeout(unsigned long data)
1683 spin_unlock_irqrestore(&reply->card->lock, flags); 1680 spin_unlock_irqrestore(&reply->card->lock, flags);
1684} 1681}
1685 1682
1683
1686static struct qeth_ipa_cmd * 1684static struct qeth_ipa_cmd *
1687qeth_check_ipa_data(struct qeth_card *card, struct qeth_cmd_buffer *iob) 1685qeth_check_ipa_data(struct qeth_card *card, struct qeth_cmd_buffer *iob)
1688{ 1686{
@@ -1703,7 +1701,8 @@ qeth_check_ipa_data(struct qeth_card *card, struct qeth_cmd_buffer *iob)
1703 QETH_CARD_IFNAME(card), 1701 QETH_CARD_IFNAME(card),
1704 card->info.chpid); 1702 card->info.chpid);
1705 card->lan_online = 0; 1703 card->lan_online = 0;
1706 netif_carrier_off(card->dev); 1704 if (card->dev && netif_carrier_ok(card->dev))
1705 netif_carrier_off(card->dev);
1707 return NULL; 1706 return NULL;
1708 case IPA_CMD_STARTLAN: 1707 case IPA_CMD_STARTLAN:
1709 PRINT_INFO("Link reestablished on %s " 1708 PRINT_INFO("Link reestablished on %s "
@@ -5566,7 +5565,7 @@ qeth_set_multicast_list(struct net_device *dev)
5566 if (card->info.type == QETH_CARD_TYPE_OSN) 5565 if (card->info.type == QETH_CARD_TYPE_OSN)
5567 return ; 5566 return ;
5568 5567
5569 QETH_DBF_TEXT(trace,3,"setmulti"); 5568 QETH_DBF_TEXT(trace, 3, "setmulti");
5570 qeth_delete_mc_addresses(card); 5569 qeth_delete_mc_addresses(card);
5571 if (card->options.layer2) { 5570 if (card->options.layer2) {
5572 qeth_layer2_add_multicast(card); 5571 qeth_layer2_add_multicast(card);
@@ -5583,7 +5582,6 @@ out:
5583 return; 5582 return;
5584 if (qeth_set_thread_start_bit(card, QETH_SET_PROMISC_MODE_THREAD)==0) 5583 if (qeth_set_thread_start_bit(card, QETH_SET_PROMISC_MODE_THREAD)==0)
5585 schedule_work(&card->kernel_thread_starter); 5584 schedule_work(&card->kernel_thread_starter);
5586
5587} 5585}
5588 5586
5589static int 5587static int
@@ -7456,6 +7454,7 @@ qeth_softsetup_card(struct qeth_card *card)
7456 card->lan_online = 1; 7454 card->lan_online = 1;
7457 if (card->info.type==QETH_CARD_TYPE_OSN) 7455 if (card->info.type==QETH_CARD_TYPE_OSN)
7458 goto out; 7456 goto out;
7457 qeth_set_large_send(card, card->options.large_send);
7459 if (card->options.layer2) { 7458 if (card->options.layer2) {
7460 card->dev->features |= 7459 card->dev->features |=
7461 NETIF_F_HW_VLAN_FILTER | 7460 NETIF_F_HW_VLAN_FILTER |
@@ -7472,12 +7471,6 @@ qeth_softsetup_card(struct qeth_card *card)
7472#endif 7471#endif
7473 goto out; 7472 goto out;
7474 } 7473 }
7475 if ((card->options.large_send == QETH_LARGE_SEND_EDDP) ||
7476 (card->options.large_send == QETH_LARGE_SEND_TSO))
7477 card->dev->features |= NETIF_F_TSO | NETIF_F_SG;
7478 else
7479 card->dev->features &= ~(NETIF_F_TSO | NETIF_F_SG);
7480
7481 if ((rc = qeth_setadapter_parms(card))) 7474 if ((rc = qeth_setadapter_parms(card)))
7482 QETH_DBF_TEXT_(setup, 2, "2err%d", rc); 7475 QETH_DBF_TEXT_(setup, 2, "2err%d", rc);
7483 if ((rc = qeth_start_ipassists(card))) 7476 if ((rc = qeth_start_ipassists(card)))
@@ -8626,12 +8619,7 @@ qeth_init(void)
8626{ 8619{
8627 int rc=0; 8620 int rc=0;
8628 8621
8629 PRINT_INFO("loading %s (%s/%s/%s/%s/%s/%s/%s %s %s)\n", 8622 PRINT_INFO("loading %s\n", version);
8630 version, VERSION_QETH_C, VERSION_QETH_H,
8631 VERSION_QETH_MPC_H, VERSION_QETH_MPC_C,
8632 VERSION_QETH_FS_H, VERSION_QETH_PROC_C,
8633 VERSION_QETH_SYS_C, QETH_VERSION_IPV6,
8634 QETH_VERSION_VLAN);
8635 8623
8636 INIT_LIST_HEAD(&qeth_card_list.list); 8624 INIT_LIST_HEAD(&qeth_card_list.list);
8637 INIT_LIST_HEAD(&qeth_notify_list); 8625 INIT_LIST_HEAD(&qeth_notify_list);
diff --git a/drivers/s390/net/qeth_mpc.c b/drivers/s390/net/qeth_mpc.c
index 5f8754addc14..77c83209d70e 100644
--- a/drivers/s390/net/qeth_mpc.c
+++ b/drivers/s390/net/qeth_mpc.c
@@ -11,8 +11,6 @@
11#include <asm/cio.h> 11#include <asm/cio.h>
12#include "qeth_mpc.h" 12#include "qeth_mpc.h"
13 13
14const char *VERSION_QETH_MPC_C = "$Revision: 1.13 $";
15
16unsigned char IDX_ACTIVATE_READ[]={ 14unsigned char IDX_ACTIVATE_READ[]={
17 0x00,0x00,0x80,0x00, 0x00,0x00,0x00,0x00, 15 0x00,0x00,0x80,0x00, 0x00,0x00,0x00,0x00,
18 0x19,0x01,0x01,0x80, 0x00,0x00,0x00,0x00, 16 0x19,0x01,0x01,0x80, 0x00,0x00,0x00,0x00,
diff --git a/drivers/s390/net/qeth_mpc.h b/drivers/s390/net/qeth_mpc.h
index 864cec5f6c62..011c41041029 100644
--- a/drivers/s390/net/qeth_mpc.h
+++ b/drivers/s390/net/qeth_mpc.h
@@ -14,10 +14,6 @@
14 14
15#include <asm/qeth.h> 15#include <asm/qeth.h>
16 16
17#define VERSION_QETH_MPC_H "$Revision: 1.46 $"
18
19extern const char *VERSION_QETH_MPC_C;
20
21#define IPA_PDU_HEADER_SIZE 0x40 17#define IPA_PDU_HEADER_SIZE 0x40
22#define QETH_IPA_PDU_LEN_TOTAL(buffer) (buffer+0x0e) 18#define QETH_IPA_PDU_LEN_TOTAL(buffer) (buffer+0x0e)
23#define QETH_IPA_PDU_LEN_PDU1(buffer) (buffer+0x26) 19#define QETH_IPA_PDU_LEN_PDU1(buffer) (buffer+0x26)
diff --git a/drivers/s390/net/qeth_proc.c b/drivers/s390/net/qeth_proc.c
index 7bf35098831e..3c6339df879d 100644
--- a/drivers/s390/net/qeth_proc.c
+++ b/drivers/s390/net/qeth_proc.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * 2 *
3 * linux/drivers/s390/net/qeth_fs.c ($Revision: 1.16 $) 3 * linux/drivers/s390/net/qeth_fs.c
4 * 4 *
5 * Linux on zSeries OSA Express and HiperSockets support 5 * Linux on zSeries OSA Express and HiperSockets support
6 * This file contains code related to procfs. 6 * This file contains code related to procfs.
@@ -21,8 +21,6 @@
21#include "qeth_mpc.h" 21#include "qeth_mpc.h"
22#include "qeth_fs.h" 22#include "qeth_fs.h"
23 23
24const char *VERSION_QETH_PROC_C = "$Revision: 1.16 $";
25
26/***** /proc/qeth *****/ 24/***** /proc/qeth *****/
27#define QETH_PROCFILE_NAME "qeth" 25#define QETH_PROCFILE_NAME "qeth"
28static struct proc_dir_entry *qeth_procfile; 26static struct proc_dir_entry *qeth_procfile;
diff --git a/drivers/s390/net/qeth_sys.c b/drivers/s390/net/qeth_sys.c
index 0ea185f70f75..c1831f572585 100644
--- a/drivers/s390/net/qeth_sys.c
+++ b/drivers/s390/net/qeth_sys.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * 2 *
3 * linux/drivers/s390/net/qeth_sys.c ($Revision: 1.60 $) 3 * linux/drivers/s390/net/qeth_sys.c
4 * 4 *
5 * Linux on zSeries OSA Express and HiperSockets support 5 * Linux on zSeries OSA Express and HiperSockets support
6 * This file contains code related to sysfs. 6 * This file contains code related to sysfs.
@@ -20,8 +20,6 @@
20#include "qeth_mpc.h" 20#include "qeth_mpc.h"
21#include "qeth_fs.h" 21#include "qeth_fs.h"
22 22
23const char *VERSION_QETH_SYS_C = "$Revision: 1.60 $";
24
25/*****************************************************************************/ 23/*****************************************************************************/
26/* */ 24/* */
27/* /sys-fs stuff UNDER DEVELOPMENT !!! */ 25/* /sys-fs stuff UNDER DEVELOPMENT !!! */
diff --git a/drivers/s390/net/qeth_tso.h b/drivers/s390/net/qeth_tso.h
index 3c50b6f24f51..1286ddea450b 100644
--- a/drivers/s390/net/qeth_tso.h
+++ b/drivers/s390/net/qeth_tso.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * linux/drivers/s390/net/qeth_tso.h ($Revision: 1.8 $) 2 * linux/drivers/s390/net/qeth_tso.h
3 * 3 *
4 * Header file for qeth TCP Segmentation Offload support. 4 * Header file for qeth TCP Segmentation Offload support.
5 * 5 *
@@ -7,8 +7,6 @@
7 * 7 *
8 * Author(s): Frank Pavlic <fpavlic@de.ibm.com> 8 * Author(s): Frank Pavlic <fpavlic@de.ibm.com>
9 * 9 *
10 * $Revision: 1.8 $ $Date: 2005/05/04 20:19:18 $
11 *
12 */ 10 */
13#ifndef __QETH_TSO_H__ 11#ifndef __QETH_TSO_H__
14#define __QETH_TSO_H__ 12#define __QETH_TSO_H__
diff --git a/drivers/s390/net/smsgiucv.c b/drivers/s390/net/smsgiucv.c
index d6469baa7e16..72118ee68954 100644
--- a/drivers/s390/net/smsgiucv.c
+++ b/drivers/s390/net/smsgiucv.c
@@ -168,7 +168,7 @@ smsg_init(void)
168 driver_unregister(&smsg_driver); 168 driver_unregister(&smsg_driver);
169 return -EIO; /* better errno ? */ 169 return -EIO; /* better errno ? */
170 } 170 }
171 rc = iucv_connect (&smsg_pathid, 1, 0, "*MSG ", 0, 0, 0, 0, 171 rc = iucv_connect (&smsg_pathid, 255, 0, "*MSG ", 0, 0, 0, 0,
172 smsg_handle, 0); 172 smsg_handle, 0);
173 if (rc) { 173 if (rc) {
174 printk(KERN_ERR "SMSGIUCV: failed to connect to *MSG"); 174 printk(KERN_ERR "SMSGIUCV: failed to connect to *MSG");
diff --git a/drivers/s390/s390_rdev.c b/drivers/s390/s390_rdev.c
index 206518c7d332..e3f647169827 100644
--- a/drivers/s390/s390_rdev.c
+++ b/drivers/s390/s390_rdev.c
@@ -1,7 +1,6 @@
1/* 1/*
2 * drivers/s390/s390_rdev.c 2 * drivers/s390/s390_rdev.c
3 * s390 root device 3 * s390 root device
4 * $Revision: 1.4 $
5 * 4 *
6 * Copyright (C) 2002, 2005 IBM Deutschland Entwicklung GmbH, 5 * Copyright (C) 2002, 2005 IBM Deutschland Entwicklung GmbH,
7 * IBM Corporation 6 * IBM Corporation
diff --git a/drivers/s390/s390mach.h b/drivers/s390/s390mach.h
index d9ea7ed2e46e..7abb42a09ae2 100644
--- a/drivers/s390/s390mach.h
+++ b/drivers/s390/s390mach.h
@@ -90,15 +90,16 @@ struct crw {
90 90
91static inline int stcrw(struct crw *pcrw ) 91static inline int stcrw(struct crw *pcrw )
92{ 92{
93 int ccode; 93 int ccode;
94 94
95 __asm__ __volatile__( 95 __asm__ __volatile__(
96 "STCRW 0(%1)\n\t" 96 "stcrw 0(%2)\n\t"
97 "IPM %0\n\t" 97 "ipm %0\n\t"
98 "SRL %0,28\n\t" 98 "srl %0,28\n\t"
99 : "=d" (ccode) : "a" (pcrw) 99 : "=d" (ccode), "=m" (*pcrw)
100 : "cc", "1" ); 100 : "a" (pcrw)
101 return ccode; 101 : "cc" );
102 return ccode;
102} 103}
103 104
104#endif /* __s390mach */ 105#endif /* __s390mach */
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c
index 167fef39d8a7..95b92f317b6f 100644
--- a/drivers/s390/scsi/zfcp_aux.c
+++ b/drivers/s390/scsi/zfcp_aux.c
@@ -29,8 +29,6 @@
29 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 29 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
30 */ 30 */
31 31
32#define ZFCP_AUX_REVISION "$Revision: 1.145 $"
33
34#include "zfcp_ext.h" 32#include "zfcp_ext.h"
35 33
36/* accumulated log level (module parameter) */ 34/* accumulated log level (module parameter) */
diff --git a/drivers/s390/scsi/zfcp_ccw.c b/drivers/s390/scsi/zfcp_ccw.c
index 0fc46381fc22..241136d0c6eb 100644
--- a/drivers/s390/scsi/zfcp_ccw.c
+++ b/drivers/s390/scsi/zfcp_ccw.c
@@ -27,8 +27,6 @@
27 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 27 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
28 */ 28 */
29 29
30#define ZFCP_CCW_C_REVISION "$Revision: 1.58 $"
31
32#include "zfcp_ext.h" 30#include "zfcp_ext.h"
33 31
34#define ZFCP_LOG_AREA ZFCP_LOG_AREA_CONFIG 32#define ZFCP_LOG_AREA ZFCP_LOG_AREA_CONFIG
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c
index 95599719f8ab..a5f2ba9a8fdb 100644
--- a/drivers/s390/scsi/zfcp_dbf.c
+++ b/drivers/s390/scsi/zfcp_dbf.c
@@ -23,8 +23,6 @@
23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 */ 24 */
25 25
26#define ZFCP_DBF_REVISION "$Revision$"
27
28#include <asm/debug.h> 26#include <asm/debug.h>
29#include <linux/ctype.h> 27#include <linux/ctype.h>
30#include "zfcp_ext.h" 28#include "zfcp_ext.h"
@@ -712,10 +710,9 @@ static inline void
712_zfcp_scsi_dbf_event_common(const char *tag, const char *tag2, int level, 710_zfcp_scsi_dbf_event_common(const char *tag, const char *tag2, int level,
713 struct zfcp_adapter *adapter, 711 struct zfcp_adapter *adapter,
714 struct scsi_cmnd *scsi_cmnd, 712 struct scsi_cmnd *scsi_cmnd,
715 struct zfcp_fsf_req *new_fsf_req) 713 struct zfcp_fsf_req *fsf_req,
714 struct zfcp_fsf_req *old_fsf_req)
716{ 715{
717 struct zfcp_fsf_req *fsf_req =
718 (struct zfcp_fsf_req *)scsi_cmnd->host_scribble;
719 struct zfcp_scsi_dbf_record *rec = &adapter->scsi_dbf_buf; 716 struct zfcp_scsi_dbf_record *rec = &adapter->scsi_dbf_buf;
720 struct zfcp_dbf_dump *dump = (struct zfcp_dbf_dump *)rec; 717 struct zfcp_dbf_dump *dump = (struct zfcp_dbf_dump *)rec;
721 unsigned long flags; 718 unsigned long flags;
@@ -729,19 +726,20 @@ _zfcp_scsi_dbf_event_common(const char *tag, const char *tag2, int level,
729 if (offset == 0) { 726 if (offset == 0) {
730 strncpy(rec->tag, tag, ZFCP_DBF_TAG_SIZE); 727 strncpy(rec->tag, tag, ZFCP_DBF_TAG_SIZE);
731 strncpy(rec->tag2, tag2, ZFCP_DBF_TAG_SIZE); 728 strncpy(rec->tag2, tag2, ZFCP_DBF_TAG_SIZE);
732 if (scsi_cmnd->device) { 729 if (scsi_cmnd != NULL) {
733 rec->scsi_id = scsi_cmnd->device->id; 730 if (scsi_cmnd->device) {
734 rec->scsi_lun = scsi_cmnd->device->lun; 731 rec->scsi_id = scsi_cmnd->device->id;
732 rec->scsi_lun = scsi_cmnd->device->lun;
733 }
734 rec->scsi_result = scsi_cmnd->result;
735 rec->scsi_cmnd = (unsigned long)scsi_cmnd;
736 rec->scsi_serial = scsi_cmnd->serial_number;
737 memcpy(rec->scsi_opcode, &scsi_cmnd->cmnd,
738 min((int)scsi_cmnd->cmd_len,
739 ZFCP_DBF_SCSI_OPCODE));
740 rec->scsi_retries = scsi_cmnd->retries;
741 rec->scsi_allowed = scsi_cmnd->allowed;
735 } 742 }
736 rec->scsi_result = scsi_cmnd->result;
737 rec->scsi_cmnd = (unsigned long)scsi_cmnd;
738 rec->scsi_serial = scsi_cmnd->serial_number;
739 memcpy(rec->scsi_opcode,
740 &scsi_cmnd->cmnd,
741 min((int)scsi_cmnd->cmd_len,
742 ZFCP_DBF_SCSI_OPCODE));
743 rec->scsi_retries = scsi_cmnd->retries;
744 rec->scsi_allowed = scsi_cmnd->allowed;
745 if (fsf_req != NULL) { 743 if (fsf_req != NULL) {
746 fcp_rsp = (struct fcp_rsp_iu *) 744 fcp_rsp = (struct fcp_rsp_iu *)
747 &(fsf_req->qtcb->bottom.io.fcp_rsp); 745 &(fsf_req->qtcb->bottom.io.fcp_rsp);
@@ -774,15 +772,8 @@ _zfcp_scsi_dbf_event_common(const char *tag, const char *tag2, int level,
774 rec->fsf_seqno = fsf_req->seq_no; 772 rec->fsf_seqno = fsf_req->seq_no;
775 rec->fsf_issued = fsf_req->issued; 773 rec->fsf_issued = fsf_req->issued;
776 } 774 }
777 if (new_fsf_req != NULL) { 775 rec->type.old_fsf_reqid =
778 rec->type.new_fsf_req.fsf_reqid = 776 (unsigned long) old_fsf_req;
779 (unsigned long)
780 new_fsf_req;
781 rec->type.new_fsf_req.fsf_seqno =
782 new_fsf_req->seq_no;
783 rec->type.new_fsf_req.fsf_issued =
784 new_fsf_req->issued;
785 }
786 } else { 777 } else {
787 strncpy(dump->tag, "dump", ZFCP_DBF_TAG_SIZE); 778 strncpy(dump->tag, "dump", ZFCP_DBF_TAG_SIZE);
788 dump->total_size = buflen; 779 dump->total_size = buflen;
@@ -803,19 +794,21 @@ _zfcp_scsi_dbf_event_common(const char *tag, const char *tag2, int level,
803inline void 794inline void
804zfcp_scsi_dbf_event_result(const char *tag, int level, 795zfcp_scsi_dbf_event_result(const char *tag, int level,
805 struct zfcp_adapter *adapter, 796 struct zfcp_adapter *adapter,
806 struct scsi_cmnd *scsi_cmnd) 797 struct scsi_cmnd *scsi_cmnd,
798 struct zfcp_fsf_req *fsf_req)
807{ 799{
808 _zfcp_scsi_dbf_event_common("rslt", 800 _zfcp_scsi_dbf_event_common("rslt", tag, level,
809 tag, level, adapter, scsi_cmnd, NULL); 801 adapter, scsi_cmnd, fsf_req, NULL);
810} 802}
811 803
812inline void 804inline void
813zfcp_scsi_dbf_event_abort(const char *tag, struct zfcp_adapter *adapter, 805zfcp_scsi_dbf_event_abort(const char *tag, struct zfcp_adapter *adapter,
814 struct scsi_cmnd *scsi_cmnd, 806 struct scsi_cmnd *scsi_cmnd,
815 struct zfcp_fsf_req *new_fsf_req) 807 struct zfcp_fsf_req *new_fsf_req,
808 struct zfcp_fsf_req *old_fsf_req)
816{ 809{
817 _zfcp_scsi_dbf_event_common("abrt", 810 _zfcp_scsi_dbf_event_common("abrt", tag, 1,
818 tag, 1, adapter, scsi_cmnd, new_fsf_req); 811 adapter, scsi_cmnd, new_fsf_req, old_fsf_req);
819} 812}
820 813
821inline void 814inline void
@@ -825,7 +818,7 @@ zfcp_scsi_dbf_event_devreset(const char *tag, u8 flag, struct zfcp_unit *unit,
825 struct zfcp_adapter *adapter = unit->port->adapter; 818 struct zfcp_adapter *adapter = unit->port->adapter;
826 819
827 _zfcp_scsi_dbf_event_common(flag == FCP_TARGET_RESET ? "trst" : "lrst", 820 _zfcp_scsi_dbf_event_common(flag == FCP_TARGET_RESET ? "trst" : "lrst",
828 tag, 1, adapter, scsi_cmnd, NULL); 821 tag, 1, adapter, scsi_cmnd, NULL, NULL);
829} 822}
830 823
831static int 824static int
@@ -858,6 +851,10 @@ zfcp_scsi_dbf_view_format(debug_info_t * id, struct debug_view *view,
858 rec->scsi_retries); 851 rec->scsi_retries);
859 len += zfcp_dbf_view(out_buf + len, "scsi_allowed", "0x%02x", 852 len += zfcp_dbf_view(out_buf + len, "scsi_allowed", "0x%02x",
860 rec->scsi_allowed); 853 rec->scsi_allowed);
854 if (strncmp(rec->tag, "abrt", ZFCP_DBF_TAG_SIZE) == 0) {
855 len += zfcp_dbf_view(out_buf + len, "old_fsf_reqid", "0x%0Lx",
856 rec->type.old_fsf_reqid);
857 }
861 len += zfcp_dbf_view(out_buf + len, "fsf_reqid", "0x%0Lx", 858 len += zfcp_dbf_view(out_buf + len, "fsf_reqid", "0x%0Lx",
862 rec->fsf_reqid); 859 rec->fsf_reqid);
863 len += zfcp_dbf_view(out_buf + len, "fsf_seqno", "0x%08x", 860 len += zfcp_dbf_view(out_buf + len, "fsf_seqno", "0x%08x",
@@ -885,21 +882,6 @@ zfcp_scsi_dbf_view_format(debug_info_t * id, struct debug_view *view,
885 min((int)rec->type.fcp.sns_info_len, 882 min((int)rec->type.fcp.sns_info_len,
886 ZFCP_DBF_SCSI_FCP_SNS_INFO), 0, 883 ZFCP_DBF_SCSI_FCP_SNS_INFO), 0,
887 rec->type.fcp.sns_info_len); 884 rec->type.fcp.sns_info_len);
888 } else if (strncmp(rec->tag, "abrt", ZFCP_DBF_TAG_SIZE) == 0) {
889 len += zfcp_dbf_view(out_buf + len, "fsf_reqid_abort", "0x%0Lx",
890 rec->type.new_fsf_req.fsf_reqid);
891 len += zfcp_dbf_view(out_buf + len, "fsf_seqno_abort", "0x%08x",
892 rec->type.new_fsf_req.fsf_seqno);
893 len += zfcp_dbf_stck(out_buf + len, "fsf_issued",
894 rec->type.new_fsf_req.fsf_issued);
895 } else if ((strncmp(rec->tag, "trst", ZFCP_DBF_TAG_SIZE) == 0) ||
896 (strncmp(rec->tag, "lrst", ZFCP_DBF_TAG_SIZE) == 0)) {
897 len += zfcp_dbf_view(out_buf + len, "fsf_reqid_reset", "0x%0Lx",
898 rec->type.new_fsf_req.fsf_reqid);
899 len += zfcp_dbf_view(out_buf + len, "fsf_seqno_reset", "0x%08x",
900 rec->type.new_fsf_req.fsf_seqno);
901 len += zfcp_dbf_stck(out_buf + len, "fsf_issued",
902 rec->type.new_fsf_req.fsf_issued);
903 } 885 }
904 886
905 len += sprintf(out_buf + len, "\n"); 887 len += sprintf(out_buf + len, "\n");
diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h
index 9bb511083a26..6eba56cd89ba 100644
--- a/drivers/s390/scsi/zfcp_def.h
+++ b/drivers/s390/scsi/zfcp_def.h
@@ -34,8 +34,6 @@
34#ifndef ZFCP_DEF_H 34#ifndef ZFCP_DEF_H
35#define ZFCP_DEF_H 35#define ZFCP_DEF_H
36 36
37#define ZFCP_DEF_REVISION "$Revision: 1.111 $"
38
39/*************************** INCLUDES *****************************************/ 37/*************************** INCLUDES *****************************************/
40 38
41#include <linux/init.h> 39#include <linux/init.h>
@@ -154,11 +152,6 @@ typedef u32 scsi_lun_t;
154#define ZFCP_EXCHANGE_CONFIG_DATA_FIRST_SLEEP 100 152#define ZFCP_EXCHANGE_CONFIG_DATA_FIRST_SLEEP 100
155#define ZFCP_EXCHANGE_CONFIG_DATA_RETRIES 7 153#define ZFCP_EXCHANGE_CONFIG_DATA_RETRIES 7
156 154
157/* Retry 5 times every 2 second, then every minute */
158#define ZFCP_EXCHANGE_PORT_DATA_SHORT_RETRIES 5
159#define ZFCP_EXCHANGE_PORT_DATA_SHORT_SLEEP 200
160#define ZFCP_EXCHANGE_PORT_DATA_LONG_SLEEP 6000
161
162/* timeout value for "default timer" for fsf requests */ 155/* timeout value for "default timer" for fsf requests */
163#define ZFCP_FSF_REQUEST_TIMEOUT (60*HZ); 156#define ZFCP_FSF_REQUEST_TIMEOUT (60*HZ);
164 157
@@ -431,11 +424,7 @@ struct zfcp_scsi_dbf_record {
431 u32 fsf_seqno; 424 u32 fsf_seqno;
432 u64 fsf_issued; 425 u64 fsf_issued;
433 union { 426 union {
434 struct { 427 u64 old_fsf_reqid;
435 u64 fsf_reqid;
436 u32 fsf_seqno;
437 u64 fsf_issued;
438 } new_fsf_req;
439 struct { 428 struct {
440 u8 rsp_validity; 429 u8 rsp_validity;
441 u8 rsp_scsi_status; 430 u8 rsp_scsi_status;
@@ -675,6 +664,7 @@ do { \
675#define ZFCP_STATUS_UNIT_TEMPORARY 0x00000002 664#define ZFCP_STATUS_UNIT_TEMPORARY 0x00000002
676#define ZFCP_STATUS_UNIT_SHARED 0x00000004 665#define ZFCP_STATUS_UNIT_SHARED 0x00000004
677#define ZFCP_STATUS_UNIT_READONLY 0x00000008 666#define ZFCP_STATUS_UNIT_READONLY 0x00000008
667#define ZFCP_STATUS_UNIT_REGISTERED 0x00000010
678 668
679/* FSF request status (this does not have a common part) */ 669/* FSF request status (this does not have a common part) */
680#define ZFCP_STATUS_FSFREQ_NOT_INIT 0x00000000 670#define ZFCP_STATUS_FSFREQ_NOT_INIT 0x00000000
@@ -917,8 +907,6 @@ struct zfcp_adapter {
917 wwn_t peer_wwnn; /* P2P peer WWNN */ 907 wwn_t peer_wwnn; /* P2P peer WWNN */
918 wwn_t peer_wwpn; /* P2P peer WWPN */ 908 wwn_t peer_wwpn; /* P2P peer WWPN */
919 u32 peer_d_id; /* P2P peer D_ID */ 909 u32 peer_d_id; /* P2P peer D_ID */
920 wwn_t physical_wwpn; /* WWPN of physical port */
921 u32 physical_s_id; /* local FC port ID */
922 struct ccw_device *ccw_device; /* S/390 ccw device */ 910 struct ccw_device *ccw_device; /* S/390 ccw device */
923 u8 fc_service_class; 911 u8 fc_service_class;
924 u32 hydra_version; /* Hydra version */ 912 u32 hydra_version; /* Hydra version */
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c
index c065cb836c97..57cb628a05aa 100644
--- a/drivers/s390/scsi/zfcp_erp.c
+++ b/drivers/s390/scsi/zfcp_erp.c
@@ -31,8 +31,6 @@
31 31
32#define ZFCP_LOG_AREA ZFCP_LOG_AREA_ERP 32#define ZFCP_LOG_AREA ZFCP_LOG_AREA_ERP
33 33
34#define ZFCP_ERP_REVISION "$Revision: 1.86 $"
35
36#include "zfcp_ext.h" 34#include "zfcp_ext.h"
37 35
38static int zfcp_erp_adisc(struct zfcp_port *); 36static int zfcp_erp_adisc(struct zfcp_port *);
@@ -2248,15 +2246,6 @@ zfcp_erp_adapter_strategy_open_fsf(struct zfcp_erp_action *erp_action)
2248{ 2246{
2249 int retval; 2247 int retval;
2250 2248
2251 if ((atomic_test_mask(ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED,
2252 &erp_action->adapter->status)) &&
2253 (erp_action->adapter->adapter_features &
2254 FSF_FEATURE_HBAAPI_MANAGEMENT)) {
2255 zfcp_erp_adapter_strategy_open_fsf_xport(erp_action);
2256 atomic_set(&erp_action->adapter->erp_counter, 0);
2257 return ZFCP_ERP_FAILED;
2258 }
2259
2260 retval = zfcp_erp_adapter_strategy_open_fsf_xconfig(erp_action); 2249 retval = zfcp_erp_adapter_strategy_open_fsf_xconfig(erp_action);
2261 if (retval == ZFCP_ERP_FAILED) 2250 if (retval == ZFCP_ERP_FAILED)
2262 return ZFCP_ERP_FAILED; 2251 return ZFCP_ERP_FAILED;
@@ -2268,13 +2257,6 @@ zfcp_erp_adapter_strategy_open_fsf(struct zfcp_erp_action *erp_action)
2268 return zfcp_erp_adapter_strategy_open_fsf_statusread(erp_action); 2257 return zfcp_erp_adapter_strategy_open_fsf_statusread(erp_action);
2269} 2258}
2270 2259
2271/*
2272 * function:
2273 *
2274 * purpose:
2275 *
2276 * returns:
2277 */
2278static int 2260static int
2279zfcp_erp_adapter_strategy_open_fsf_xconfig(struct zfcp_erp_action *erp_action) 2261zfcp_erp_adapter_strategy_open_fsf_xconfig(struct zfcp_erp_action *erp_action)
2280{ 2262{
@@ -2352,48 +2334,40 @@ static int
2352zfcp_erp_adapter_strategy_open_fsf_xport(struct zfcp_erp_action *erp_action) 2334zfcp_erp_adapter_strategy_open_fsf_xport(struct zfcp_erp_action *erp_action)
2353{ 2335{
2354 int ret; 2336 int ret;
2355 int retries; 2337 struct zfcp_adapter *adapter;
2356 int sleep;
2357 struct zfcp_adapter *adapter = erp_action->adapter;
2358 2338
2339 adapter = erp_action->adapter;
2359 atomic_clear_mask(ZFCP_STATUS_ADAPTER_XPORT_OK, &adapter->status); 2340 atomic_clear_mask(ZFCP_STATUS_ADAPTER_XPORT_OK, &adapter->status);
2360 2341
2361 retries = 0; 2342 write_lock(&adapter->erp_lock);
2362 do { 2343 zfcp_erp_action_to_running(erp_action);
2363 write_lock(&adapter->erp_lock); 2344 write_unlock(&adapter->erp_lock);
2364 zfcp_erp_action_to_running(erp_action);
2365 write_unlock(&adapter->erp_lock);
2366 zfcp_erp_timeout_init(erp_action);
2367 ret = zfcp_fsf_exchange_port_data(erp_action, adapter, NULL);
2368 if (ret == -EOPNOTSUPP) {
2369 debug_text_event(adapter->erp_dbf, 3, "a_xport_notsupp");
2370 return ZFCP_ERP_SUCCEEDED;
2371 } else if (ret) {
2372 debug_text_event(adapter->erp_dbf, 3, "a_xport_failed");
2373 return ZFCP_ERP_FAILED;
2374 }
2375 debug_text_event(adapter->erp_dbf, 6, "a_xport_ok");
2376 2345
2377 down(&adapter->erp_ready_sem); 2346 zfcp_erp_timeout_init(erp_action);
2378 if (erp_action->status & ZFCP_STATUS_ERP_TIMEDOUT) { 2347 ret = zfcp_fsf_exchange_port_data(erp_action, adapter, NULL);
2379 ZFCP_LOG_INFO("error: exchange of port data " 2348 if (ret == -EOPNOTSUPP) {
2380 "for adapter %s timed out\n", 2349 debug_text_event(adapter->erp_dbf, 3, "a_xport_notsupp");
2381 zfcp_get_busid_by_adapter(adapter)); 2350 return ZFCP_ERP_SUCCEEDED;
2382 break; 2351 } else if (ret) {
2383 } 2352 debug_text_event(adapter->erp_dbf, 3, "a_xport_failed");
2384 if (!atomic_test_mask(ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED, 2353 return ZFCP_ERP_FAILED;
2385 &adapter->status)) 2354 }
2386 break; 2355 debug_text_event(adapter->erp_dbf, 6, "a_xport_ok");
2387 2356
2388 if (retries < ZFCP_EXCHANGE_PORT_DATA_SHORT_RETRIES) { 2357 ret = ZFCP_ERP_SUCCEEDED;
2389 sleep = ZFCP_EXCHANGE_PORT_DATA_SHORT_SLEEP; 2358 down(&adapter->erp_ready_sem);
2390 retries++; 2359 if (erp_action->status & ZFCP_STATUS_ERP_TIMEDOUT) {
2391 } else 2360 ZFCP_LOG_INFO("error: exchange port data timed out (adapter "
2392 sleep = ZFCP_EXCHANGE_PORT_DATA_LONG_SLEEP; 2361 "%s)\n", zfcp_get_busid_by_adapter(adapter));
2393 schedule_timeout(sleep); 2362 ret = ZFCP_ERP_FAILED;
2394 } while (1); 2363 }
2364 if (!atomic_test_mask(ZFCP_STATUS_ADAPTER_XPORT_OK, &adapter->status)) {
2365 ZFCP_LOG_INFO("error: exchange port data failed (adapter "
2366 "%s\n", zfcp_get_busid_by_adapter(adapter));
2367 ret = ZFCP_ERP_FAILED;
2368 }
2395 2369
2396 return ZFCP_ERP_SUCCEEDED; 2370 return ret;
2397} 2371}
2398 2372
2399/* 2373/*
@@ -3417,10 +3391,13 @@ zfcp_erp_action_cleanup(int action, struct zfcp_adapter *adapter,
3417 && (!atomic_test_mask(ZFCP_STATUS_UNIT_TEMPORARY, 3391 && (!atomic_test_mask(ZFCP_STATUS_UNIT_TEMPORARY,
3418 &unit->status)) 3392 &unit->status))
3419 && !unit->device 3393 && !unit->device
3420 && port->rport) 3394 && port->rport) {
3421 scsi_add_device(port->adapter->scsi_host, 0, 3395 atomic_set_mask(ZFCP_STATUS_UNIT_REGISTERED,
3422 port->rport->scsi_target_id, 3396 &unit->status);
3423 unit->scsi_lun); 3397 scsi_scan_target(&port->rport->dev, 0,
3398 port->rport->scsi_target_id,
3399 unit->scsi_lun, 0);
3400 }
3424 zfcp_unit_put(unit); 3401 zfcp_unit_put(unit);
3425 break; 3402 break;
3426 case ZFCP_ERP_ACTION_REOPEN_PORT_FORCED: 3403 case ZFCP_ERP_ACTION_REOPEN_PORT_FORCED:
@@ -3441,6 +3418,8 @@ zfcp_erp_action_cleanup(int action, struct zfcp_adapter *adapter,
3441 "(adapter %s, wwpn=0x%016Lx)\n", 3418 "(adapter %s, wwpn=0x%016Lx)\n",
3442 zfcp_get_busid_by_port(port), 3419 zfcp_get_busid_by_port(port),
3443 port->wwpn); 3420 port->wwpn);
3421 else
3422 scsi_flush_work(adapter->scsi_host);
3444 } 3423 }
3445 zfcp_port_put(port); 3424 zfcp_port_put(port);
3446 break; 3425 break;
diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h
index c3782261cb5c..700f5402a978 100644
--- a/drivers/s390/scsi/zfcp_ext.h
+++ b/drivers/s390/scsi/zfcp_ext.h
@@ -32,8 +32,6 @@
32#ifndef ZFCP_EXT_H 32#ifndef ZFCP_EXT_H
33#define ZFCP_EXT_H 33#define ZFCP_EXT_H
34 34
35#define ZFCP_EXT_REVISION "$Revision: 1.62 $"
36
37#include "zfcp_def.h" 35#include "zfcp_def.h"
38 36
39extern struct zfcp_data zfcp_data; 37extern struct zfcp_data zfcp_data;
@@ -196,9 +194,10 @@ extern void zfcp_san_dbf_event_els_response(struct zfcp_fsf_req *);
196extern void zfcp_san_dbf_event_incoming_els(struct zfcp_fsf_req *); 194extern void zfcp_san_dbf_event_incoming_els(struct zfcp_fsf_req *);
197 195
198extern void zfcp_scsi_dbf_event_result(const char *, int, struct zfcp_adapter *, 196extern void zfcp_scsi_dbf_event_result(const char *, int, struct zfcp_adapter *,
199 struct scsi_cmnd *); 197 struct scsi_cmnd *,
198 struct zfcp_fsf_req *);
200extern void zfcp_scsi_dbf_event_abort(const char *, struct zfcp_adapter *, 199extern void zfcp_scsi_dbf_event_abort(const char *, struct zfcp_adapter *,
201 struct scsi_cmnd *, 200 struct scsi_cmnd *, struct zfcp_fsf_req *,
202 struct zfcp_fsf_req *); 201 struct zfcp_fsf_req *);
203extern void zfcp_scsi_dbf_event_devreset(const char *, u8, struct zfcp_unit *, 202extern void zfcp_scsi_dbf_event_devreset(const char *, u8, struct zfcp_unit *,
204 struct scsi_cmnd *); 203 struct scsi_cmnd *);
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c
index cbfab09899c8..662ec571d73b 100644
--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -30,8 +30,6 @@
30 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 30 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
31 */ 31 */
32 32
33#define ZFCP_FSF_C_REVISION "$Revision: 1.92 $"
34
35#include "zfcp_ext.h" 33#include "zfcp_ext.h"
36 34
37static int zfcp_fsf_exchange_config_data_handler(struct zfcp_fsf_req *); 35static int zfcp_fsf_exchange_config_data_handler(struct zfcp_fsf_req *);
@@ -390,6 +388,7 @@ zfcp_fsf_protstatus_eval(struct zfcp_fsf_req *fsf_req)
390 case FSF_PROT_LINK_DOWN: 388 case FSF_PROT_LINK_DOWN:
391 zfcp_fsf_link_down_info_eval(adapter, 389 zfcp_fsf_link_down_info_eval(adapter,
392 &prot_status_qual->link_down_info); 390 &prot_status_qual->link_down_info);
391 zfcp_erp_adapter_reopen(adapter, 0);
393 fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR; 392 fsf_req->status |= ZFCP_STATUS_FSFREQ_ERROR;
394 break; 393 break;
395 394
@@ -560,10 +559,8 @@ zfcp_fsf_link_down_info_eval(struct zfcp_adapter *adapter,
560 559
561 atomic_set_mask(ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED, &adapter->status); 560 atomic_set_mask(ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED, &adapter->status);
562 561
563 if (link_down == NULL) { 562 if (link_down == NULL)
564 zfcp_erp_adapter_reopen(adapter, 0); 563 goto out;
565 return;
566 }
567 564
568 switch (link_down->error_code) { 565 switch (link_down->error_code) {
569 case FSF_PSQ_LINK_NO_LIGHT: 566 case FSF_PSQ_LINK_NO_LIGHT:
@@ -645,16 +642,8 @@ zfcp_fsf_link_down_info_eval(struct zfcp_adapter *adapter,
645 link_down->explanation_code, 642 link_down->explanation_code,
646 link_down->vendor_specific_code); 643 link_down->vendor_specific_code);
647 644
648 switch (link_down->error_code) { 645 out:
649 case FSF_PSQ_LINK_NO_LIGHT: 646 zfcp_erp_adapter_failed(adapter);
650 case FSF_PSQ_LINK_WRAP_PLUG:
651 case FSF_PSQ_LINK_NO_FCP:
652 case FSF_PSQ_LINK_FIRMWARE_UPDATE:
653 zfcp_erp_adapter_reopen(adapter, 0);
654 break;
655 default:
656 zfcp_erp_adapter_failed(adapter);
657 }
658} 647}
659 648
660/* 649/*
@@ -2306,6 +2295,35 @@ zfcp_fsf_exchange_port_data(struct zfcp_erp_action *erp_action,
2306 return retval; 2295 return retval;
2307} 2296}
2308 2297
2298/**
2299 * zfcp_fsf_exchange_port_evaluate
2300 * @fsf_req: fsf_req which belongs to xchg port data request
2301 * @xchg_ok: specifies if xchg port data was incomplete or complete (0/1)
2302 */
2303static void
2304zfcp_fsf_exchange_port_evaluate(struct zfcp_fsf_req *fsf_req, int xchg_ok)
2305{
2306 struct zfcp_adapter *adapter;
2307 struct fsf_qtcb *qtcb;
2308 struct fsf_qtcb_bottom_port *bottom, *data;
2309 struct Scsi_Host *shost;
2310
2311 adapter = fsf_req->adapter;
2312 qtcb = fsf_req->qtcb;
2313 bottom = &qtcb->bottom.port;
2314 shost = adapter->scsi_host;
2315
2316 data = (struct fsf_qtcb_bottom_port*) fsf_req->data;
2317 if (data)
2318 memcpy(data, bottom, sizeof(struct fsf_qtcb_bottom_port));
2319
2320 if (adapter->connection_features & FSF_FEATURE_NPIV_MODE)
2321 fc_host_permanent_port_name(shost) = bottom->wwpn;
2322 else
2323 fc_host_permanent_port_name(shost) = fc_host_port_name(shost);
2324 fc_host_maxframe_size(shost) = bottom->maximum_frame_size;
2325 fc_host_supported_speeds(shost) = bottom->supported_speed;
2326}
2309 2327
2310/** 2328/**
2311 * zfcp_fsf_exchange_port_data_handler - handler for exchange_port_data request 2329 * zfcp_fsf_exchange_port_data_handler - handler for exchange_port_data request
@@ -2314,38 +2332,26 @@ zfcp_fsf_exchange_port_data(struct zfcp_erp_action *erp_action,
2314static void 2332static void
2315zfcp_fsf_exchange_port_data_handler(struct zfcp_fsf_req *fsf_req) 2333zfcp_fsf_exchange_port_data_handler(struct zfcp_fsf_req *fsf_req)
2316{ 2334{
2317 struct zfcp_adapter *adapter = fsf_req->adapter; 2335 struct zfcp_adapter *adapter;
2318 struct Scsi_Host *shost = adapter->scsi_host; 2336 struct fsf_qtcb *qtcb;
2319 struct fsf_qtcb *qtcb = fsf_req->qtcb; 2337
2320 struct fsf_qtcb_bottom_port *bottom, *data; 2338 adapter = fsf_req->adapter;
2339 qtcb = fsf_req->qtcb;
2321 2340
2322 if (fsf_req->status & ZFCP_STATUS_FSFREQ_ERROR) 2341 if (fsf_req->status & ZFCP_STATUS_FSFREQ_ERROR)
2323 return; 2342 return;
2324 2343
2325 switch (qtcb->header.fsf_status) { 2344 switch (qtcb->header.fsf_status) {
2326 case FSF_GOOD: 2345 case FSF_GOOD:
2346 zfcp_fsf_exchange_port_evaluate(fsf_req, 1);
2327 atomic_set_mask(ZFCP_STATUS_ADAPTER_XPORT_OK, &adapter->status); 2347 atomic_set_mask(ZFCP_STATUS_ADAPTER_XPORT_OK, &adapter->status);
2328
2329 bottom = &qtcb->bottom.port;
2330 data = (struct fsf_qtcb_bottom_port*) fsf_req->data;
2331 if (data)
2332 memcpy(data, bottom, sizeof(struct fsf_qtcb_bottom_port));
2333 if (adapter->connection_features & FSF_FEATURE_NPIV_MODE)
2334 fc_host_permanent_port_name(shost) = bottom->wwpn;
2335 else
2336 fc_host_permanent_port_name(shost) =
2337 fc_host_port_name(shost);
2338 fc_host_maxframe_size(shost) = bottom->maximum_frame_size;
2339 fc_host_supported_speeds(shost) = bottom->supported_speed;
2340 break; 2348 break;
2341
2342 case FSF_EXCHANGE_CONFIG_DATA_INCOMPLETE: 2349 case FSF_EXCHANGE_CONFIG_DATA_INCOMPLETE:
2350 zfcp_fsf_exchange_port_evaluate(fsf_req, 0);
2343 atomic_set_mask(ZFCP_STATUS_ADAPTER_XPORT_OK, &adapter->status); 2351 atomic_set_mask(ZFCP_STATUS_ADAPTER_XPORT_OK, &adapter->status);
2344
2345 zfcp_fsf_link_down_info_eval(adapter, 2352 zfcp_fsf_link_down_info_eval(adapter,
2346 &qtcb->header.fsf_status_qual.link_down_info); 2353 &qtcb->header.fsf_status_qual.link_down_info);
2347 break; 2354 break;
2348
2349 default: 2355 default:
2350 debug_text_event(adapter->erp_dbf, 0, "xchg-port-ng"); 2356 debug_text_event(adapter->erp_dbf, 0, "xchg-port-ng");
2351 debug_event(adapter->erp_dbf, 0, 2357 debug_event(adapter->erp_dbf, 0,
@@ -4205,11 +4211,11 @@ zfcp_fsf_send_fcp_command_task_handler(struct zfcp_fsf_req *fsf_req)
4205 ZFCP_LOG_DEBUG("scpnt->result =0x%x\n", scpnt->result); 4211 ZFCP_LOG_DEBUG("scpnt->result =0x%x\n", scpnt->result);
4206 4212
4207 if (scpnt->result != 0) 4213 if (scpnt->result != 0)
4208 zfcp_scsi_dbf_event_result("erro", 3, fsf_req->adapter, scpnt); 4214 zfcp_scsi_dbf_event_result("erro", 3, fsf_req->adapter, scpnt, fsf_req);
4209 else if (scpnt->retries > 0) 4215 else if (scpnt->retries > 0)
4210 zfcp_scsi_dbf_event_result("retr", 4, fsf_req->adapter, scpnt); 4216 zfcp_scsi_dbf_event_result("retr", 4, fsf_req->adapter, scpnt, fsf_req);
4211 else 4217 else
4212 zfcp_scsi_dbf_event_result("norm", 6, fsf_req->adapter, scpnt); 4218 zfcp_scsi_dbf_event_result("norm", 6, fsf_req->adapter, scpnt, fsf_req);
4213 4219
4214 /* cleanup pointer (need this especially for abort) */ 4220 /* cleanup pointer (need this especially for abort) */
4215 scpnt->host_scribble = NULL; 4221 scpnt->host_scribble = NULL;
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c
index d719f66a29a4..1c3275163c91 100644
--- a/drivers/s390/scsi/zfcp_qdio.c
+++ b/drivers/s390/scsi/zfcp_qdio.c
@@ -29,8 +29,6 @@
29 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 29 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
30 */ 30 */
31 31
32#define ZFCP_QDIO_C_REVISION "$Revision: 1.20 $"
33
34#include "zfcp_ext.h" 32#include "zfcp_ext.h"
35 33
36static inline void zfcp_qdio_sbal_limit(struct zfcp_fsf_req *, int); 34static inline void zfcp_qdio_sbal_limit(struct zfcp_fsf_req *, int);
diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c
index 3c2cbcccbf54..9e6d07d7b3c8 100644
--- a/drivers/s390/scsi/zfcp_scsi.c
+++ b/drivers/s390/scsi/zfcp_scsi.c
@@ -31,8 +31,6 @@
31 31
32#define ZFCP_LOG_AREA ZFCP_LOG_AREA_SCSI 32#define ZFCP_LOG_AREA ZFCP_LOG_AREA_SCSI
33 33
34#define ZFCP_SCSI_REVISION "$Revision: 1.74 $"
35
36#include "zfcp_ext.h" 34#include "zfcp_ext.h"
37 35
38static void zfcp_scsi_slave_destroy(struct scsi_device *sdp); 36static void zfcp_scsi_slave_destroy(struct scsi_device *sdp);
@@ -70,7 +68,7 @@ struct zfcp_data zfcp_data = {
70 eh_host_reset_handler: zfcp_scsi_eh_host_reset_handler, 68 eh_host_reset_handler: zfcp_scsi_eh_host_reset_handler,
71 /* FIXME(openfcp): Tune */ 69 /* FIXME(openfcp): Tune */
72 can_queue: 4096, 70 can_queue: 4096,
73 this_id: 0, 71 this_id: -1,
74 /* 72 /*
75 * FIXME: 73 * FIXME:
76 * one less? can zfcp_create_sbale cope with it? 74 * one less? can zfcp_create_sbale cope with it?
@@ -185,7 +183,8 @@ zfcp_scsi_slave_alloc(struct scsi_device *sdp)
185 183
186 read_lock_irqsave(&zfcp_data.config_lock, flags); 184 read_lock_irqsave(&zfcp_data.config_lock, flags);
187 unit = zfcp_unit_lookup(adapter, sdp->channel, sdp->id, sdp->lun); 185 unit = zfcp_unit_lookup(adapter, sdp->channel, sdp->id, sdp->lun);
188 if (unit) { 186 if (unit && atomic_test_mask(ZFCP_STATUS_UNIT_REGISTERED,
187 &unit->status)) {
189 sdp->hostdata = unit; 188 sdp->hostdata = unit;
190 unit->device = sdp; 189 unit->device = sdp;
191 zfcp_unit_get(unit); 190 zfcp_unit_get(unit);
@@ -210,6 +209,7 @@ zfcp_scsi_slave_destroy(struct scsi_device *sdpnt)
210 struct zfcp_unit *unit = (struct zfcp_unit *) sdpnt->hostdata; 209 struct zfcp_unit *unit = (struct zfcp_unit *) sdpnt->hostdata;
211 210
212 if (unit) { 211 if (unit) {
212 atomic_clear_mask(ZFCP_STATUS_UNIT_REGISTERED, &unit->status);
213 sdpnt->hostdata = NULL; 213 sdpnt->hostdata = NULL;
214 unit->device = NULL; 214 unit->device = NULL;
215 zfcp_unit_put(unit); 215 zfcp_unit_put(unit);
@@ -244,7 +244,7 @@ zfcp_scsi_command_fail(struct scsi_cmnd *scpnt, int result)
244 if ((scpnt->device != NULL) && (scpnt->device->host != NULL)) 244 if ((scpnt->device != NULL) && (scpnt->device->host != NULL))
245 zfcp_scsi_dbf_event_result("fail", 4, 245 zfcp_scsi_dbf_event_result("fail", 4,
246 (struct zfcp_adapter*) scpnt->device->host->hostdata[0], 246 (struct zfcp_adapter*) scpnt->device->host->hostdata[0],
247 scpnt); 247 scpnt, NULL);
248 /* return directly */ 248 /* return directly */
249 scpnt->scsi_done(scpnt); 249 scpnt->scsi_done(scpnt);
250} 250}
@@ -293,7 +293,7 @@ zfcp_scsi_command_async(struct zfcp_adapter *adapter, struct zfcp_unit *unit,
293 "on port 0x%016Lx in recovery\n", 293 "on port 0x%016Lx in recovery\n",
294 zfcp_get_busid_by_unit(unit), 294 zfcp_get_busid_by_unit(unit),
295 unit->fcp_lun, unit->port->wwpn); 295 unit->fcp_lun, unit->port->wwpn);
296 retval = SCSI_MLQUEUE_DEVICE_BUSY; 296 zfcp_scsi_command_fail(scpnt, DID_NO_CONNECT);
297 goto out; 297 goto out;
298 } 298 }
299 299
@@ -448,7 +448,7 @@ zfcp_scsi_eh_abort_handler(struct scsi_cmnd *scpnt)
448 old_fsf_req = (struct zfcp_fsf_req *) scpnt->host_scribble; 448 old_fsf_req = (struct zfcp_fsf_req *) scpnt->host_scribble;
449 if (!old_fsf_req) { 449 if (!old_fsf_req) {
450 write_unlock_irqrestore(&adapter->abort_lock, flags); 450 write_unlock_irqrestore(&adapter->abort_lock, flags);
451 zfcp_scsi_dbf_event_abort("lte1", adapter, scpnt, new_fsf_req); 451 zfcp_scsi_dbf_event_abort("lte1", adapter, scpnt, NULL, NULL);
452 retval = SUCCESS; 452 retval = SUCCESS;
453 goto out; 453 goto out;
454 } 454 }
@@ -462,6 +462,8 @@ zfcp_scsi_eh_abort_handler(struct scsi_cmnd *scpnt)
462 adapter, unit, 0); 462 adapter, unit, 0);
463 if (!new_fsf_req) { 463 if (!new_fsf_req) {
464 ZFCP_LOG_INFO("error: initiation of Abort FCP Cmnd failed\n"); 464 ZFCP_LOG_INFO("error: initiation of Abort FCP Cmnd failed\n");
465 zfcp_scsi_dbf_event_abort("nres", adapter, scpnt, NULL,
466 old_fsf_req);
465 retval = FAILED; 467 retval = FAILED;
466 goto out; 468 goto out;
467 } 469 }
@@ -472,13 +474,16 @@ zfcp_scsi_eh_abort_handler(struct scsi_cmnd *scpnt)
472 474
473 /* status should be valid since signals were not permitted */ 475 /* status should be valid since signals were not permitted */
474 if (new_fsf_req->status & ZFCP_STATUS_FSFREQ_ABORTSUCCEEDED) { 476 if (new_fsf_req->status & ZFCP_STATUS_FSFREQ_ABORTSUCCEEDED) {
475 zfcp_scsi_dbf_event_abort("okay", adapter, scpnt, new_fsf_req); 477 zfcp_scsi_dbf_event_abort("okay", adapter, scpnt, new_fsf_req,
478 NULL);
476 retval = SUCCESS; 479 retval = SUCCESS;
477 } else if (new_fsf_req->status & ZFCP_STATUS_FSFREQ_ABORTNOTNEEDED) { 480 } else if (new_fsf_req->status & ZFCP_STATUS_FSFREQ_ABORTNOTNEEDED) {
478 zfcp_scsi_dbf_event_abort("lte2", adapter, scpnt, new_fsf_req); 481 zfcp_scsi_dbf_event_abort("lte2", adapter, scpnt, new_fsf_req,
482 NULL);
479 retval = SUCCESS; 483 retval = SUCCESS;
480 } else { 484 } else {
481 zfcp_scsi_dbf_event_abort("fail", adapter, scpnt, new_fsf_req); 485 zfcp_scsi_dbf_event_abort("fail", adapter, scpnt, new_fsf_req,
486 NULL);
482 retval = FAILED; 487 retval = FAILED;
483 } 488 }
484 zfcp_fsf_req_free(new_fsf_req); 489 zfcp_fsf_req_free(new_fsf_req);
diff --git a/drivers/s390/scsi/zfcp_sysfs_adapter.c b/drivers/s390/scsi/zfcp_sysfs_adapter.c
index 9f262250043a..b29ac25e07f3 100644
--- a/drivers/s390/scsi/zfcp_sysfs_adapter.c
+++ b/drivers/s390/scsi/zfcp_sysfs_adapter.c
@@ -27,8 +27,6 @@
27 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 27 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
28 */ 28 */
29 29
30#define ZFCP_SYSFS_ADAPTER_C_REVISION "$Revision: 1.38 $"
31
32#include "zfcp_ext.h" 30#include "zfcp_ext.h"
33 31
34#define ZFCP_LOG_AREA ZFCP_LOG_AREA_CONFIG 32#define ZFCP_LOG_AREA ZFCP_LOG_AREA_CONFIG
@@ -57,8 +55,6 @@ ZFCP_DEFINE_ADAPTER_ATTR(status, "0x%08x\n", atomic_read(&adapter->status));
57ZFCP_DEFINE_ADAPTER_ATTR(peer_wwnn, "0x%016llx\n", adapter->peer_wwnn); 55ZFCP_DEFINE_ADAPTER_ATTR(peer_wwnn, "0x%016llx\n", adapter->peer_wwnn);
58ZFCP_DEFINE_ADAPTER_ATTR(peer_wwpn, "0x%016llx\n", adapter->peer_wwpn); 56ZFCP_DEFINE_ADAPTER_ATTR(peer_wwpn, "0x%016llx\n", adapter->peer_wwpn);
59ZFCP_DEFINE_ADAPTER_ATTR(peer_d_id, "0x%06x\n", adapter->peer_d_id); 57ZFCP_DEFINE_ADAPTER_ATTR(peer_d_id, "0x%06x\n", adapter->peer_d_id);
60ZFCP_DEFINE_ADAPTER_ATTR(physical_wwpn, "0x%016llx\n", adapter->physical_wwpn);
61ZFCP_DEFINE_ADAPTER_ATTR(physical_s_id, "0x%06x\n", adapter->physical_s_id);
62ZFCP_DEFINE_ADAPTER_ATTR(card_version, "0x%04x\n", adapter->hydra_version); 58ZFCP_DEFINE_ADAPTER_ATTR(card_version, "0x%04x\n", adapter->hydra_version);
63ZFCP_DEFINE_ADAPTER_ATTR(lic_version, "0x%08x\n", adapter->fsf_lic_version); 59ZFCP_DEFINE_ADAPTER_ATTR(lic_version, "0x%08x\n", adapter->fsf_lic_version);
64ZFCP_DEFINE_ADAPTER_ATTR(hardware_version, "0x%08x\n", 60ZFCP_DEFINE_ADAPTER_ATTR(hardware_version, "0x%08x\n",
@@ -243,8 +239,6 @@ static struct attribute *zfcp_adapter_attrs[] = {
243 &dev_attr_peer_wwnn.attr, 239 &dev_attr_peer_wwnn.attr,
244 &dev_attr_peer_wwpn.attr, 240 &dev_attr_peer_wwpn.attr,
245 &dev_attr_peer_d_id.attr, 241 &dev_attr_peer_d_id.attr,
246 &dev_attr_physical_wwpn.attr,
247 &dev_attr_physical_s_id.attr,
248 &dev_attr_card_version.attr, 242 &dev_attr_card_version.attr,
249 &dev_attr_lic_version.attr, 243 &dev_attr_lic_version.attr,
250 &dev_attr_status.attr, 244 &dev_attr_status.attr,
diff --git a/drivers/s390/scsi/zfcp_sysfs_driver.c b/drivers/s390/scsi/zfcp_sysfs_driver.c
index 77a5e2dcc0ff..6622d55e0a45 100644
--- a/drivers/s390/scsi/zfcp_sysfs_driver.c
+++ b/drivers/s390/scsi/zfcp_sysfs_driver.c
@@ -27,8 +27,6 @@
27 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 27 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
28 */ 28 */
29 29
30#define ZFCP_SYSFS_DRIVER_C_REVISION "$Revision: 1.17 $"
31
32#include "zfcp_ext.h" 30#include "zfcp_ext.h"
33 31
34#define ZFCP_LOG_AREA ZFCP_LOG_AREA_CONFIG 32#define ZFCP_LOG_AREA ZFCP_LOG_AREA_CONFIG
diff --git a/drivers/s390/scsi/zfcp_sysfs_port.c b/drivers/s390/scsi/zfcp_sysfs_port.c
index 3924eb38805c..f401d42db21c 100644
--- a/drivers/s390/scsi/zfcp_sysfs_port.c
+++ b/drivers/s390/scsi/zfcp_sysfs_port.c
@@ -28,8 +28,6 @@
28 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 28 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
29 */ 29 */
30 30
31#define ZFCP_SYSFS_PORT_C_REVISION "$Revision: 1.47 $"
32
33#include "zfcp_ext.h" 31#include "zfcp_ext.h"
34 32
35#define ZFCP_LOG_AREA ZFCP_LOG_AREA_CONFIG 33#define ZFCP_LOG_AREA ZFCP_LOG_AREA_CONFIG
diff --git a/drivers/s390/scsi/zfcp_sysfs_unit.c b/drivers/s390/scsi/zfcp_sysfs_unit.c
index 2f50815f65c7..ad5dfb889bee 100644
--- a/drivers/s390/scsi/zfcp_sysfs_unit.c
+++ b/drivers/s390/scsi/zfcp_sysfs_unit.c
@@ -28,8 +28,6 @@
28 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 28 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
29 */ 29 */
30 30
31#define ZFCP_SYSFS_UNIT_C_REVISION "$Revision: 1.30 $"
32
33#include "zfcp_ext.h" 31#include "zfcp_ext.h"
34 32
35#define ZFCP_LOG_AREA ZFCP_LOG_AREA_CONFIG 33#define ZFCP_LOG_AREA ZFCP_LOG_AREA_CONFIG