diff options
author | Pekka Enberg <penberg@cs.helsinki.fi> | 2009-04-09 04:52:21 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-04-10 08:35:54 -0400 |
commit | 22813c45228160b07244a7c4ed7580388ac0f33d (patch) | |
tree | d2001a0e385725425089464ff4ab4f761087a8b3 /arch/x86 | |
parent | 36290d87f5abf260a543e5b711be4ceed03e6b1a (diff) |
x86: introduce apic_intr_init() in irqinit_32.c
Impact: cleanup
Reviewed-by Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/kernel/irqinit_32.c | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/arch/x86/kernel/irqinit_32.c b/arch/x86/kernel/irqinit_32.c index df0aad5a0624..9ba68c4557b1 100644 --- a/arch/x86/kernel/irqinit_32.c +++ b/arch/x86/kernel/irqinit_32.c | |||
@@ -171,25 +171,8 @@ static void __init x86_quirk_pre_intr_init(void) | |||
171 | init_ISA_irqs(); | 171 | init_ISA_irqs(); |
172 | } | 172 | } |
173 | 173 | ||
174 | void __init native_init_IRQ(void) | 174 | static void __init apic_intr_init(void) |
175 | { | 175 | { |
176 | int i; | ||
177 | |||
178 | /* Execute any quirks before the call gates are initialised: */ | ||
179 | x86_quirk_pre_intr_init(); | ||
180 | |||
181 | /* | ||
182 | * Cover the whole vector space, no vector can escape | ||
183 | * us. (some of these will be overridden and become | ||
184 | * 'special' SMP interrupts) | ||
185 | */ | ||
186 | for (i = FIRST_EXTERNAL_VECTOR; i < NR_VECTORS; i++) { | ||
187 | /* SYSCALL_VECTOR was reserved in trap_init. */ | ||
188 | if (i != SYSCALL_VECTOR) | ||
189 | set_intr_gate(i, interrupt[i-FIRST_EXTERNAL_VECTOR]); | ||
190 | } | ||
191 | |||
192 | |||
193 | smp_intr_init(); | 176 | smp_intr_init(); |
194 | 177 | ||
195 | #ifdef CONFIG_X86_LOCAL_APIC | 178 | #ifdef CONFIG_X86_LOCAL_APIC |
@@ -208,6 +191,27 @@ void __init native_init_IRQ(void) | |||
208 | /* thermal monitor LVT interrupt */ | 191 | /* thermal monitor LVT interrupt */ |
209 | alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt); | 192 | alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt); |
210 | #endif | 193 | #endif |
194 | } | ||
195 | |||
196 | void __init native_init_IRQ(void) | ||
197 | { | ||
198 | int i; | ||
199 | |||
200 | /* Execute any quirks before the call gates are initialised: */ | ||
201 | x86_quirk_pre_intr_init(); | ||
202 | |||
203 | /* | ||
204 | * Cover the whole vector space, no vector can escape | ||
205 | * us. (some of these will be overridden and become | ||
206 | * 'special' SMP interrupts) | ||
207 | */ | ||
208 | for (i = FIRST_EXTERNAL_VECTOR; i < NR_VECTORS; i++) { | ||
209 | /* SYSCALL_VECTOR was reserved in trap_init. */ | ||
210 | if (i != SYSCALL_VECTOR) | ||
211 | set_intr_gate(i, interrupt[i-FIRST_EXTERNAL_VECTOR]); | ||
212 | } | ||
213 | |||
214 | apic_intr_init(); | ||
211 | 215 | ||
212 | if (!acpi_ioapic) | 216 | if (!acpi_ioapic) |
213 | setup_irq(2, &irq2); | 217 | setup_irq(2, &irq2); |