aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq/autoprobe.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2006-06-29 05:24:37 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-29 13:26:21 -0400
commit74ffd553a3a7fbae34be70b751852d5b6fe5acac (patch)
treea92e746310fc73cc5577b8a1cb6e6552f8dc630a /kernel/irq/autoprobe.c
parentd1bef4ed5faf7d9872337b33c4269e45ae1bf960 (diff)
[PATCH] genirq: sem2mutex probe_sem -> probing_active
Convert the irq auto-probing semaphore to a mutex. (This allows us to find probing API usage bugs sooner, via the mutex debugging code.) Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/irq/autoprobe.c')
-rw-r--r--kernel/irq/autoprobe.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/kernel/irq/autoprobe.c b/kernel/irq/autoprobe.c
index 6f1e68a46cbc..d1f1e6f10a23 100644
--- a/kernel/irq/autoprobe.c
+++ b/kernel/irq/autoprobe.c
@@ -16,7 +16,7 @@
16 * comes in on to an unassigned handler will get stuck with 16 * comes in on to an unassigned handler will get stuck with
17 * "IRQ_WAITING" cleared and the interrupt disabled. 17 * "IRQ_WAITING" cleared and the interrupt disabled.
18 */ 18 */
19static DECLARE_MUTEX(probe_sem); 19static DEFINE_MUTEX(probing_active);
20 20
21/** 21/**
22 * probe_irq_on - begin an interrupt autodetect 22 * probe_irq_on - begin an interrupt autodetect
@@ -31,7 +31,7 @@ unsigned long probe_irq_on(void)
31 irq_desc_t *desc; 31 irq_desc_t *desc;
32 unsigned int i; 32 unsigned int i;
33 33
34 down(&probe_sem); 34 mutex_lock(&probing_active);
35 /* 35 /*
36 * something may have generated an irq long ago and we want to 36 * something may have generated an irq long ago and we want to
37 * flush such a longstanding irq before considering it as spurious. 37 * flush such a longstanding irq before considering it as spurious.
@@ -132,7 +132,7 @@ unsigned int probe_irq_mask(unsigned long val)
132 } 132 }
133 spin_unlock_irq(&desc->lock); 133 spin_unlock_irq(&desc->lock);
134 } 134 }
135 up(&probe_sem); 135 mutex_unlock(&probing_active);
136 136
137 return mask & val; 137 return mask & val;
138} 138}
@@ -177,10 +177,11 @@ int probe_irq_off(unsigned long val)
177 } 177 }
178 spin_unlock_irq(&desc->lock); 178 spin_unlock_irq(&desc->lock);
179 } 179 }
180 up(&probe_sem); 180 mutex_unlock(&probing_active);
181 181
182 if (nr_irqs > 1) 182 if (nr_irqs > 1)
183 irq_found = -irq_found; 183 irq_found = -irq_found;
184
184 return irq_found; 185 return irq_found;
185} 186}
186 187