diff options
Diffstat (limited to 'arch/s390/kernel')
-rw-r--r-- | arch/s390/kernel/s390_ext.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/s390/kernel/s390_ext.c b/arch/s390/kernel/s390_ext.c index 185029919c4d..87b5c532abf1 100644 --- a/arch/s390/kernel/s390_ext.c +++ b/arch/s390/kernel/s390_ext.c | |||
@@ -106,3 +106,26 @@ void __irq_entry do_extint(struct pt_regs *regs, unsigned int ext_int_code, | |||
106 | irq_exit(); | 106 | irq_exit(); |
107 | set_irq_regs(old_regs); | 107 | set_irq_regs(old_regs); |
108 | } | 108 | } |
109 | |||
110 | static DEFINE_SPINLOCK(sc_irq_lock); | ||
111 | static int sc_irq_refcount; | ||
112 | |||
113 | void service_subclass_irq_register(void) | ||
114 | { | ||
115 | spin_lock(&sc_irq_lock); | ||
116 | if (!sc_irq_refcount) | ||
117 | ctl_set_bit(0, 9); | ||
118 | sc_irq_refcount++; | ||
119 | spin_unlock(&sc_irq_lock); | ||
120 | } | ||
121 | EXPORT_SYMBOL(service_subclass_irq_register); | ||
122 | |||
123 | void service_subclass_irq_unregister(void) | ||
124 | { | ||
125 | spin_lock(&sc_irq_lock); | ||
126 | sc_irq_refcount--; | ||
127 | if (!sc_irq_refcount) | ||
128 | ctl_clear_bit(0, 9); | ||
129 | spin_unlock(&sc_irq_lock); | ||
130 | } | ||
131 | EXPORT_SYMBOL(service_subclass_irq_unregister); | ||