aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/char
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-01-07 17:50:50 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2011-01-07 17:50:50 -0500
commitfb5131e1880ea1ba3ba7197cd5cc66c9c288f715 (patch)
treef0d9f25f9079727b9ead5a2b4cc85a0fea9b4668 /drivers/s390/char
parentd074b104cefcb6e8ded55a53e62fed59a246f55d (diff)
parent8e1023016cf17152972b98bce6c144834a4916d5 (diff)
Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6: (65 commits) [S390] prevent unneccesary loops_per_jiffy recalculation [S390] cpuinfo: use get_online_cpus() instead of preempt_disable() [S390] smp: remove cpu hotplug messages [S390] mutex: enable spinning mutex on s390 [S390] mutex: Introduce arch_mutex_cpu_relax() [S390] cio: fix ccwgroup unregistration race condition [S390] perf: add DWARF register lookup for s390 [S390] cleanup ftrace backend functions [S390] ptrace cleanup [S390] smp/idle: call init_idle() before starting a new cpu [S390] smp: delay idle task creation [S390] dasd: Correct retry counter for terminated I/O. [S390] dasd: Add support for raw ECKD access. [S390] dasd: Prevent deadlock during suspend/resume. [S390] dasd: Improve handling of stolen DASD reservation [S390] dasd: do path verification for paths added at runtime [S390] dasd: add High Performance FICON multitrack support [S390] cio: reduce memory consumption of itcw structures [S390] nmi: enable machine checks early [S390] qeth: buffer count imbalance ...
Diffstat (limited to 'drivers/s390/char')
-rw-r--r--drivers/s390/char/Kconfig69
-rw-r--r--drivers/s390/char/con3215.c2
-rw-r--r--drivers/s390/char/raw3270.c2
-rw-r--r--drivers/s390/char/sclp.c18
-rw-r--r--drivers/s390/char/sclp_config.c1
-rw-r--r--drivers/s390/char/tape_core.c2
-rw-r--r--drivers/s390/char/vmur.c2
7 files changed, 60 insertions, 36 deletions
diff --git a/drivers/s390/char/Kconfig b/drivers/s390/char/Kconfig
index 40834f18754c..dcee3c5c8954 100644
--- a/drivers/s390/char/Kconfig
+++ b/drivers/s390/char/Kconfig
@@ -2,76 +2,85 @@ comment "S/390 character device drivers"
2 depends on S390 2 depends on S390
3 3
4config TN3270 4config TN3270
5 tristate "Support for locally attached 3270 terminals" 5 def_tristate y
6 prompt "Support for locally attached 3270 terminals"
6 depends on CCW 7 depends on CCW
7 help 8 help
8 Include support for IBM 3270 terminals. 9 Include support for IBM 3270 terminals.
9 10
10config TN3270_TTY 11config TN3270_TTY
11 tristate "Support for tty input/output on 3270 terminals" 12 def_tristate y
13 prompt "Support for tty input/output on 3270 terminals"
12 depends on TN3270 14 depends on TN3270
13 help 15 help
14 Include support for using an IBM 3270 terminal as a Linux tty. 16 Include support for using an IBM 3270 terminal as a Linux tty.
15 17
16config TN3270_FS 18config TN3270_FS
17 tristate "Support for fullscreen applications on 3270 terminals" 19 def_tristate m
20 prompt "Support for fullscreen applications on 3270 terminals"
18 depends on TN3270 21 depends on TN3270
19 help 22 help
20 Include support for fullscreen applications on an IBM 3270 terminal. 23 Include support for fullscreen applications on an IBM 3270 terminal.
21 24
22config TN3270_CONSOLE 25config TN3270_CONSOLE
23 bool "Support for console on 3270 terminal" 26 def_bool y
27 prompt "Support for console on 3270 terminal"
24 depends on TN3270=y && TN3270_TTY=y 28 depends on TN3270=y && TN3270_TTY=y
25 help 29 help
26 Include support for using an IBM 3270 terminal as a Linux system 30 Include support for using an IBM 3270 terminal as a Linux system
27 console. Available only if 3270 support is compiled in statically. 31 console. Available only if 3270 support is compiled in statically.
28 32
29config TN3215 33config TN3215
30 bool "Support for 3215 line mode terminal" 34 def_bool y
35 prompt "Support for 3215 line mode terminal"
31 depends on CCW 36 depends on CCW
32 help 37 help
33 Include support for IBM 3215 line-mode terminals. 38 Include support for IBM 3215 line-mode terminals.
34 39
35config TN3215_CONSOLE 40config TN3215_CONSOLE
36 bool "Support for console on 3215 line mode terminal" 41 def_bool y
42 prompt "Support for console on 3215 line mode terminal"
37 depends on TN3215 43 depends on TN3215
38 help 44 help
39 Include support for using an IBM 3215 line-mode terminal as a 45 Include support for using an IBM 3215 line-mode terminal as a
40 Linux system console. 46 Linux system console.
41 47
42config CCW_CONSOLE 48config CCW_CONSOLE
43 bool 49 def_bool y if TN3215_CONSOLE || TN3270_CONSOLE
44 depends on TN3215_CONSOLE || TN3270_CONSOLE
45 default y
46 50
47config SCLP_TTY 51config SCLP_TTY
48 bool "Support for SCLP line mode terminal" 52 def_bool y
53 prompt "Support for SCLP line mode terminal"
49 depends on S390 54 depends on S390
50 help 55 help
51 Include support for IBM SCLP line-mode terminals. 56 Include support for IBM SCLP line-mode terminals.
52 57
53config SCLP_CONSOLE 58config SCLP_CONSOLE
54 bool "Support for console on SCLP line mode terminal" 59 def_bool y
60 prompt "Support for console on SCLP line mode terminal"
55 depends on SCLP_TTY 61 depends on SCLP_TTY
56 help 62 help
57 Include support for using an IBM HWC line-mode terminal as the Linux 63 Include support for using an IBM HWC line-mode terminal as the Linux
58 system console. 64 system console.
59 65
60config SCLP_VT220_TTY 66config SCLP_VT220_TTY
61 bool "Support for SCLP VT220-compatible terminal" 67 def_bool y
68 prompt "Support for SCLP VT220-compatible terminal"
62 depends on S390 69 depends on S390
63 help 70 help
64 Include support for an IBM SCLP VT220-compatible terminal. 71 Include support for an IBM SCLP VT220-compatible terminal.
65 72
66config SCLP_VT220_CONSOLE 73config SCLP_VT220_CONSOLE
67 bool "Support for console on SCLP VT220-compatible terminal" 74 def_bool y
75 prompt "Support for console on SCLP VT220-compatible terminal"
68 depends on SCLP_VT220_TTY 76 depends on SCLP_VT220_TTY
69 help 77 help
70 Include support for using an IBM SCLP VT220-compatible terminal as a 78 Include support for using an IBM SCLP VT220-compatible terminal as a
71 Linux system console. 79 Linux system console.
72 80
73config SCLP_CPI 81config SCLP_CPI
74 tristate "Control-Program Identification" 82 def_tristate m
83 prompt "Control-Program Identification"
75 depends on S390 84 depends on S390
76 help 85 help
77 This option enables the hardware console interface for system 86 This option enables the hardware console interface for system
@@ -83,7 +92,8 @@ config SCLP_CPI
83 need this feature and intend to run your kernel in LPAR. 92 need this feature and intend to run your kernel in LPAR.
84 93
85config SCLP_ASYNC 94config SCLP_ASYNC
86 tristate "Support for Call Home via Asynchronous SCLP Records" 95 def_tristate m
96 prompt "Support for Call Home via Asynchronous SCLP Records"
87 depends on S390 97 depends on S390
88 help 98 help
89 This option enables the call home function, which is able to inform 99 This option enables the call home function, which is able to inform
@@ -93,7 +103,8 @@ config SCLP_ASYNC
93 need this feature and intend to run your kernel in LPAR. 103 need this feature and intend to run your kernel in LPAR.
94 104
95config S390_TAPE 105config S390_TAPE
96 tristate "S/390 tape device support" 106 def_tristate m
107 prompt "S/390 tape device support"
97 depends on CCW 108 depends on CCW
98 help 109 help
99 Select this option if you want to access channel-attached tape 110 Select this option if you want to access channel-attached tape
@@ -109,7 +120,8 @@ comment "S/390 tape interface support"
109 depends on S390_TAPE 120 depends on S390_TAPE
110 121
111config S390_TAPE_BLOCK 122config S390_TAPE_BLOCK
112 bool "Support for tape block devices" 123 def_bool y
124 prompt "Support for tape block devices"
113 depends on S390_TAPE && BLOCK 125 depends on S390_TAPE && BLOCK
114 help 126 help
115 Select this option if you want to access your channel-attached tape 127 Select this option if you want to access your channel-attached tape
@@ -123,7 +135,8 @@ comment "S/390 tape hardware support"
123 depends on S390_TAPE 135 depends on S390_TAPE
124 136
125config S390_TAPE_34XX 137config S390_TAPE_34XX
126 tristate "Support for 3480/3490 tape hardware" 138 def_tristate m
139 prompt "Support for 3480/3490 tape hardware"
127 depends on S390_TAPE 140 depends on S390_TAPE
128 help 141 help
129 Select this option if you want to access IBM 3480/3490 magnetic 142 Select this option if you want to access IBM 3480/3490 magnetic
@@ -131,7 +144,8 @@ config S390_TAPE_34XX
131 It is safe to say "Y" here. 144 It is safe to say "Y" here.
132 145
133config S390_TAPE_3590 146config S390_TAPE_3590
134 tristate "Support for 3590 tape hardware" 147 def_tristate m
148 prompt "Support for 3590 tape hardware"
135 depends on S390_TAPE 149 depends on S390_TAPE
136 help 150 help
137 Select this option if you want to access IBM 3590 magnetic 151 Select this option if you want to access IBM 3590 magnetic
@@ -139,7 +153,8 @@ config S390_TAPE_3590
139 It is safe to say "Y" here. 153 It is safe to say "Y" here.
140 154
141config VMLOGRDR 155config VMLOGRDR
142 tristate "Support for the z/VM recording system services (VM only)" 156 def_tristate m
157 prompt "Support for the z/VM recording system services (VM only)"
143 depends on IUCV 158 depends on IUCV
144 help 159 help
145 Select this option if you want to be able to receive records collected 160 Select this option if you want to be able to receive records collected
@@ -148,29 +163,31 @@ config VMLOGRDR
148 This driver depends on the IUCV support driver. 163 This driver depends on the IUCV support driver.
149 164
150config VMCP 165config VMCP
151 bool "Support for the z/VM CP interface" 166 def_bool y
167 prompt "Support for the z/VM CP interface"
152 depends on S390 168 depends on S390
153 help 169 help
154 Select this option if you want to be able to interact with the control 170 Select this option if you want to be able to interact with the control
155 program on z/VM 171 program on z/VM
156 172
157config MONREADER 173config MONREADER
158 tristate "API for reading z/VM monitor service records" 174 def_tristate m
175 prompt "API for reading z/VM monitor service records"
159 depends on IUCV 176 depends on IUCV
160 help 177 help
161 Character device driver for reading z/VM monitor service records 178 Character device driver for reading z/VM monitor service records
162 179
163config MONWRITER 180config MONWRITER
164 tristate "API for writing z/VM monitor service records" 181 def_tristate m
182 prompt "API for writing z/VM monitor service records"
165 depends on S390 183 depends on S390
166 default "m"
167 help 184 help
168 Character device driver for writing z/VM monitor service records 185 Character device driver for writing z/VM monitor service records
169 186
170config S390_VMUR 187config S390_VMUR
171 tristate "z/VM unit record device driver" 188 def_tristate m
189 prompt "z/VM unit record device driver"
172 depends on S390 190 depends on S390
173 default "m"
174 help 191 help
175 Character device driver for z/VM reader, puncher and printer. 192 Character device driver for z/VM reader, puncher and printer.
176 193
diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c
index 59ec073724bf..3fb4335d491d 100644
--- a/drivers/s390/char/con3215.c
+++ b/drivers/s390/char/con3215.c
@@ -9,6 +9,7 @@
9 * Dan Morrison, IBM Corporation <dmorriso@cse.buffalo.edu> 9 * Dan Morrison, IBM Corporation <dmorriso@cse.buffalo.edu>
10 */ 10 */
11 11
12#include <linux/kernel_stat.h>
12#include <linux/module.h> 13#include <linux/module.h>
13#include <linux/types.h> 14#include <linux/types.h>
14#include <linux/kdev_t.h> 15#include <linux/kdev_t.h>
@@ -361,6 +362,7 @@ static void raw3215_irq(struct ccw_device *cdev, unsigned long intparm,
361 int cstat, dstat; 362 int cstat, dstat;
362 int count; 363 int count;
363 364
365 kstat_cpu(smp_processor_id()).irqs[IOINT_C15]++;
364 raw = dev_get_drvdata(&cdev->dev); 366 raw = dev_get_drvdata(&cdev->dev);
365 req = (struct raw3215_req *) intparm; 367 req = (struct raw3215_req *) intparm;
366 cstat = irb->scsw.cmd.cstat; 368 cstat = irb->scsw.cmd.cstat;
diff --git a/drivers/s390/char/raw3270.c b/drivers/s390/char/raw3270.c
index 2a4c566456e7..96ba2fd1c8ad 100644
--- a/drivers/s390/char/raw3270.c
+++ b/drivers/s390/char/raw3270.c
@@ -7,6 +7,7 @@
7 * Copyright IBM Corp. 2003, 2009 7 * Copyright IBM Corp. 2003, 2009
8 */ 8 */
9 9
10#include <linux/kernel_stat.h>
10#include <linux/module.h> 11#include <linux/module.h>
11#include <linux/err.h> 12#include <linux/err.h>
12#include <linux/init.h> 13#include <linux/init.h>
@@ -329,6 +330,7 @@ raw3270_irq (struct ccw_device *cdev, unsigned long intparm, struct irb *irb)
329 struct raw3270_request *rq; 330 struct raw3270_request *rq;
330 int rc; 331 int rc;
331 332
333 kstat_cpu(smp_processor_id()).irqs[IOINT_C70]++;
332 rp = dev_get_drvdata(&cdev->dev); 334 rp = dev_get_drvdata(&cdev->dev);
333 if (!rp) 335 if (!rp)
334 return; 336 return;
diff --git a/drivers/s390/char/sclp.c b/drivers/s390/char/sclp.c
index 35cc4686b99b..b76c61f82485 100644
--- a/drivers/s390/char/sclp.c
+++ b/drivers/s390/char/sclp.c
@@ -7,6 +7,7 @@
7 * Martin Schwidefsky <schwidefsky@de.ibm.com> 7 * Martin Schwidefsky <schwidefsky@de.ibm.com>
8 */ 8 */
9 9
10#include <linux/kernel_stat.h>
10#include <linux/module.h> 11#include <linux/module.h>
11#include <linux/err.h> 12#include <linux/err.h>
12#include <linux/spinlock.h> 13#include <linux/spinlock.h>
@@ -18,16 +19,14 @@
18#include <linux/suspend.h> 19#include <linux/suspend.h>
19#include <linux/completion.h> 20#include <linux/completion.h>
20#include <linux/platform_device.h> 21#include <linux/platform_device.h>
21#include <asm/types.h>
22#include <asm/s390_ext.h> 22#include <asm/s390_ext.h>
23#include <asm/types.h>
24#include <asm/irq.h>
23 25
24#include "sclp.h" 26#include "sclp.h"
25 27
26#define SCLP_HEADER "sclp: " 28#define SCLP_HEADER "sclp: "
27 29
28/* Structure for register_early_external_interrupt. */
29static ext_int_info_t ext_int_info_hwc;
30
31/* Lock to protect internal data consistency. */ 30/* Lock to protect internal data consistency. */
32static DEFINE_SPINLOCK(sclp_lock); 31static DEFINE_SPINLOCK(sclp_lock);
33 32
@@ -402,6 +401,7 @@ static void sclp_interrupt_handler(unsigned int ext_int_code,
402 u32 finished_sccb; 401 u32 finished_sccb;
403 u32 evbuf_pending; 402 u32 evbuf_pending;
404 403
404 kstat_cpu(smp_processor_id()).irqs[EXTINT_SCP]++;
405 spin_lock(&sclp_lock); 405 spin_lock(&sclp_lock);
406 finished_sccb = param32 & 0xfffffff8; 406 finished_sccb = param32 & 0xfffffff8;
407 evbuf_pending = param32 & 0x3; 407 evbuf_pending = param32 & 0x3;
@@ -824,6 +824,7 @@ static void sclp_check_handler(unsigned int ext_int_code,
824{ 824{
825 u32 finished_sccb; 825 u32 finished_sccb;
826 826
827 kstat_cpu(smp_processor_id()).irqs[EXTINT_SCP]++;
827 finished_sccb = param32 & 0xfffffff8; 828 finished_sccb = param32 & 0xfffffff8;
828 /* Is this the interrupt we are waiting for? */ 829 /* Is this the interrupt we are waiting for? */
829 if (finished_sccb == 0) 830 if (finished_sccb == 0)
@@ -866,8 +867,7 @@ sclp_check_interface(void)
866 867
867 spin_lock_irqsave(&sclp_lock, flags); 868 spin_lock_irqsave(&sclp_lock, flags);
868 /* Prepare init mask command */ 869 /* Prepare init mask command */
869 rc = register_early_external_interrupt(0x2401, sclp_check_handler, 870 rc = register_external_interrupt(0x2401, sclp_check_handler);
870 &ext_int_info_hwc);
871 if (rc) { 871 if (rc) {
872 spin_unlock_irqrestore(&sclp_lock, flags); 872 spin_unlock_irqrestore(&sclp_lock, flags);
873 return rc; 873 return rc;
@@ -900,8 +900,7 @@ sclp_check_interface(void)
900 } else 900 } else
901 rc = -EBUSY; 901 rc = -EBUSY;
902 } 902 }
903 unregister_early_external_interrupt(0x2401, sclp_check_handler, 903 unregister_external_interrupt(0x2401, sclp_check_handler);
904 &ext_int_info_hwc);
905 spin_unlock_irqrestore(&sclp_lock, flags); 904 spin_unlock_irqrestore(&sclp_lock, flags);
906 return rc; 905 return rc;
907} 906}
@@ -1064,8 +1063,7 @@ sclp_init(void)
1064 if (rc) 1063 if (rc)
1065 goto fail_init_state_uninitialized; 1064 goto fail_init_state_uninitialized;
1066 /* Register interrupt handler */ 1065 /* Register interrupt handler */
1067 rc = register_early_external_interrupt(0x2401, sclp_interrupt_handler, 1066 rc = register_external_interrupt(0x2401, sclp_interrupt_handler);
1068 &ext_int_info_hwc);
1069 if (rc) 1067 if (rc)
1070 goto fail_unregister_reboot_notifier; 1068 goto fail_unregister_reboot_notifier;
1071 sclp_init_state = sclp_init_state_initialized; 1069 sclp_init_state = sclp_init_state_initialized;
diff --git a/drivers/s390/char/sclp_config.c b/drivers/s390/char/sclp_config.c
index b497afe061cc..16e232a99fb7 100644
--- a/drivers/s390/char/sclp_config.c
+++ b/drivers/s390/char/sclp_config.c
@@ -33,6 +33,7 @@ static void sclp_cpu_capability_notify(struct work_struct *work)
33 int cpu; 33 int cpu;
34 struct sys_device *sysdev; 34 struct sys_device *sysdev;
35 35
36 s390_adjust_jiffies();
36 pr_warning("cpu capability changed.\n"); 37 pr_warning("cpu capability changed.\n");
37 get_online_cpus(); 38 get_online_cpus();
38 for_each_online_cpu(cpu) { 39 for_each_online_cpu(cpu) {
diff --git a/drivers/s390/char/tape_core.c b/drivers/s390/char/tape_core.c
index b3a3e8e8656e..7978a0adeaf3 100644
--- a/drivers/s390/char/tape_core.c
+++ b/drivers/s390/char/tape_core.c
@@ -14,6 +14,7 @@
14#define KMSG_COMPONENT "tape" 14#define KMSG_COMPONENT "tape"
15#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt 15#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
16 16
17#include <linux/kernel_stat.h>
17#include <linux/module.h> 18#include <linux/module.h>
18#include <linux/init.h> // for kernel parameters 19#include <linux/init.h> // for kernel parameters
19#include <linux/kmod.h> // for requesting modules 20#include <linux/kmod.h> // for requesting modules
@@ -1114,6 +1115,7 @@ __tape_do_irq (struct ccw_device *cdev, unsigned long intparm, struct irb *irb)
1114 struct tape_request *request; 1115 struct tape_request *request;
1115 int rc; 1116 int rc;
1116 1117
1118 kstat_cpu(smp_processor_id()).irqs[IOINT_TAP]++;
1117 device = dev_get_drvdata(&cdev->dev); 1119 device = dev_get_drvdata(&cdev->dev);
1118 if (device == NULL) { 1120 if (device == NULL) {
1119 return; 1121 return;
diff --git a/drivers/s390/char/vmur.c b/drivers/s390/char/vmur.c
index f7e4ae6bf15a..caef1757341d 100644
--- a/drivers/s390/char/vmur.c
+++ b/drivers/s390/char/vmur.c
@@ -11,6 +11,7 @@
11#define KMSG_COMPONENT "vmur" 11#define KMSG_COMPONENT "vmur"
12#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt 12#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
13 13
14#include <linux/kernel_stat.h>
14#include <linux/cdev.h> 15#include <linux/cdev.h>
15#include <linux/slab.h> 16#include <linux/slab.h>
16 17
@@ -302,6 +303,7 @@ static void ur_int_handler(struct ccw_device *cdev, unsigned long intparm,
302{ 303{
303 struct urdev *urd; 304 struct urdev *urd;
304 305
306 kstat_cpu(smp_processor_id()).irqs[IOINT_VMR]++;
305 TRACE("ur_int_handler: intparm=0x%lx cstat=%02x dstat=%02x res=%u\n", 307 TRACE("ur_int_handler: intparm=0x%lx cstat=%02x dstat=%02x res=%u\n",
306 intparm, irb->scsw.cmd.cstat, irb->scsw.cmd.dstat, 308 intparm, irb->scsw.cmd.cstat, irb->scsw.cmd.dstat,
307 irb->scsw.cmd.count); 309 irb->scsw.cmd.count);