aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
authorThomas Huth <thuth@linux.vnet.ibm.com>2014-03-31 09:24:08 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2014-04-03 08:30:52 -0400
commit1dad093b66fdd4fd5d7d2692169dc1bafd794628 (patch)
tree0774232941446dec7cf6ac05d9e9ab08284aab5c /arch/s390
parent072c2790294210419db287995628406e270bf027 (diff)
s390/irq: Use defines for external interruption codes
Use the new defines for external interruption codes to get rid of "magic" numbers in the s390 source code. And while we're at it, also rename the (un-)register_external_interrupt function to something shorter so that this patch does not exceed the 80 columns all over the place. Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390')
-rw-r--r--arch/s390/include/asm/irq.h5
-rw-r--r--arch/s390/kernel/irq.c10
-rw-r--r--arch/s390/kernel/perf_cpum_cf.c6
-rw-r--r--arch/s390/kernel/perf_cpum_sf.c6
-rw-r--r--arch/s390/kernel/runtime_instr.c3
-rw-r--r--arch/s390/kernel/sclp.S5
-rw-r--r--arch/s390/kernel/smp.c4
-rw-r--r--arch/s390/kernel/time.c6
-rw-r--r--arch/s390/mm/fault.c4
-rw-r--r--arch/s390/oprofile/hwsampler.c4
10 files changed, 30 insertions, 23 deletions
diff --git a/arch/s390/include/asm/irq.h b/arch/s390/include/asm/irq.h
index 58c1ea639452..763ccdcb70ba 100644
--- a/arch/s390/include/asm/irq.h
+++ b/arch/s390/include/asm/irq.h
@@ -27,6 +27,7 @@
27#define EXT_IRQ_TIMING_ALERT 0x1406 27#define EXT_IRQ_TIMING_ALERT 0x1406
28#define EXT_IRQ_MEASURE_ALERT 0x1407 28#define EXT_IRQ_MEASURE_ALERT 0x1407
29#define EXT_IRQ_SERVICE_SIG 0x2401 29#define EXT_IRQ_SERVICE_SIG 0x2401
30#define EXT_IRQ_CP_SERVICE 0x2603
30#define EXT_IRQ_IUCV 0x4000 31#define EXT_IRQ_IUCV 0x4000
31 32
32#ifndef __ASSEMBLY__ 33#ifndef __ASSEMBLY__
@@ -89,8 +90,8 @@ struct ext_code {
89 90
90typedef void (*ext_int_handler_t)(struct ext_code, unsigned int, unsigned long); 91typedef void (*ext_int_handler_t)(struct ext_code, unsigned int, unsigned long);
91 92
92int register_external_interrupt(u16 code, ext_int_handler_t handler); 93int register_external_irq(u16 code, ext_int_handler_t handler);
93int unregister_external_interrupt(u16 code, ext_int_handler_t handler); 94int unregister_external_irq(u16 code, ext_int_handler_t handler);
94 95
95enum irq_subclass { 96enum irq_subclass {
96 IRQ_SUBCLASS_MEASUREMENT_ALERT = 5, 97 IRQ_SUBCLASS_MEASUREMENT_ALERT = 5,
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c
index bb27a262c44a..083617d739d8 100644
--- a/arch/s390/kernel/irq.c
+++ b/arch/s390/kernel/irq.c
@@ -205,7 +205,7 @@ static inline int ext_hash(u16 code)
205 return (code + (code >> 9)) & (ARRAY_SIZE(ext_int_hash) - 1); 205 return (code + (code >> 9)) & (ARRAY_SIZE(ext_int_hash) - 1);
206} 206}
207 207
208int register_external_interrupt(u16 code, ext_int_handler_t handler) 208int register_external_irq(u16 code, ext_int_handler_t handler)
209{ 209{
210 struct ext_int_info *p; 210 struct ext_int_info *p;
211 unsigned long flags; 211 unsigned long flags;
@@ -223,9 +223,9 @@ int register_external_interrupt(u16 code, ext_int_handler_t handler)
223 spin_unlock_irqrestore(&ext_int_hash_lock, flags); 223 spin_unlock_irqrestore(&ext_int_hash_lock, flags);
224 return 0; 224 return 0;
225} 225}
226EXPORT_SYMBOL(register_external_interrupt); 226EXPORT_SYMBOL(register_external_irq);
227 227
228int unregister_external_interrupt(u16 code, ext_int_handler_t handler) 228int unregister_external_irq(u16 code, ext_int_handler_t handler)
229{ 229{
230 struct ext_int_info *p; 230 struct ext_int_info *p;
231 unsigned long flags; 231 unsigned long flags;
@@ -241,7 +241,7 @@ int unregister_external_interrupt(u16 code, ext_int_handler_t handler)
241 spin_unlock_irqrestore(&ext_int_hash_lock, flags); 241 spin_unlock_irqrestore(&ext_int_hash_lock, flags);
242 return 0; 242 return 0;
243} 243}
244EXPORT_SYMBOL(unregister_external_interrupt); 244EXPORT_SYMBOL(unregister_external_irq);
245 245
246static irqreturn_t do_ext_interrupt(int irq, void *dummy) 246static irqreturn_t do_ext_interrupt(int irq, void *dummy)
247{ 247{
@@ -251,7 +251,7 @@ static irqreturn_t do_ext_interrupt(int irq, void *dummy)
251 int index; 251 int index;
252 252
253 ext_code = *(struct ext_code *) &regs->int_code; 253 ext_code = *(struct ext_code *) &regs->int_code;
254 if (ext_code.code != 0x1004) 254 if (ext_code.code != EXT_IRQ_CLK_COMP)
255 __get_cpu_var(s390_idle).nohz_delay = 1; 255 __get_cpu_var(s390_idle).nohz_delay = 1;
256 256
257 index = ext_hash(ext_code.code); 257 index = ext_hash(ext_code.code);
diff --git a/arch/s390/kernel/perf_cpum_cf.c b/arch/s390/kernel/perf_cpum_cf.c
index f51214c04858..ea75d011a6fc 100644
--- a/arch/s390/kernel/perf_cpum_cf.c
+++ b/arch/s390/kernel/perf_cpum_cf.c
@@ -673,7 +673,8 @@ static int __init cpumf_pmu_init(void)
673 ctl_clear_bit(0, 48); 673 ctl_clear_bit(0, 48);
674 674
675 /* register handler for measurement-alert interruptions */ 675 /* register handler for measurement-alert interruptions */
676 rc = register_external_interrupt(0x1407, cpumf_measurement_alert); 676 rc = register_external_irq(EXT_IRQ_MEASURE_ALERT,
677 cpumf_measurement_alert);
677 if (rc) { 678 if (rc) {
678 pr_err("Registering for CPU-measurement alerts " 679 pr_err("Registering for CPU-measurement alerts "
679 "failed with rc=%i\n", rc); 680 "failed with rc=%i\n", rc);
@@ -684,7 +685,8 @@ static int __init cpumf_pmu_init(void)
684 rc = perf_pmu_register(&cpumf_pmu, "cpum_cf", PERF_TYPE_RAW); 685 rc = perf_pmu_register(&cpumf_pmu, "cpum_cf", PERF_TYPE_RAW);
685 if (rc) { 686 if (rc) {
686 pr_err("Registering the cpum_cf PMU failed with rc=%i\n", rc); 687 pr_err("Registering the cpum_cf PMU failed with rc=%i\n", rc);
687 unregister_external_interrupt(0x1407, cpumf_measurement_alert); 688 unregister_external_irq(EXT_IRQ_MEASURE_ALERT,
689 cpumf_measurement_alert);
688 goto out; 690 goto out;
689 } 691 }
690 perf_cpu_notifier(cpumf_pmu_notifier); 692 perf_cpu_notifier(cpumf_pmu_notifier);
diff --git a/arch/s390/kernel/perf_cpum_sf.c b/arch/s390/kernel/perf_cpum_sf.c
index 6c0d29827cb6..ea0c7b2ef030 100644
--- a/arch/s390/kernel/perf_cpum_sf.c
+++ b/arch/s390/kernel/perf_cpum_sf.c
@@ -1621,7 +1621,8 @@ static int __init init_cpum_sampling_pmu(void)
1621 pr_err("Registering for s390dbf failed\n"); 1621 pr_err("Registering for s390dbf failed\n");
1622 debug_register_view(sfdbg, &debug_sprintf_view); 1622 debug_register_view(sfdbg, &debug_sprintf_view);
1623 1623
1624 err = register_external_interrupt(0x1407, cpumf_measurement_alert); 1624 err = register_external_irq(EXT_IRQ_MEASURE_ALERT,
1625 cpumf_measurement_alert);
1625 if (err) { 1626 if (err) {
1626 pr_cpumsf_err(RS_INIT_FAILURE_ALRT); 1627 pr_cpumsf_err(RS_INIT_FAILURE_ALRT);
1627 goto out; 1628 goto out;
@@ -1630,7 +1631,8 @@ static int __init init_cpum_sampling_pmu(void)
1630 err = perf_pmu_register(&cpumf_sampling, "cpum_sf", PERF_TYPE_RAW); 1631 err = perf_pmu_register(&cpumf_sampling, "cpum_sf", PERF_TYPE_RAW);
1631 if (err) { 1632 if (err) {
1632 pr_cpumsf_err(RS_INIT_FAILURE_PERF); 1633 pr_cpumsf_err(RS_INIT_FAILURE_PERF);
1633 unregister_external_interrupt(0x1407, cpumf_measurement_alert); 1634 unregister_external_irq(EXT_IRQ_MEASURE_ALERT,
1635 cpumf_measurement_alert);
1634 goto out; 1636 goto out;
1635 } 1637 }
1636 perf_cpu_notifier(cpumf_pmu_notifier); 1638 perf_cpu_notifier(cpumf_pmu_notifier);
diff --git a/arch/s390/kernel/runtime_instr.c b/arch/s390/kernel/runtime_instr.c
index d817cce7e72d..26b4ae96fdd7 100644
--- a/arch/s390/kernel/runtime_instr.c
+++ b/arch/s390/kernel/runtime_instr.c
@@ -138,7 +138,8 @@ static int __init runtime_instr_init(void)
138 return 0; 138 return 0;
139 139
140 irq_subclass_register(IRQ_SUBCLASS_MEASUREMENT_ALERT); 140 irq_subclass_register(IRQ_SUBCLASS_MEASUREMENT_ALERT);
141 rc = register_external_interrupt(0x1407, runtime_instr_int_handler); 141 rc = register_external_irq(EXT_IRQ_MEASURE_ALERT,
142 runtime_instr_int_handler);
142 if (rc) 143 if (rc)
143 irq_subclass_unregister(IRQ_SUBCLASS_MEASUREMENT_ALERT); 144 irq_subclass_unregister(IRQ_SUBCLASS_MEASUREMENT_ALERT);
144 else 145 else
diff --git a/arch/s390/kernel/sclp.S b/arch/s390/kernel/sclp.S
index 29bd7bec4176..a41f2c99dcc8 100644
--- a/arch/s390/kernel/sclp.S
+++ b/arch/s390/kernel/sclp.S
@@ -9,6 +9,7 @@
9 */ 9 */
10 10
11#include <linux/linkage.h> 11#include <linux/linkage.h>
12#include <asm/irq.h>
12 13
13LC_EXT_NEW_PSW = 0x58 # addr of ext int handler 14LC_EXT_NEW_PSW = 0x58 # addr of ext int handler
14LC_EXT_NEW_PSW_64 = 0x1b0 # addr of ext int handler 64 bit 15LC_EXT_NEW_PSW_64 = 0x1b0 # addr of ext int handler 64 bit
@@ -73,9 +74,9 @@ _sclp_wait_int:
73 lpsw .LwaitpswS1-.LbaseS1(%r13) # wait until interrupt 74 lpsw .LwaitpswS1-.LbaseS1(%r13) # wait until interrupt
74.LwaitS1: 75.LwaitS1:
75 lh %r7,LC_EXT_INT_CODE 76 lh %r7,LC_EXT_INT_CODE
76 chi %r7,0x1004 # timeout? 77 chi %r7,EXT_IRQ_CLK_COMP # timeout?
77 je .LtimeoutS1 78 je .LtimeoutS1
78 chi %r7,0x2401 # service int? 79 chi %r7,EXT_IRQ_SERVICE_SIG # service int?
79 jne .LloopS1 80 jne .LloopS1
80 sr %r2,%r2 81 sr %r2,%r2
81 l %r3,LC_EXT_INT_PARAM 82 l %r3,LC_EXT_INT_PARAM
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 8827883310dd..366d14460c2b 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -785,10 +785,10 @@ void __init smp_fill_possible_mask(void)
785void __init smp_prepare_cpus(unsigned int max_cpus) 785void __init smp_prepare_cpus(unsigned int max_cpus)
786{ 786{
787 /* request the 0x1201 emergency signal external interrupt */ 787 /* request the 0x1201 emergency signal external interrupt */
788 if (register_external_interrupt(0x1201, do_ext_call_interrupt) != 0) 788 if (register_external_irq(EXT_IRQ_EMERGENCY_SIG, do_ext_call_interrupt))
789 panic("Couldn't request external interrupt 0x1201"); 789 panic("Couldn't request external interrupt 0x1201");
790 /* request the 0x1202 external call external interrupt */ 790 /* request the 0x1202 external call external interrupt */
791 if (register_external_interrupt(0x1202, do_ext_call_interrupt) != 0) 791 if (register_external_irq(EXT_IRQ_EXTERNAL_CALL, do_ext_call_interrupt))
792 panic("Couldn't request external interrupt 0x1202"); 792 panic("Couldn't request external interrupt 0x1202");
793 smp_detect_cpus(); 793 smp_detect_cpus();
794} 794}
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index dd95f1631621..386d37a228bb 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -262,11 +262,11 @@ void __init time_init(void)
262 stp_reset(); 262 stp_reset();
263 263
264 /* request the clock comparator external interrupt */ 264 /* request the clock comparator external interrupt */
265 if (register_external_interrupt(0x1004, clock_comparator_interrupt)) 265 if (register_external_irq(EXT_IRQ_CLK_COMP, clock_comparator_interrupt))
266 panic("Couldn't request external interrupt 0x1004"); 266 panic("Couldn't request external interrupt 0x1004");
267 267
268 /* request the timing alert external interrupt */ 268 /* request the timing alert external interrupt */
269 if (register_external_interrupt(0x1406, timing_alert_interrupt)) 269 if (register_external_irq(EXT_IRQ_TIMING_ALERT, timing_alert_interrupt))
270 panic("Couldn't request external interrupt 0x1406"); 270 panic("Couldn't request external interrupt 0x1406");
271 271
272 if (clocksource_register(&clocksource_tod) != 0) 272 if (clocksource_register(&clocksource_tod) != 0)
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index d95265b2719f..750565f72e06 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -627,7 +627,7 @@ static int __init pfault_irq_init(void)
627{ 627{
628 int rc; 628 int rc;
629 629
630 rc = register_external_interrupt(0x2603, pfault_interrupt); 630 rc = register_external_irq(EXT_IRQ_CP_SERVICE, pfault_interrupt);
631 if (rc) 631 if (rc)
632 goto out_extint; 632 goto out_extint;
633 rc = pfault_init() == 0 ? 0 : -EOPNOTSUPP; 633 rc = pfault_init() == 0 ? 0 : -EOPNOTSUPP;
@@ -638,7 +638,7 @@ static int __init pfault_irq_init(void)
638 return 0; 638 return 0;
639 639
640out_pfault: 640out_pfault:
641 unregister_external_interrupt(0x2603, pfault_interrupt); 641 unregister_external_irq(EXT_IRQ_CP_SERVICE, pfault_interrupt);
642out_extint: 642out_extint:
643 pfault_disable = 1; 643 pfault_disable = 1;
644 return rc; 644 return rc;
diff --git a/arch/s390/oprofile/hwsampler.c b/arch/s390/oprofile/hwsampler.c
index a32c96761eab..276f2e26c761 100644
--- a/arch/s390/oprofile/hwsampler.c
+++ b/arch/s390/oprofile/hwsampler.c
@@ -1033,7 +1033,7 @@ int hwsampler_setup(void)
1033 max_sampler_rate = cb->qsi.max_sampl_rate; 1033 max_sampler_rate = cb->qsi.max_sampl_rate;
1034 } 1034 }
1035 } 1035 }
1036 register_external_interrupt(0x1407, hws_ext_handler); 1036 register_external_irq(EXT_IRQ_MEASURE_ALERT, hws_ext_handler);
1037 1037
1038 hws_state = HWS_DEALLOCATED; 1038 hws_state = HWS_DEALLOCATED;
1039 rc = 0; 1039 rc = 0;
@@ -1068,7 +1068,7 @@ int hwsampler_shutdown(void)
1068 hws_wq = NULL; 1068 hws_wq = NULL;
1069 } 1069 }
1070 1070
1071 unregister_external_interrupt(0x1407, hws_ext_handler); 1071 unregister_external_irq(EXT_IRQ_MEASURE_ALERT, hws_ext_handler);
1072 hws_state = HWS_INIT; 1072 hws_state = HWS_INIT;
1073 rc = 0; 1073 rc = 0;
1074 } 1074 }