diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2009-08-20 03:59:09 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2009-08-31 03:35:45 -0400 |
commit | 66bcaf0bde100a4b54b82fc6fea6ceee2212ffb4 (patch) | |
tree | 4d9e290bcf8da7e043d12f047b10ea4b6c3f33ff /arch/x86/kernel | |
parent | d9112f43021554ded2ef2b9bea5f88ba4b52abe0 (diff) |
x86: Move irq_init to x86_init_ops
irq_init is overridden by x86_quirks and by paravirts. Unify the whole
mess and make it an unconditional x86_init_ops function which defaults
to the standard function and can be overridden by the early platform
code.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/apic/numaq_32.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/irqinit.c | 12 | ||||
-rw-r--r-- | arch/x86/kernel/paravirt.c | 6 | ||||
-rw-r--r-- | arch/x86/kernel/setup.c | 17 | ||||
-rw-r--r-- | arch/x86/kernel/visws_quirks.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/x86_init.c | 1 |
6 files changed, 5 insertions, 33 deletions
diff --git a/arch/x86/kernel/apic/numaq_32.c b/arch/x86/kernel/apic/numaq_32.c index ec8b3113716d..eafd341e42dd 100644 --- a/arch/x86/kernel/apic/numaq_32.c +++ b/arch/x86/kernel/apic/numaq_32.c | |||
@@ -265,7 +265,6 @@ static void __init smp_read_mpc_oem(struct mpc_table *mpc) | |||
265 | static struct x86_quirks numaq_x86_quirks __initdata = { | 265 | static struct x86_quirks numaq_x86_quirks __initdata = { |
266 | .arch_pre_time_init = numaq_pre_time_init, | 266 | .arch_pre_time_init = numaq_pre_time_init, |
267 | .arch_time_init = NULL, | 267 | .arch_time_init = NULL, |
268 | .arch_intr_init = NULL, | ||
269 | .arch_trap_init = NULL, | 268 | .arch_trap_init = NULL, |
270 | }; | 269 | }; |
271 | 270 | ||
diff --git a/arch/x86/kernel/irqinit.c b/arch/x86/kernel/irqinit.c index acdf088c7583..e0142cda2394 100644 --- a/arch/x86/kernel/irqinit.c +++ b/arch/x86/kernel/irqinit.c | |||
@@ -140,8 +140,10 @@ void __init init_ISA_irqs(void) | |||
140 | } | 140 | } |
141 | } | 141 | } |
142 | 142 | ||
143 | /* Overridden in paravirt.c */ | 143 | void init_IRQ(void) |
144 | void init_IRQ(void) __attribute__((weak, alias("native_init_IRQ"))); | 144 | { |
145 | x86_init.irqs.intr_init(); | ||
146 | } | ||
145 | 147 | ||
146 | static void __init smp_intr_init(void) | 148 | static void __init smp_intr_init(void) |
147 | { | 149 | { |
@@ -238,12 +240,6 @@ void __init native_init_IRQ(void) | |||
238 | 240 | ||
239 | #ifdef CONFIG_X86_32 | 241 | #ifdef CONFIG_X86_32 |
240 | /* | 242 | /* |
241 | * Call quirks after call gates are initialised (usually add in | ||
242 | * the architecture specific gates): | ||
243 | */ | ||
244 | x86_quirk_intr_init(); | ||
245 | |||
246 | /* | ||
247 | * External FPU? Set up irq13 if so, for | 243 | * External FPU? Set up irq13 if so, for |
248 | * original braindamaged IBM FERR coupling. | 244 | * original braindamaged IBM FERR coupling. |
249 | */ | 245 | */ |
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c index 532c9a2626c7..d76bfbec71ae 100644 --- a/arch/x86/kernel/paravirt.c +++ b/arch/x86/kernel/paravirt.c | |||
@@ -183,11 +183,6 @@ unsigned paravirt_patch_insns(void *insnbuf, unsigned len, | |||
183 | return insn_len; | 183 | return insn_len; |
184 | } | 184 | } |
185 | 185 | ||
186 | void init_IRQ(void) | ||
187 | { | ||
188 | pv_irq_ops.init_IRQ(); | ||
189 | } | ||
190 | |||
191 | static void native_flush_tlb(void) | 186 | static void native_flush_tlb(void) |
192 | { | 187 | { |
193 | __native_flush_tlb(); | 188 | __native_flush_tlb(); |
@@ -328,7 +323,6 @@ struct pv_time_ops pv_time_ops = { | |||
328 | }; | 323 | }; |
329 | 324 | ||
330 | struct pv_irq_ops pv_irq_ops = { | 325 | struct pv_irq_ops pv_irq_ops = { |
331 | .init_IRQ = native_init_IRQ, | ||
332 | .save_fl = __PV_IS_CALLEE_SAVE(native_save_fl), | 326 | .save_fl = __PV_IS_CALLEE_SAVE(native_save_fl), |
333 | .restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl), | 327 | .restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl), |
334 | .irq_disable = __PV_IS_CALLEE_SAVE(native_irq_disable), | 328 | .irq_disable = __PV_IS_CALLEE_SAVE(native_irq_disable), |
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 54043cb7ba68..d3da0f7333f7 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -1021,23 +1021,6 @@ void __init setup_arch(char **cmdline_p) | |||
1021 | #ifdef CONFIG_X86_32 | 1021 | #ifdef CONFIG_X86_32 |
1022 | 1022 | ||
1023 | /** | 1023 | /** |
1024 | * x86_quirk_intr_init - post gate setup interrupt initialisation | ||
1025 | * | ||
1026 | * Description: | ||
1027 | * Fill in any interrupts that may have been left out by the general | ||
1028 | * init_IRQ() routine. interrupts having to do with the machine rather | ||
1029 | * than the devices on the I/O bus (like APIC interrupts in intel MP | ||
1030 | * systems) are started here. | ||
1031 | **/ | ||
1032 | void __init x86_quirk_intr_init(void) | ||
1033 | { | ||
1034 | if (x86_quirks->arch_intr_init) { | ||
1035 | if (x86_quirks->arch_intr_init()) | ||
1036 | return; | ||
1037 | } | ||
1038 | } | ||
1039 | |||
1040 | /** | ||
1041 | * x86_quirk_trap_init - initialise system specific traps | 1024 | * x86_quirk_trap_init - initialise system specific traps |
1042 | * | 1025 | * |
1043 | * Description: | 1026 | * Description: |
diff --git a/arch/x86/kernel/visws_quirks.c b/arch/x86/kernel/visws_quirks.c index 1d6309d70dfa..a49013716da9 100644 --- a/arch/x86/kernel/visws_quirks.c +++ b/arch/x86/kernel/visws_quirks.c | |||
@@ -228,7 +228,6 @@ static int visws_trap_init(void); | |||
228 | 228 | ||
229 | static struct x86_quirks visws_x86_quirks __initdata = { | 229 | static struct x86_quirks visws_x86_quirks __initdata = { |
230 | .arch_time_init = visws_time_init, | 230 | .arch_time_init = visws_time_init, |
231 | .arch_intr_init = NULL, | ||
232 | .arch_trap_init = visws_trap_init, | 231 | .arch_trap_init = visws_trap_init, |
233 | }; | 232 | }; |
234 | 233 | ||
diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c index f2abe2136da1..8cb59332e3b4 100644 --- a/arch/x86/kernel/x86_init.c +++ b/arch/x86/kernel/x86_init.c | |||
@@ -39,5 +39,6 @@ struct __initdata x86_init_ops x86_init = { | |||
39 | 39 | ||
40 | .irqs = { | 40 | .irqs = { |
41 | .pre_vector_init = init_ISA_irqs, | 41 | .pre_vector_init = init_ISA_irqs, |
42 | .intr_init = native_init_IRQ, | ||
42 | }, | 43 | }, |
43 | }; | 44 | }; |