aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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
-rw-r--r--drivers/s390/block/dasd_diag.c4
-rw-r--r--drivers/s390/char/sclp.c6
-rw-r--r--drivers/s390/kvm/kvm_virtio.c2
-rw-r--r--net/iucv/iucv.c6
14 files changed, 39 insertions, 32 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 }
diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c
index 9cbc567698ce..c062f1620c58 100644
--- a/drivers/s390/block/dasd_diag.c
+++ b/drivers/s390/block/dasd_diag.c
@@ -646,7 +646,7 @@ dasd_diag_init(void)
646 ASCEBC(dasd_diag_discipline.ebcname, 4); 646 ASCEBC(dasd_diag_discipline.ebcname, 4);
647 647
648 irq_subclass_register(IRQ_SUBCLASS_SERVICE_SIGNAL); 648 irq_subclass_register(IRQ_SUBCLASS_SERVICE_SIGNAL);
649 register_external_interrupt(0x2603, dasd_ext_handler); 649 register_external_irq(EXT_IRQ_CP_SERVICE, dasd_ext_handler);
650 dasd_diag_discipline_pointer = &dasd_diag_discipline; 650 dasd_diag_discipline_pointer = &dasd_diag_discipline;
651 return 0; 651 return 0;
652} 652}
@@ -654,7 +654,7 @@ dasd_diag_init(void)
654static void __exit 654static void __exit
655dasd_diag_cleanup(void) 655dasd_diag_cleanup(void)
656{ 656{
657 unregister_external_interrupt(0x2603, dasd_ext_handler); 657 unregister_external_irq(EXT_IRQ_CP_SERVICE, dasd_ext_handler);
658 irq_subclass_unregister(IRQ_SUBCLASS_SERVICE_SIGNAL); 658 irq_subclass_unregister(IRQ_SUBCLASS_SERVICE_SIGNAL);
659 dasd_diag_discipline_pointer = NULL; 659 dasd_diag_discipline_pointer = NULL;
660} 660}
diff --git a/drivers/s390/char/sclp.c b/drivers/s390/char/sclp.c
index e9ede5980994..1990285296c6 100644
--- a/drivers/s390/char/sclp.c
+++ b/drivers/s390/char/sclp.c
@@ -972,7 +972,7 @@ sclp_check_interface(void)
972 972
973 spin_lock_irqsave(&sclp_lock, flags); 973 spin_lock_irqsave(&sclp_lock, flags);
974 /* Prepare init mask command */ 974 /* Prepare init mask command */
975 rc = register_external_interrupt(0x2401, sclp_check_handler); 975 rc = register_external_irq(EXT_IRQ_SERVICE_SIG, sclp_check_handler);
976 if (rc) { 976 if (rc) {
977 spin_unlock_irqrestore(&sclp_lock, flags); 977 spin_unlock_irqrestore(&sclp_lock, flags);
978 return rc; 978 return rc;
@@ -1005,7 +1005,7 @@ sclp_check_interface(void)
1005 } else 1005 } else
1006 rc = -EBUSY; 1006 rc = -EBUSY;
1007 } 1007 }
1008 unregister_external_interrupt(0x2401, sclp_check_handler); 1008 unregister_external_irq(EXT_IRQ_SERVICE_SIG, sclp_check_handler);
1009 spin_unlock_irqrestore(&sclp_lock, flags); 1009 spin_unlock_irqrestore(&sclp_lock, flags);
1010 return rc; 1010 return rc;
1011} 1011}
@@ -1206,7 +1206,7 @@ sclp_init(void)
1206 if (rc) 1206 if (rc)
1207 goto fail_init_state_uninitialized; 1207 goto fail_init_state_uninitialized;
1208 /* Register interrupt handler */ 1208 /* Register interrupt handler */
1209 rc = register_external_interrupt(0x2401, sclp_interrupt_handler); 1209 rc = register_external_irq(EXT_IRQ_SERVICE_SIG, sclp_interrupt_handler);
1210 if (rc) 1210 if (rc)
1211 goto fail_unregister_reboot_notifier; 1211 goto fail_unregister_reboot_notifier;
1212 sclp_init_state = sclp_init_state_initialized; 1212 sclp_init_state = sclp_init_state_initialized;
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
index 1abd0db29915..a1349653c6d9 100644
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -477,7 +477,7 @@ static int __init kvm_devices_init(void)
477 INIT_WORK(&hotplug_work, hotplug_devices); 477 INIT_WORK(&hotplug_work, hotplug_devices);
478 478
479 irq_subclass_register(IRQ_SUBCLASS_SERVICE_SIGNAL); 479 irq_subclass_register(IRQ_SUBCLASS_SERVICE_SIGNAL);
480 register_external_interrupt(0x2603, kvm_extint_handler); 480 register_external_irq(EXT_IRQ_CP_SERVICE, kvm_extint_handler);
481 481
482 scan_devices(); 482 scan_devices();
483 return 0; 483 return 0;
diff --git a/net/iucv/iucv.c b/net/iucv/iucv.c
index cd5b8ec9be04..12afba10a61f 100644
--- a/net/iucv/iucv.c
+++ b/net/iucv/iucv.c
@@ -2016,7 +2016,7 @@ static int __init iucv_init(void)
2016 rc = iucv_query_maxconn(); 2016 rc = iucv_query_maxconn();
2017 if (rc) 2017 if (rc)
2018 goto out_ctl; 2018 goto out_ctl;
2019 rc = register_external_interrupt(0x4000, iucv_external_interrupt); 2019 rc = register_external_irq(EXT_IRQ_IUCV, iucv_external_interrupt);
2020 if (rc) 2020 if (rc)
2021 goto out_ctl; 2021 goto out_ctl;
2022 iucv_root = root_device_register("iucv"); 2022 iucv_root = root_device_register("iucv");
@@ -2081,7 +2081,7 @@ out_free:
2081 } 2081 }
2082 root_device_unregister(iucv_root); 2082 root_device_unregister(iucv_root);
2083out_int: 2083out_int:
2084 unregister_external_interrupt(0x4000, iucv_external_interrupt); 2084 unregister_external_irq(EXT_IRQ_IUCV, iucv_external_interrupt);
2085out_ctl: 2085out_ctl:
2086 ctl_clear_bit(0, 1); 2086 ctl_clear_bit(0, 1);
2087out: 2087out:
@@ -2116,7 +2116,7 @@ static void __exit iucv_exit(void)
2116 } 2116 }
2117 root_device_unregister(iucv_root); 2117 root_device_unregister(iucv_root);
2118 bus_unregister(&iucv_bus); 2118 bus_unregister(&iucv_bus);
2119 unregister_external_interrupt(0x4000, iucv_external_interrupt); 2119 unregister_external_irq(EXT_IRQ_IUCV, iucv_external_interrupt);
2120} 2120}
2121 2121
2122subsys_initcall(iucv_init); 2122subsys_initcall(iucv_init);