i386: fix section mismatch warning in intel.c
Fix following section mismatch warning: WARNING: vmlinux.o(.text+0xc88c): Section mismatch: reference to .init.text:trap_init_f00f_bug (between 'init_intel' and 'cpuid4_cache_lookup') init_intel are __cpuint where trap_init_f00f_bug is __init. Fixed by declaring trap_init_f00f_bug __cpuinit. Moved the defintion of trap_init_f00f_bug to the sole user in init.c so the ugly prototype in intel.c could get killed. Frank van Maarseveen <frankvm@frankvm.com> supplied the .config used to reproduce the warning. [ tglx: arch/x86 adaptation ] Cc: Frank van Maarseveen <frankvm@frankvm.com> Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
committed by
Thomas Gleixner
parent
25d1b51677
commit
d72b1b4f41
@@ -8,6 +8,7 @@
|
|||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
|
||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
|
#include <asm/pgtable.h>
|
||||||
#include <asm/msr.h>
|
#include <asm/msr.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
|
||||||
@@ -19,8 +20,6 @@
|
|||||||
#include <mach_apic.h>
|
#include <mach_apic.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern int trap_init_f00f_bug(void);
|
|
||||||
|
|
||||||
#ifdef CONFIG_X86_INTEL_USERCOPY
|
#ifdef CONFIG_X86_INTEL_USERCOPY
|
||||||
/*
|
/*
|
||||||
* Alignment at which movsl is preferred for bulk memory copies.
|
* Alignment at which movsl is preferred for bulk memory copies.
|
||||||
@@ -95,6 +94,20 @@ static int __cpuinit num_cpu_cores(struct cpuinfo_x86 *c)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_X86_F00F_BUG
|
||||||
|
static void __cpuinit trap_init_f00f_bug(void)
|
||||||
|
{
|
||||||
|
__set_fixmap(FIX_F00F_IDT, __pa(&idt_table), PAGE_KERNEL_RO);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Update the IDT descriptor and reload the IDT so that
|
||||||
|
* it uses the read-only mapped virtual address.
|
||||||
|
*/
|
||||||
|
idt_descr.address = fix_to_virt(FIX_F00F_IDT);
|
||||||
|
load_idt(&idt_descr);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void __cpuinit init_intel(struct cpuinfo_x86 *c)
|
static void __cpuinit init_intel(struct cpuinfo_x86 *c)
|
||||||
{
|
{
|
||||||
unsigned int l2 = 0;
|
unsigned int l2 = 0;
|
||||||
|
@@ -1112,20 +1112,6 @@ asmlinkage void math_emulate(long arg)
|
|||||||
|
|
||||||
#endif /* CONFIG_MATH_EMULATION */
|
#endif /* CONFIG_MATH_EMULATION */
|
||||||
|
|
||||||
#ifdef CONFIG_X86_F00F_BUG
|
|
||||||
void __init trap_init_f00f_bug(void)
|
|
||||||
{
|
|
||||||
__set_fixmap(FIX_F00F_IDT, __pa(&idt_table), PAGE_KERNEL_RO);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Update the IDT descriptor and reload the IDT so that
|
|
||||||
* it uses the read-only mapped virtual address.
|
|
||||||
*/
|
|
||||||
idt_descr.address = fix_to_virt(FIX_F00F_IDT);
|
|
||||||
load_idt(&idt_descr);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This needs to use 'idt_table' rather than 'idt', and
|
* This needs to use 'idt_table' rather than 'idt', and
|
||||||
* thus use the _nonmapped_ version of the IDT, as the
|
* thus use the _nonmapped_ version of the IDT, as the
|
||||||
|
Reference in New Issue
Block a user