diff options
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 aafca18ab33b..ab2d19c3661f 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 |