diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-01 23:48:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-01 23:48:54 -0400 |
commit | 1ed4395035a6791ebbbf618429a58ab9c207cc83 (patch) | |
tree | a34158c5dd3c4ca70f140da5a484ca6142a3b8c3 /arch/ia64/kernel/irq_ia64.c | |
parent | 878701db07db3f0b59f14f0c525b681e4ca81551 (diff) | |
parent | b718f91c14604e4ab5cdfe8d3baff8111425ea7d (diff) |
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
[IA64] ITC: Reduce rating for ITC clock if ITCs are drifty
[IA64] SN2: Fix up sn2_rtc clock
[IA64] Fix wrong access to irq_desc[] in iosapic_register_intr().
[IA64] Fix possible race in destroy_and_reserve_irq()
[IA64] Fix registered interrupt check
[IA64] Remove a few duplicate includes
[IA64] Allow smp_call_function_single() to current cpu
[IA64] fix a few section mismatch warnings
Diffstat (limited to 'arch/ia64/kernel/irq_ia64.c')
-rw-r--r-- | arch/ia64/kernel/irq_ia64.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c index 9386b955eed1..c47c8acc96e3 100644 --- a/arch/ia64/kernel/irq_ia64.c +++ b/arch/ia64/kernel/irq_ia64.c | |||
@@ -101,15 +101,6 @@ int check_irq_used(int irq) | |||
101 | return -1; | 101 | return -1; |
102 | } | 102 | } |
103 | 103 | ||
104 | static void reserve_irq(unsigned int irq) | ||
105 | { | ||
106 | unsigned long flags; | ||
107 | |||
108 | spin_lock_irqsave(&vector_lock, flags); | ||
109 | irq_status[irq] = IRQ_RSVD; | ||
110 | spin_unlock_irqrestore(&vector_lock, flags); | ||
111 | } | ||
112 | |||
113 | static inline int find_unassigned_irq(void) | 104 | static inline int find_unassigned_irq(void) |
114 | { | 105 | { |
115 | int irq; | 106 | int irq; |
@@ -302,10 +293,14 @@ static cpumask_t vector_allocation_domain(int cpu) | |||
302 | 293 | ||
303 | void destroy_and_reserve_irq(unsigned int irq) | 294 | void destroy_and_reserve_irq(unsigned int irq) |
304 | { | 295 | { |
296 | unsigned long flags; | ||
297 | |||
305 | dynamic_irq_cleanup(irq); | 298 | dynamic_irq_cleanup(irq); |
306 | 299 | ||
307 | clear_irq_vector(irq); | 300 | spin_lock_irqsave(&vector_lock, flags); |
308 | reserve_irq(irq); | 301 | __clear_irq_vector(irq); |
302 | irq_status[irq] = IRQ_RSVD; | ||
303 | spin_unlock_irqrestore(&vector_lock, flags); | ||
309 | } | 304 | } |
310 | 305 | ||
311 | static int __reassign_irq_vector(int irq, int cpu) | 306 | static int __reassign_irq_vector(int irq, int cpu) |