aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/irq.c
diff options
context:
space:
mode:
authorJan Glauber <jang@linux.vnet.ibm.com>2012-03-23 06:13:05 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2012-03-23 06:13:24 -0400
commitb03d541aa45b52e1b723890121a9fe3920eb438b (patch)
tree923c4bc9c618614634b536199ec1e4d1c74cdc83 /arch/s390/kernel/irq.c
parent61d84979ab9826c292812059f99248603da28fba (diff)
[S390] oprofile: Allow multiple users of the measurement alert interrupt
Prepare the measurement facility which is currently only used by oprofile for multiple users. To achieve that the measurement alert interrupt control bit needs to be protected. The measurement alert definitions are moved to a header file and an interrupt mask is added so that users can discard interrupts if they are for a different measurement subsystem. Reviewed-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com> Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/irq.c')
-rw-r--r--arch/s390/kernel/irq.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c
index 2429ecd6887..1c2cdd59ccd 100644
--- a/arch/s390/kernel/irq.c
+++ b/arch/s390/kernel/irq.c
@@ -255,3 +255,26 @@ void service_subclass_irq_unregister(void)
255 spin_unlock(&sc_irq_lock); 255 spin_unlock(&sc_irq_lock);
256} 256}
257EXPORT_SYMBOL(service_subclass_irq_unregister); 257EXPORT_SYMBOL(service_subclass_irq_unregister);
258
259static DEFINE_SPINLOCK(ma_subclass_lock);
260static int ma_subclass_refcount;
261
262void measurement_alert_subclass_register(void)
263{
264 spin_lock(&ma_subclass_lock);
265 if (!ma_subclass_refcount)
266 ctl_set_bit(0, 5);
267 ma_subclass_refcount++;
268 spin_unlock(&ma_subclass_lock);
269}
270EXPORT_SYMBOL(measurement_alert_subclass_register);
271
272void measurement_alert_subclass_unregister(void)
273{
274 spin_lock(&ma_subclass_lock);
275 ma_subclass_refcount--;
276 if (!ma_subclass_refcount)
277 ctl_clear_bit(0, 5);
278 spin_unlock(&ma_subclass_lock);
279}
280EXPORT_SYMBOL(measurement_alert_subclass_unregister);