diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2006-10-04 05:16:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-04 10:55:27 -0400 |
commit | b6cf2583ba026ca563ff8b15805fcf30b8e192a7 (patch) | |
tree | 4f8af6c2cd0ce3ac22ee0a918177e3fd20dcf80a /arch/ia64 | |
parent | 3a16d713626735f3016da0521b7bf251cd78e836 (diff) |
[PATCH] genirq: ia64 irq: Dynamic irq support
[akpm@osdl.org: build fix]
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Rajesh Shah <rajesh.shah@intel.com>
Cc: Andi Kleen <ak@muc.de>
Cc: "Protasevich, Natalie" <Natalie.Protasevich@UNISYS.com>
Cc: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/kernel/irq_ia64.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c index aafca18ab33..ab2d19c3661 100644 --- a/arch/ia64/kernel/irq_ia64.c +++ b/arch/ia64/kernel/irq_ia64.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/smp_lock.h> | 30 | #include <linux/smp_lock.h> |
31 | #include <linux/threads.h> | 31 | #include <linux/threads.h> |
32 | #include <linux/bitops.h> | 32 | #include <linux/bitops.h> |
33 | #include <linux/irq.h> | ||
33 | 34 | ||
34 | #include <asm/delay.h> | 35 | #include <asm/delay.h> |
35 | #include <asm/intrinsics.h> | 36 | #include <asm/intrinsics.h> |
@@ -105,6 +106,25 @@ reserve_irq_vector (int vector) | |||
105 | return test_and_set_bit(pos, ia64_vector_mask); | 106 | return test_and_set_bit(pos, ia64_vector_mask); |
106 | } | 107 | } |
107 | 108 | ||
109 | /* | ||
110 | * Dynamic irq allocate and deallocation for MSI | ||
111 | */ | ||
112 | int create_irq(void) | ||
113 | { | ||
114 | int vector = assign_irq_vector(AUTO_ASSIGN); | ||
115 | |||
116 | if (vector >= 0) | ||
117 | dynamic_irq_init(vector); | ||
118 | |||
119 | return vector; | ||
120 | } | ||
121 | |||
122 | void destroy_irq(unsigned int irq) | ||
123 | { | ||
124 | dynamic_irq_cleanup(irq); | ||
125 | free_irq_vector(irq); | ||
126 | } | ||
127 | |||
108 | #ifdef CONFIG_SMP | 128 | #ifdef CONFIG_SMP |
109 | # define IS_RESCHEDULE(vec) (vec == IA64_IPI_RESCHEDULE) | 129 | # define IS_RESCHEDULE(vec) (vec == IA64_IPI_RESCHEDULE) |
110 | #else | 130 | #else |