diff options
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/block/Kconfig | 11 | ||||
-rw-r--r-- | drivers/s390/block/dasd.c | 8 | ||||
-rw-r--r-- | drivers/s390/block/dasd_diag.c | 10 | ||||
-rw-r--r-- | drivers/s390/block/dasd_eckd.c | 6 | ||||
-rw-r--r-- | drivers/s390/block/dasd_ioctl.c | 4 | ||||
-rw-r--r-- | drivers/s390/char/Kconfig (renamed from drivers/s390/Kconfig) | 111 | ||||
-rw-r--r-- | drivers/s390/char/monreader.c | 14 | ||||
-rw-r--r-- | drivers/s390/char/raw3270.c | 5 | ||||
-rw-r--r-- | drivers/s390/char/sclp.h | 3 | ||||
-rw-r--r-- | drivers/s390/char/sclp_sdias.c | 8 | ||||
-rw-r--r-- | drivers/s390/char/zcore.c | 9 | ||||
-rw-r--r-- | drivers/s390/cio/css.c | 3 | ||||
-rw-r--r-- | drivers/s390/cio/css.h | 2 | ||||
-rw-r--r-- | drivers/s390/cio/device.c | 4 | ||||
-rw-r--r-- | drivers/s390/cio/device_ops.c | 11 | ||||
-rw-r--r-- | drivers/s390/cio/qdio.c | 1 | ||||
-rw-r--r-- | drivers/s390/net/Kconfig | 8 | ||||
-rw-r--r-- | drivers/s390/net/qeth_mpc.c | 4 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_aux.c | 8 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_dbf.c | 2 |
20 files changed, 85 insertions, 147 deletions
diff --git a/drivers/s390/block/Kconfig b/drivers/s390/block/Kconfig index b250c5354503..e879b212cf43 100644 --- a/drivers/s390/block/Kconfig +++ b/drivers/s390/block/Kconfig | |||
@@ -1,11 +1,9 @@ | |||
1 | if S390 && BLOCK | ||
2 | |||
3 | comment "S/390 block device drivers" | 1 | comment "S/390 block device drivers" |
4 | depends on S390 | 2 | depends on S390 && BLOCK |
5 | 3 | ||
6 | config BLK_DEV_XPRAM | 4 | config BLK_DEV_XPRAM |
7 | tristate "XPRAM disk support" | 5 | tristate "XPRAM disk support" |
8 | depends on S390 | 6 | depends on S390 && BLOCK |
9 | help | 7 | help |
10 | Select this option if you want to use your expanded storage on S/390 | 8 | Select this option if you want to use your expanded storage on S/390 |
11 | or zSeries as a disk. This is useful as a _fast_ swap device if you | 9 | or zSeries as a disk. This is useful as a _fast_ swap device if you |
@@ -15,12 +13,13 @@ config BLK_DEV_XPRAM | |||
15 | 13 | ||
16 | config DCSSBLK | 14 | config DCSSBLK |
17 | tristate "DCSSBLK support" | 15 | tristate "DCSSBLK support" |
16 | depends on S390 && BLOCK | ||
18 | help | 17 | help |
19 | Support for dcss block device | 18 | Support for dcss block device |
20 | 19 | ||
21 | config DASD | 20 | config DASD |
22 | tristate "Support for DASD devices" | 21 | tristate "Support for DASD devices" |
23 | depends on CCW | 22 | depends on CCW && BLOCK |
24 | help | 23 | help |
25 | Enable this option if you want to access DASDs directly utilizing | 24 | Enable this option if you want to access DASDs directly utilizing |
26 | S/390s channel subsystem commands. This is necessary for running | 25 | S/390s channel subsystem commands. This is necessary for running |
@@ -62,5 +61,3 @@ config DASD_EER | |||
62 | This driver provides a character device interface to the | 61 | This driver provides a character device interface to the |
63 | DASD extended error reporting. This is only needed if you want to | 62 | DASD extended error reporting. This is only needed if you want to |
64 | use applications written for the EER facility. | 63 | use applications written for the EER facility. |
65 | |||
66 | endif | ||
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index 977521013fe8..bfeca57098fa 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c | |||
@@ -2174,9 +2174,10 @@ dasd_generic_notify(struct ccw_device *cdev, int event) | |||
2174 | return ret; | 2174 | return ret; |
2175 | } | 2175 | } |
2176 | 2176 | ||
2177 | struct dasd_ccw_req * dasd_generic_build_rdc(struct dasd_device *device, | 2177 | static struct dasd_ccw_req *dasd_generic_build_rdc(struct dasd_device *device, |
2178 | void *rdc_buffer, | 2178 | void *rdc_buffer, |
2179 | int rdc_buffer_size, char *magic) | 2179 | int rdc_buffer_size, |
2180 | char *magic) | ||
2180 | { | 2181 | { |
2181 | struct dasd_ccw_req *cqr; | 2182 | struct dasd_ccw_req *cqr; |
2182 | struct ccw1 *ccw; | 2183 | struct ccw1 *ccw; |
@@ -2219,6 +2220,7 @@ int dasd_generic_read_dev_chars(struct dasd_device *device, char *magic, | |||
2219 | dasd_sfree_request(cqr, cqr->device); | 2220 | dasd_sfree_request(cqr, cqr->device); |
2220 | return ret; | 2221 | return ret; |
2221 | } | 2222 | } |
2223 | EXPORT_SYMBOL_GPL(dasd_generic_read_dev_chars); | ||
2222 | 2224 | ||
2223 | static int __init | 2225 | static int __init |
2224 | dasd_init(void) | 2226 | dasd_init(void) |
diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c index e810e4a44ed4..eccac1c3b71b 100644 --- a/drivers/s390/block/dasd_diag.c +++ b/drivers/s390/block/dasd_diag.c | |||
@@ -50,6 +50,7 @@ struct dasd_diag_private { | |||
50 | struct dasd_diag_rw_io iob; | 50 | struct dasd_diag_rw_io iob; |
51 | struct dasd_diag_init_io iib; | 51 | struct dasd_diag_init_io iib; |
52 | blocknum_t pt_block; | 52 | blocknum_t pt_block; |
53 | struct ccw_dev_id dev_id; | ||
53 | }; | 54 | }; |
54 | 55 | ||
55 | struct dasd_diag_req { | 56 | struct dasd_diag_req { |
@@ -102,7 +103,7 @@ mdsk_init_io(struct dasd_device *device, unsigned int blocksize, | |||
102 | iib = &private->iib; | 103 | iib = &private->iib; |
103 | memset(iib, 0, sizeof (struct dasd_diag_init_io)); | 104 | memset(iib, 0, sizeof (struct dasd_diag_init_io)); |
104 | 105 | ||
105 | iib->dev_nr = _ccw_device_get_device_number(device->cdev); | 106 | iib->dev_nr = private->dev_id.devno; |
106 | iib->block_size = blocksize; | 107 | iib->block_size = blocksize; |
107 | iib->offset = offset; | 108 | iib->offset = offset; |
108 | iib->flaga = DASD_DIAG_FLAGA_DEFAULT; | 109 | iib->flaga = DASD_DIAG_FLAGA_DEFAULT; |
@@ -127,7 +128,7 @@ mdsk_term_io(struct dasd_device * device) | |||
127 | private = (struct dasd_diag_private *) device->private; | 128 | private = (struct dasd_diag_private *) device->private; |
128 | iib = &private->iib; | 129 | iib = &private->iib; |
129 | memset(iib, 0, sizeof (struct dasd_diag_init_io)); | 130 | memset(iib, 0, sizeof (struct dasd_diag_init_io)); |
130 | iib->dev_nr = _ccw_device_get_device_number(device->cdev); | 131 | iib->dev_nr = private->dev_id.devno; |
131 | rc = dia250(iib, TERM_BIO); | 132 | rc = dia250(iib, TERM_BIO); |
132 | return rc; | 133 | return rc; |
133 | } | 134 | } |
@@ -166,7 +167,7 @@ dasd_start_diag(struct dasd_ccw_req * cqr) | |||
166 | private = (struct dasd_diag_private *) device->private; | 167 | private = (struct dasd_diag_private *) device->private; |
167 | dreq = (struct dasd_diag_req *) cqr->data; | 168 | dreq = (struct dasd_diag_req *) cqr->data; |
168 | 169 | ||
169 | private->iob.dev_nr = _ccw_device_get_device_number(device->cdev); | 170 | private->iob.dev_nr = private->dev_id.devno; |
170 | private->iob.key = 0; | 171 | private->iob.key = 0; |
171 | private->iob.flags = DASD_DIAG_RWFLAG_ASYNC; | 172 | private->iob.flags = DASD_DIAG_RWFLAG_ASYNC; |
172 | private->iob.block_count = dreq->block_count; | 173 | private->iob.block_count = dreq->block_count; |
@@ -323,11 +324,12 @@ dasd_diag_check_device(struct dasd_device *device) | |||
323 | "memory allocation failed for private data"); | 324 | "memory allocation failed for private data"); |
324 | return -ENOMEM; | 325 | return -ENOMEM; |
325 | } | 326 | } |
327 | ccw_device_get_id(device->cdev, &private->dev_id); | ||
326 | device->private = (void *) private; | 328 | device->private = (void *) private; |
327 | } | 329 | } |
328 | /* Read Device Characteristics */ | 330 | /* Read Device Characteristics */ |
329 | rdc_data = (void *) &(private->rdc_data); | 331 | rdc_data = (void *) &(private->rdc_data); |
330 | rdc_data->dev_nr = _ccw_device_get_device_number(device->cdev); | 332 | rdc_data->dev_nr = private->dev_id.devno; |
331 | rdc_data->rdc_len = sizeof (struct dasd_diag_characteristics); | 333 | rdc_data->rdc_len = sizeof (struct dasd_diag_characteristics); |
332 | 334 | ||
333 | rc = diag210((struct diag210 *) rdc_data); | 335 | rc = diag210((struct diag210 *) rdc_data); |
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index c9583fbc2a7d..418b4e63a4fa 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c | |||
@@ -450,9 +450,9 @@ dasd_eckd_generate_uid(struct dasd_device *device, struct dasd_uid *uid) | |||
450 | return 0; | 450 | return 0; |
451 | } | 451 | } |
452 | 452 | ||
453 | struct dasd_ccw_req * dasd_eckd_build_rcd_lpm(struct dasd_device *device, | 453 | static struct dasd_ccw_req *dasd_eckd_build_rcd_lpm(struct dasd_device *device, |
454 | void *rcd_buffer, | 454 | void *rcd_buffer, |
455 | struct ciw *ciw, __u8 lpm) | 455 | struct ciw *ciw, __u8 lpm) |
456 | { | 456 | { |
457 | struct dasd_ccw_req *cqr; | 457 | struct dasd_ccw_req *cqr; |
458 | struct ccw1 *ccw; | 458 | struct ccw1 *ccw; |
diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c index 758cfb542865..672eb0a3dd0b 100644 --- a/drivers/s390/block/dasd_ioctl.c +++ b/drivers/s390/block/dasd_ioctl.c | |||
@@ -255,6 +255,7 @@ dasd_ioctl_information(struct dasd_device *device, | |||
255 | unsigned long flags; | 255 | unsigned long flags; |
256 | int rc; | 256 | int rc; |
257 | struct ccw_device *cdev; | 257 | struct ccw_device *cdev; |
258 | struct ccw_dev_id dev_id; | ||
258 | 259 | ||
259 | if (!device->discipline->fill_info) | 260 | if (!device->discipline->fill_info) |
260 | return -EINVAL; | 261 | return -EINVAL; |
@@ -270,8 +271,9 @@ dasd_ioctl_information(struct dasd_device *device, | |||
270 | } | 271 | } |
271 | 272 | ||
272 | cdev = device->cdev; | 273 | cdev = device->cdev; |
274 | ccw_device_get_id(cdev, &dev_id); | ||
273 | 275 | ||
274 | dasd_info->devno = _ccw_device_get_device_number(device->cdev); | 276 | dasd_info->devno = dev_id.devno; |
275 | dasd_info->schid = _ccw_device_get_subchannel_number(device->cdev); | 277 | dasd_info->schid = _ccw_device_get_subchannel_number(device->cdev); |
276 | dasd_info->cu_type = cdev->id.cu_type; | 278 | dasd_info->cu_type = cdev->id.cu_type; |
277 | dasd_info->cu_model = cdev->id.cu_model; | 279 | dasd_info->cu_model = cdev->id.cu_model; |
diff --git a/drivers/s390/Kconfig b/drivers/s390/char/Kconfig index 165af398fdea..66102a184322 100644 --- a/drivers/s390/Kconfig +++ b/drivers/s390/char/Kconfig | |||
@@ -1,69 +1,9 @@ | |||
1 | config CCW | ||
2 | bool | ||
3 | default y | ||
4 | |||
5 | source "drivers/block/Kconfig" | ||
6 | |||
7 | source "drivers/md/Kconfig" | ||
8 | |||
9 | |||
10 | menu "Character device drivers" | ||
11 | |||
12 | config UNIX98_PTYS | ||
13 | bool "Unix98 PTY support" | ||
14 | ---help--- | ||
15 | A pseudo terminal (PTY) is a software device consisting of two | ||
16 | halves: a master and a slave. The slave device behaves identical to | ||
17 | a physical terminal; the master device is used by a process to | ||
18 | read data from and write data to the slave, thereby emulating a | ||
19 | terminal. Typical programs for the master side are telnet servers | ||
20 | and xterms. | ||
21 | |||
22 | Linux has traditionally used the BSD-like names /dev/ptyxx for | ||
23 | masters and /dev/ttyxx for slaves of pseudo terminals. This scheme | ||
24 | has a number of problems. The GNU C library glibc 2.1 and later, | ||
25 | however, supports the Unix98 naming standard: in order to acquire a | ||
26 | pseudo terminal, a process opens /dev/ptmx; the number of the pseudo | ||
27 | terminal is then made available to the process and the pseudo | ||
28 | terminal slave can be accessed as /dev/pts/<number>. What was | ||
29 | traditionally /dev/ttyp2 will then be /dev/pts/2, for example. | ||
30 | |||
31 | The entries in /dev/pts/ are created on the fly by a virtual | ||
32 | file system; therefore, if you say Y here you should say Y to | ||
33 | "/dev/pts file system for Unix98 PTYs" as well. | ||
34 | |||
35 | If you want to say Y here, you need to have the C library glibc 2.1 | ||
36 | or later (equal to libc-6.1, check with "ls -l /lib/libc.so.*"). | ||
37 | Read the instructions in <file:Documentation/Changes> pertaining to | ||
38 | pseudo terminals. It's safe to say N. | ||
39 | |||
40 | config UNIX98_PTY_COUNT | ||
41 | int "Maximum number of Unix98 PTYs in use (0-2048)" | ||
42 | depends on UNIX98_PTYS | ||
43 | default "256" | ||
44 | help | ||
45 | The maximum number of Unix98 PTYs that can be used at any one time. | ||
46 | The default is 256, and should be enough for desktop systems. Server | ||
47 | machines which support incoming telnet/rlogin/ssh connections and/or | ||
48 | serve several X terminals may want to increase this: every incoming | ||
49 | connection and every xterm uses up one PTY. | ||
50 | |||
51 | When not in use, each additional set of 256 PTYs occupy | ||
52 | approximately 8 KB of kernel memory on 32-bit architectures. | ||
53 | |||
54 | config 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 | |||
61 | source "drivers/char/watchdog/Kconfig" | ||
62 | |||
63 | comment "S/390 character device drivers" | 1 | comment "S/390 character device drivers" |
2 | depends on S390 | ||
64 | 3 | ||
65 | config TN3270 | 4 | config TN3270 |
66 | tristate "Support for locally attached 3270 terminals" | 5 | tristate "Support for locally attached 3270 terminals" |
6 | depends on CCW | ||
67 | help | 7 | help |
68 | Include support for IBM 3270 terminals. | 8 | Include support for IBM 3270 terminals. |
69 | 9 | ||
@@ -88,6 +28,7 @@ config TN3270_CONSOLE | |||
88 | 28 | ||
89 | config TN3215 | 29 | config TN3215 |
90 | bool "Support for 3215 line mode terminal" | 30 | bool "Support for 3215 line mode terminal" |
31 | depends on CCW | ||
91 | help | 32 | help |
92 | Include support for IBM 3215 line-mode terminals. | 33 | Include support for IBM 3215 line-mode terminals. |
93 | 34 | ||
@@ -99,12 +40,19 @@ config TN3215_CONSOLE | |||
99 | Linux system console. | 40 | Linux system console. |
100 | 41 | ||
101 | config CCW_CONSOLE | 42 | config CCW_CONSOLE |
102 | bool | 43 | bool |
103 | depends on TN3215_CONSOLE || TN3270_CONSOLE | 44 | depends on TN3215_CONSOLE || TN3270_CONSOLE |
104 | default y | 45 | default y |
105 | 46 | ||
47 | config SCLP | ||
48 | bool "Support for SCLP" | ||
49 | depends on S390 | ||
50 | help | ||
51 | Include support for the SCLP interface to the service element. | ||
52 | |||
106 | config SCLP_TTY | 53 | config SCLP_TTY |
107 | bool "Support for SCLP line mode terminal" | 54 | bool "Support for SCLP line mode terminal" |
55 | depends on SCLP | ||
108 | help | 56 | help |
109 | Include support for IBM SCLP line-mode terminals. | 57 | Include support for IBM SCLP line-mode terminals. |
110 | 58 | ||
@@ -117,6 +65,7 @@ config SCLP_CONSOLE | |||
117 | 65 | ||
118 | config SCLP_VT220_TTY | 66 | config SCLP_VT220_TTY |
119 | bool "Support for SCLP VT220-compatible terminal" | 67 | bool "Support for SCLP VT220-compatible terminal" |
68 | depends on SCLP | ||
120 | help | 69 | help |
121 | Include support for an IBM SCLP VT220-compatible terminal. | 70 | Include support for an IBM SCLP VT220-compatible terminal. |
122 | 71 | ||
@@ -129,6 +78,7 @@ config SCLP_VT220_CONSOLE | |||
129 | 78 | ||
130 | config SCLP_CPI | 79 | config SCLP_CPI |
131 | tristate "Control-Program Identification" | 80 | tristate "Control-Program Identification" |
81 | depends on SCLP | ||
132 | help | 82 | help |
133 | This option enables the hardware console interface for system | 83 | This option enables the hardware console interface for system |
134 | identification. This is commonly used for workload management and | 84 | identification. This is commonly used for workload management and |
@@ -140,6 +90,7 @@ config SCLP_CPI | |||
140 | 90 | ||
141 | config S390_TAPE | 91 | config S390_TAPE |
142 | tristate "S/390 tape device support" | 92 | tristate "S/390 tape device support" |
93 | depends on CCW | ||
143 | help | 94 | help |
144 | Select this option if you want to access channel-attached tape | 95 | Select this option if you want to access channel-attached tape |
145 | devices on IBM S/390 or zSeries. | 96 | devices on IBM S/390 or zSeries. |
@@ -194,6 +145,7 @@ config VMLOGRDR | |||
194 | 145 | ||
195 | config VMCP | 146 | config VMCP |
196 | tristate "Support for the z/VM CP interface (VM only)" | 147 | tristate "Support for the z/VM CP interface (VM only)" |
148 | depends on S390 | ||
197 | help | 149 | help |
198 | Select this option if you want to be able to interact with the control | 150 | Select this option if you want to be able to interact with the control |
199 | program on z/VM | 151 | program on z/VM |
@@ -207,33 +159,8 @@ config MONREADER | |||
207 | 159 | ||
208 | config MONWRITER | 160 | config MONWRITER |
209 | tristate "API for writing z/VM monitor service records" | 161 | tristate "API for writing z/VM monitor service records" |
162 | depends on S390 | ||
210 | default "m" | 163 | default "m" |
211 | help | 164 | help |
212 | Character device driver for writing z/VM monitor service records | 165 | Character device driver for writing z/VM monitor service records |
213 | 166 | ||
214 | endmenu | ||
215 | |||
216 | menu "Cryptographic devices" | ||
217 | |||
218 | config ZCRYPT | ||
219 | tristate "Support for PCI-attached cryptographic adapters" | ||
220 | select ZCRYPT_MONOLITHIC if ZCRYPT="y" | ||
221 | default "m" | ||
222 | help | ||
223 | Select this option if you want to use a PCI-attached cryptographic | ||
224 | adapter like: | ||
225 | + PCI Cryptographic Accelerator (PCICA) | ||
226 | + PCI Cryptographic Coprocessor (PCICC) | ||
227 | + PCI-X Cryptographic Coprocessor (PCIXCC) | ||
228 | + Crypto Express2 Coprocessor (CEX2C) | ||
229 | + Crypto Express2 Accelerator (CEX2A) | ||
230 | |||
231 | config ZCRYPT_MONOLITHIC | ||
232 | bool "Monolithic zcrypt module" | ||
233 | depends on ZCRYPT="m" | ||
234 | help | ||
235 | Select this option if you want to have a single module z90crypt.ko | ||
236 | that contains all parts of the crypto device driver (ap bus, | ||
237 | request router and all the card drivers). | ||
238 | |||
239 | endmenu | ||
diff --git a/drivers/s390/char/monreader.c b/drivers/s390/char/monreader.c index 8df7b1323c05..67009bfa093e 100644 --- a/drivers/s390/char/monreader.c +++ b/drivers/s390/char/monreader.c | |||
@@ -97,7 +97,7 @@ static u8 user_data_sever[16] = { | |||
97 | * Create the 8 bytes EBCDIC DCSS segment name from | 97 | * Create the 8 bytes EBCDIC DCSS segment name from |
98 | * an ASCII name, incl. padding | 98 | * an ASCII name, incl. padding |
99 | */ | 99 | */ |
100 | static inline void dcss_mkname(char *ascii_name, char *ebcdic_name) | 100 | static void dcss_mkname(char *ascii_name, char *ebcdic_name) |
101 | { | 101 | { |
102 | int i; | 102 | int i; |
103 | 103 | ||
@@ -191,7 +191,7 @@ static inline u32 mon_rec_end(struct mon_msg *monmsg) | |||
191 | return *((u32 *) (mon_mca_start(monmsg) + monmsg->mca_offset + 8)); | 191 | return *((u32 *) (mon_mca_start(monmsg) + monmsg->mca_offset + 8)); |
192 | } | 192 | } |
193 | 193 | ||
194 | static inline int mon_check_mca(struct mon_msg *monmsg) | 194 | static int mon_check_mca(struct mon_msg *monmsg) |
195 | { | 195 | { |
196 | if ((mon_rec_end(monmsg) <= mon_rec_start(monmsg)) || | 196 | if ((mon_rec_end(monmsg) <= mon_rec_start(monmsg)) || |
197 | (mon_rec_start(monmsg) < mon_dcss_start) || | 197 | (mon_rec_start(monmsg) < mon_dcss_start) || |
@@ -209,8 +209,8 @@ static inline int mon_check_mca(struct mon_msg *monmsg) | |||
209 | return 0; | 209 | return 0; |
210 | } | 210 | } |
211 | 211 | ||
212 | static inline int mon_send_reply(struct mon_msg *monmsg, | 212 | static int mon_send_reply(struct mon_msg *monmsg, |
213 | struct mon_private *monpriv) | 213 | struct mon_private *monpriv) |
214 | { | 214 | { |
215 | int rc; | 215 | int rc; |
216 | 216 | ||
@@ -236,7 +236,7 @@ static inline int mon_send_reply(struct mon_msg *monmsg, | |||
236 | return 0; | 236 | return 0; |
237 | } | 237 | } |
238 | 238 | ||
239 | static inline void mon_free_mem(struct mon_private *monpriv) | 239 | static void mon_free_mem(struct mon_private *monpriv) |
240 | { | 240 | { |
241 | int i; | 241 | int i; |
242 | 242 | ||
@@ -246,7 +246,7 @@ static inline void mon_free_mem(struct mon_private *monpriv) | |||
246 | kfree(monpriv); | 246 | kfree(monpriv); |
247 | } | 247 | } |
248 | 248 | ||
249 | static inline struct mon_private *mon_alloc_mem(void) | 249 | static struct mon_private *mon_alloc_mem(void) |
250 | { | 250 | { |
251 | int i; | 251 | int i; |
252 | struct mon_private *monpriv; | 252 | struct mon_private *monpriv; |
@@ -307,7 +307,7 @@ static inline void mon_next_mca(struct mon_msg *monmsg) | |||
307 | monmsg->pos = 0; | 307 | monmsg->pos = 0; |
308 | } | 308 | } |
309 | 309 | ||
310 | static inline struct mon_msg *mon_next_message(struct mon_private *monpriv) | 310 | static struct mon_msg *mon_next_message(struct mon_private *monpriv) |
311 | { | 311 | { |
312 | struct mon_msg *monmsg; | 312 | struct mon_msg *monmsg; |
313 | 313 | ||
diff --git a/drivers/s390/char/raw3270.c b/drivers/s390/char/raw3270.c index 8facd14adb7c..f6ef90ee3e7d 100644 --- a/drivers/s390/char/raw3270.c +++ b/drivers/s390/char/raw3270.c | |||
@@ -589,9 +589,10 @@ static int | |||
589 | __raw3270_size_device_vm(struct raw3270 *rp) | 589 | __raw3270_size_device_vm(struct raw3270 *rp) |
590 | { | 590 | { |
591 | int rc, model; | 591 | int rc, model; |
592 | struct ccw_dev_id dev_id; | ||
592 | 593 | ||
593 | raw3270_init_diag210.vrdcdvno = | 594 | ccw_device_get_id(rp->cdev, &dev_id); |
594 | _ccw_device_get_device_number(rp->cdev); | 595 | raw3270_init_diag210.vrdcdvno = dev_id.devno; |
595 | raw3270_init_diag210.vrdclen = sizeof(struct diag210); | 596 | raw3270_init_diag210.vrdclen = sizeof(struct diag210); |
596 | rc = diag210(&raw3270_init_diag210); | 597 | rc = diag210(&raw3270_init_diag210); |
597 | if (rc) | 598 | if (rc) |
diff --git a/drivers/s390/char/sclp.h b/drivers/s390/char/sclp.h index 87ac4a3ad49d..dbb99d1b6f57 100644 --- a/drivers/s390/char/sclp.h +++ b/drivers/s390/char/sclp.h | |||
@@ -132,6 +132,9 @@ int sclp_deactivate(void); | |||
132 | int sclp_reactivate(void); | 132 | int sclp_reactivate(void); |
133 | int sclp_service_call(sclp_cmdw_t command, void *sccb); | 133 | int sclp_service_call(sclp_cmdw_t command, void *sccb); |
134 | 134 | ||
135 | int sclp_sdias_init(void); | ||
136 | void sclp_sdias_exit(void); | ||
137 | |||
135 | /* useful inlines */ | 138 | /* useful inlines */ |
136 | 139 | ||
137 | /* VM uses EBCDIC 037, LPAR+native(SE+HMC) use EBCDIC 500 */ | 140 | /* VM uses EBCDIC 037, LPAR+native(SE+HMC) use EBCDIC 500 */ |
diff --git a/drivers/s390/char/sclp_sdias.c b/drivers/s390/char/sclp_sdias.c index 52283daddaef..1c064976b32b 100644 --- a/drivers/s390/char/sclp_sdias.c +++ b/drivers/s390/char/sclp_sdias.c | |||
@@ -66,9 +66,9 @@ static DEFINE_MUTEX(sdias_mutex); | |||
66 | 66 | ||
67 | static void sdias_callback(struct sclp_req *request, void *data) | 67 | static void sdias_callback(struct sclp_req *request, void *data) |
68 | { | 68 | { |
69 | struct sdias_sccb *sccb; | 69 | struct sdias_sccb *cbsccb; |
70 | 70 | ||
71 | sccb = (struct sdias_sccb *) request->sccb; | 71 | cbsccb = (struct sdias_sccb *) request->sccb; |
72 | sclp_req_done = 1; | 72 | sclp_req_done = 1; |
73 | wake_up(&sdias_wq); /* Inform caller, that request is complete */ | 73 | wake_up(&sdias_wq); /* Inform caller, that request is complete */ |
74 | TRACE("callback done\n"); | 74 | TRACE("callback done\n"); |
@@ -229,7 +229,7 @@ out: | |||
229 | return rc; | 229 | return rc; |
230 | } | 230 | } |
231 | 231 | ||
232 | int __init sdias_init(void) | 232 | int __init sclp_sdias_init(void) |
233 | { | 233 | { |
234 | int rc; | 234 | int rc; |
235 | 235 | ||
@@ -248,7 +248,7 @@ int __init sdias_init(void) | |||
248 | return 0; | 248 | return 0; |
249 | } | 249 | } |
250 | 250 | ||
251 | void __exit sdias_exit(void) | 251 | void __exit sclp_sdias_exit(void) |
252 | { | 252 | { |
253 | debug_unregister(sdias_dbf); | 253 | debug_unregister(sdias_dbf); |
254 | sclp_unregister(&sclp_sdias_register); | 254 | sclp_unregister(&sclp_sdias_register); |
diff --git a/drivers/s390/char/zcore.c b/drivers/s390/char/zcore.c index 89d439316a53..66eb0688d523 100644 --- a/drivers/s390/char/zcore.c +++ b/drivers/s390/char/zcore.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <asm/debug.h> | 21 | #include <asm/debug.h> |
22 | #include <asm/processor.h> | 22 | #include <asm/processor.h> |
23 | #include <asm/irqflags.h> | 23 | #include <asm/irqflags.h> |
24 | #include "sclp.h" | ||
24 | 25 | ||
25 | #define TRACE(x...) debug_sprintf_event(zcore_dbf, 1, x) | 26 | #define TRACE(x...) debug_sprintf_event(zcore_dbf, 1, x) |
26 | #define MSG(x...) printk( KERN_ALERT x ) | 27 | #define MSG(x...) printk( KERN_ALERT x ) |
@@ -564,8 +565,6 @@ static void __init zcore_header_init(int arch, struct zcore_header *hdr) | |||
564 | get_cpu_id(&hdr->cpu_id); | 565 | get_cpu_id(&hdr->cpu_id); |
565 | } | 566 | } |
566 | 567 | ||
567 | extern int sdias_init(void); | ||
568 | |||
569 | static int __init zcore_init(void) | 568 | static int __init zcore_init(void) |
570 | { | 569 | { |
571 | unsigned char arch; | 570 | unsigned char arch; |
@@ -582,7 +581,7 @@ static int __init zcore_init(void) | |||
582 | TRACE("wwpn: %llx\n", (unsigned long long) ipl_info.data.fcp.wwpn); | 581 | TRACE("wwpn: %llx\n", (unsigned long long) ipl_info.data.fcp.wwpn); |
583 | TRACE("lun: %llx\n", (unsigned long long) ipl_info.data.fcp.lun); | 582 | TRACE("lun: %llx\n", (unsigned long long) ipl_info.data.fcp.lun); |
584 | 583 | ||
585 | rc = sdias_init(); | 584 | rc = sclp_sdias_init(); |
586 | if (rc) | 585 | if (rc) |
587 | goto fail; | 586 | goto fail; |
588 | 587 | ||
@@ -634,12 +633,10 @@ fail: | |||
634 | return rc; | 633 | return rc; |
635 | } | 634 | } |
636 | 635 | ||
637 | extern void sdias_exit(void); | ||
638 | |||
639 | static void __exit zcore_exit(void) | 636 | static void __exit zcore_exit(void) |
640 | { | 637 | { |
641 | debug_unregister(zcore_dbf); | 638 | debug_unregister(zcore_dbf); |
642 | sdias_exit(); | 639 | sclp_sdias_exit(); |
643 | diag308(DIAG308_REL_HSA, NULL); | 640 | diag308(DIAG308_REL_HSA, NULL); |
644 | } | 641 | } |
645 | 642 | ||
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c index 27c6d9e55b23..dfca0ef139fd 100644 --- a/drivers/s390/cio/css.c +++ b/drivers/s390/cio/css.c | |||
@@ -191,8 +191,7 @@ static int css_register_subchannel(struct subchannel *sch) | |||
191 | return ret; | 191 | return ret; |
192 | } | 192 | } |
193 | 193 | ||
194 | int | 194 | static int css_probe_device(struct subchannel_id schid) |
195 | css_probe_device(struct subchannel_id schid) | ||
196 | { | 195 | { |
197 | int ret; | 196 | int ret; |
198 | struct subchannel *sch; | 197 | struct subchannel *sch; |
diff --git a/drivers/s390/cio/css.h b/drivers/s390/cio/css.h index 71fcfdc42800..ed7977531c3f 100644 --- a/drivers/s390/cio/css.h +++ b/drivers/s390/cio/css.h | |||
@@ -138,9 +138,7 @@ struct css_driver { | |||
138 | * all css_drivers have the css_bus_type | 138 | * all css_drivers have the css_bus_type |
139 | */ | 139 | */ |
140 | extern struct bus_type css_bus_type; | 140 | extern struct bus_type css_bus_type; |
141 | extern struct css_driver io_subchannel_driver; | ||
142 | 141 | ||
143 | extern int css_probe_device(struct subchannel_id); | ||
144 | extern int css_sch_device_register(struct subchannel *); | 142 | extern int css_sch_device_register(struct subchannel *); |
145 | extern void css_sch_device_unregister(struct subchannel *); | 143 | extern void css_sch_device_unregister(struct subchannel *); |
146 | extern struct subchannel * get_subchannel_by_schid(struct subchannel_id); | 144 | extern struct subchannel * get_subchannel_by_schid(struct subchannel_id); |
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index a23ff582db9d..a8b373f69cf0 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c | |||
@@ -129,7 +129,7 @@ static void io_subchannel_verify(struct device *); | |||
129 | static void io_subchannel_ioterm(struct device *); | 129 | static void io_subchannel_ioterm(struct device *); |
130 | static void io_subchannel_shutdown(struct subchannel *); | 130 | static void io_subchannel_shutdown(struct subchannel *); |
131 | 131 | ||
132 | struct css_driver io_subchannel_driver = { | 132 | static struct css_driver io_subchannel_driver = { |
133 | .subchannel_type = SUBCHANNEL_TYPE_IO, | 133 | .subchannel_type = SUBCHANNEL_TYPE_IO, |
134 | .drv = { | 134 | .drv = { |
135 | .name = "io_subchannel", | 135 | .name = "io_subchannel", |
@@ -546,7 +546,7 @@ static struct attribute_group ccwdev_attr_group = { | |||
546 | .attrs = ccwdev_attrs, | 546 | .attrs = ccwdev_attrs, |
547 | }; | 547 | }; |
548 | 548 | ||
549 | struct attribute_group *ccwdev_attr_groups[] = { | 549 | static struct attribute_group *ccwdev_attr_groups[] = { |
550 | &ccwdev_attr_group, | 550 | &ccwdev_attr_group, |
551 | NULL, | 551 | NULL, |
552 | }; | 552 | }; |
diff --git a/drivers/s390/cio/device_ops.c b/drivers/s390/cio/device_ops.c index 16f59fcb66b1..a5d263fb55ae 100644 --- a/drivers/s390/cio/device_ops.c +++ b/drivers/s390/cio/device_ops.c | |||
@@ -616,6 +616,17 @@ ccw_device_get_chp_desc(struct ccw_device *cdev, int chp_no) | |||
616 | return chp_get_chp_desc(chpid); | 616 | return chp_get_chp_desc(chpid); |
617 | } | 617 | } |
618 | 618 | ||
619 | /** | ||
620 | * ccw_device_get_id - obtain a ccw device id | ||
621 | * @cdev: device to obtain the id for | ||
622 | * @dev_id: where to fill in the values | ||
623 | */ | ||
624 | void ccw_device_get_id(struct ccw_device *cdev, struct ccw_dev_id *dev_id) | ||
625 | { | ||
626 | *dev_id = cdev->private->dev_id; | ||
627 | } | ||
628 | EXPORT_SYMBOL(ccw_device_get_id); | ||
629 | |||
619 | // FIXME: these have to go: | 630 | // FIXME: these have to go: |
620 | 631 | ||
621 | int | 632 | int |
diff --git a/drivers/s390/cio/qdio.c b/drivers/s390/cio/qdio.c index f770018fe1d5..e70aeb7a3781 100644 --- a/drivers/s390/cio/qdio.c +++ b/drivers/s390/cio/qdio.c | |||
@@ -1983,6 +1983,7 @@ qdio_handle_pci(struct qdio_irq *irq_ptr) | |||
1983 | if (q->is_input_q&QDIO_FLAG_NO_INPUT_INTERRUPT_CONTEXT) | 1983 | if (q->is_input_q&QDIO_FLAG_NO_INPUT_INTERRUPT_CONTEXT) |
1984 | qdio_mark_q(q); | 1984 | qdio_mark_q(q); |
1985 | else { | 1985 | else { |
1986 | qdio_perf_stat_dec(&perf_stats.tl_runs); | ||
1986 | __qdio_inbound_processing(q); | 1987 | __qdio_inbound_processing(q); |
1987 | } | 1988 | } |
1988 | } | 1989 | } |
diff --git a/drivers/s390/net/Kconfig b/drivers/s390/net/Kconfig index f98fa465df0a..eada69dec4fe 100644 --- a/drivers/s390/net/Kconfig +++ b/drivers/s390/net/Kconfig | |||
@@ -3,7 +3,7 @@ menu "S/390 network device drivers" | |||
3 | 3 | ||
4 | config LCS | 4 | config LCS |
5 | tristate "Lan Channel Station Interface" | 5 | tristate "Lan Channel Station Interface" |
6 | depends on NETDEVICES && (NET_ETHERNET || TR || FDDI) | 6 | depends on CCW && NETDEVICES && (NET_ETHERNET || TR || FDDI) |
7 | help | 7 | help |
8 | Select this option if you want to use LCS networking on IBM S/390 | 8 | Select this option if you want to use LCS networking on IBM S/390 |
9 | or zSeries. This device driver supports Token Ring (IEEE 802.5), | 9 | or zSeries. This device driver supports Token Ring (IEEE 802.5), |
@@ -13,7 +13,7 @@ config LCS | |||
13 | 13 | ||
14 | config CTC | 14 | config CTC |
15 | tristate "CTC device support" | 15 | tristate "CTC device support" |
16 | depends on NETDEVICES | 16 | depends on CCW && NETDEVICES |
17 | help | 17 | help |
18 | Select this option if you want to use channel-to-channel networking | 18 | Select this option if you want to use channel-to-channel networking |
19 | on IBM S/390 or zSeries. This device driver supports real CTC | 19 | on IBM S/390 or zSeries. This device driver supports real CTC |
@@ -42,7 +42,7 @@ config SMSGIUCV | |||
42 | 42 | ||
43 | config CLAW | 43 | config CLAW |
44 | tristate "CLAW device support" | 44 | tristate "CLAW device support" |
45 | depends on NETDEVICES | 45 | depends on CCW && NETDEVICES |
46 | help | 46 | help |
47 | This driver supports channel attached CLAW devices. | 47 | This driver supports channel attached CLAW devices. |
48 | CLAW is Common Link Access for Workstation. Common devices | 48 | CLAW is Common Link Access for Workstation. Common devices |
@@ -52,7 +52,7 @@ config CLAW | |||
52 | 52 | ||
53 | config QETH | 53 | config QETH |
54 | tristate "Gigabit Ethernet device support" | 54 | tristate "Gigabit Ethernet device support" |
55 | depends on NETDEVICES && IP_MULTICAST && QDIO | 55 | depends on CCW && NETDEVICES && IP_MULTICAST && QDIO |
56 | help | 56 | help |
57 | This driver supports the IBM S/390 and zSeries OSA Express adapters | 57 | This driver supports the IBM S/390 and zSeries OSA Express adapters |
58 | in QDIO mode (all media types), HiperSockets interfaces and VM GuestLAN | 58 | in QDIO mode (all media types), HiperSockets interfaces and VM GuestLAN |
diff --git a/drivers/s390/net/qeth_mpc.c b/drivers/s390/net/qeth_mpc.c index f54fdfdbf06f..f29a4bc4f6f2 100644 --- a/drivers/s390/net/qeth_mpc.c +++ b/drivers/s390/net/qeth_mpc.c | |||
@@ -162,7 +162,7 @@ struct ipa_rc_msg { | |||
162 | char *msg; | 162 | char *msg; |
163 | }; | 163 | }; |
164 | 164 | ||
165 | struct ipa_rc_msg qeth_ipa_rc_msg[] = { | 165 | static struct ipa_rc_msg qeth_ipa_rc_msg[] = { |
166 | {IPA_RC_SUCCESS, "success"}, | 166 | {IPA_RC_SUCCESS, "success"}, |
167 | {IPA_RC_NOTSUPP, "Command not supported"}, | 167 | {IPA_RC_NOTSUPP, "Command not supported"}, |
168 | {IPA_RC_IP_TABLE_FULL, "Add Addr IP Table Full - ipv6"}, | 168 | {IPA_RC_IP_TABLE_FULL, "Add Addr IP Table Full - ipv6"}, |
@@ -226,7 +226,7 @@ struct ipa_cmd_names { | |||
226 | char *name; | 226 | char *name; |
227 | }; | 227 | }; |
228 | 228 | ||
229 | struct ipa_cmd_names qeth_ipa_cmd_names[] = { | 229 | static struct ipa_cmd_names qeth_ipa_cmd_names[] = { |
230 | {IPA_CMD_STARTLAN, "startlan"}, | 230 | {IPA_CMD_STARTLAN, "startlan"}, |
231 | {IPA_CMD_STOPLAN, "stoplan"}, | 231 | {IPA_CMD_STOPLAN, "stoplan"}, |
232 | {IPA_CMD_SETVMAC, "setvmac"}, | 232 | {IPA_CMD_SETVMAC, "setvmac"}, |
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c index 324899c96efe..ddff40c4212c 100644 --- a/drivers/s390/scsi/zfcp_aux.c +++ b/drivers/s390/scsi/zfcp_aux.c | |||
@@ -607,8 +607,7 @@ zfcp_sg_list_free(struct zfcp_sg_list *sg_list) | |||
607 | * @sg_count: elements in array | 607 | * @sg_count: elements in array |
608 | * Return: size of entire scatter-gather list | 608 | * Return: size of entire scatter-gather list |
609 | */ | 609 | */ |
610 | size_t | 610 | static size_t zfcp_sg_size(struct scatterlist *sg, unsigned int sg_count) |
611 | zfcp_sg_size(struct scatterlist *sg, unsigned int sg_count) | ||
612 | { | 611 | { |
613 | unsigned int i; | 612 | unsigned int i; |
614 | struct scatterlist *p; | 613 | struct scatterlist *p; |
@@ -975,8 +974,7 @@ zfcp_free_low_mem_buffers(struct zfcp_adapter *adapter) | |||
975 | mempool_destroy(adapter->pool.data_gid_pn); | 974 | mempool_destroy(adapter->pool.data_gid_pn); |
976 | } | 975 | } |
977 | 976 | ||
978 | void | 977 | static void zfcp_dummy_release(struct device *dev) |
979 | zfcp_dummy_release(struct device *dev) | ||
980 | { | 978 | { |
981 | return; | 979 | return; |
982 | } | 980 | } |
@@ -1336,7 +1334,7 @@ zfcp_nameserver_enqueue(struct zfcp_adapter *adapter) | |||
1336 | 1334 | ||
1337 | #define ZFCP_LOG_AREA ZFCP_LOG_AREA_FC | 1335 | #define ZFCP_LOG_AREA ZFCP_LOG_AREA_FC |
1338 | 1336 | ||
1339 | void | 1337 | static void |
1340 | zfcp_fsf_incoming_els_rscn(struct zfcp_adapter *adapter, | 1338 | zfcp_fsf_incoming_els_rscn(struct zfcp_adapter *adapter, |
1341 | struct fsf_status_read_buffer *status_buffer) | 1339 | struct fsf_status_read_buffer *status_buffer) |
1342 | { | 1340 | { |
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c index d8191d115c14..5f3212440f68 100644 --- a/drivers/s390/scsi/zfcp_dbf.c +++ b/drivers/s390/scsi/zfcp_dbf.c | |||
@@ -478,7 +478,7 @@ static struct debug_view zfcp_hba_dbf_view = { | |||
478 | NULL | 478 | NULL |
479 | }; | 479 | }; |
480 | 480 | ||
481 | void | 481 | static void |
482 | _zfcp_san_dbf_event_common_ct(const char *tag, struct zfcp_fsf_req *fsf_req, | 482 | _zfcp_san_dbf_event_common_ct(const char *tag, struct zfcp_fsf_req *fsf_req, |
483 | u32 s_id, u32 d_id, void *buffer, int buflen) | 483 | u32 s_id, u32 d_id, void *buffer, int buflen) |
484 | { | 484 | { |