diff options
| -rw-r--r-- | arch/x86/include/asm/cpufeature.h | 1 | ||||
| -rw-r--r-- | arch/x86/include/asm/processor.h | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/bugs.c | 7 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/proc.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/setup.c | 2 | 
5 files changed, 6 insertions, 7 deletions
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h index c0ad7e75815..25eb9488a9a 100644 --- a/arch/x86/include/asm/cpufeature.h +++ b/arch/x86/include/asm/cpufeature.h @@ -223,6 +223,7 @@  #define X86_BUG(x)		(NCAPINTS*32 + (x))  #define X86_BUG_F00F		X86_BUG(0) /* Intel F00F */ +#define X86_BUG_FDIV		X86_BUG(1) /* FPU FDIV */  #if defined(__KERNEL__) && !defined(__ASSEMBLY__) diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index 1e55e2d543b..ea22dfaf6c5 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h @@ -91,7 +91,6 @@ struct cpuinfo_x86 {  	/* Problems on some 486Dx4's and old 386's: */  	char			hard_math;  	char			rfu; -	char			fdiv_bug;  	char			coma_bug;  	char			pad0;  #else diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c index af6455e3fcc..c59635ecbbb 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c @@ -59,7 +59,7 @@ static void __init check_fpu(void)  	 * trap_init() enabled FXSR and company _before_ testing for FP  	 * problems here.  	 * -	 * Test for the divl bug.. +	 * Test for the divl bug: http://en.wikipedia.org/wiki/Fdiv_bug  	 */  	__asm__("fninit\n\t"  		"fldl %1\n\t" @@ -75,9 +75,10 @@ static void __init check_fpu(void)  	kernel_fpu_end(); -	boot_cpu_data.fdiv_bug = fdiv_bug; -	if (boot_cpu_data.fdiv_bug) +	if (fdiv_bug) { +		set_cpu_bug(&boot_cpu_data, X86_BUG_FDIV);  		pr_warn("Hmm, FPU with FDIV bug\n"); +	}  }  /* diff --git a/arch/x86/kernel/cpu/proc.c b/arch/x86/kernel/cpu/proc.c index 2d60b2bec01..5dfb6c65138 100644 --- a/arch/x86/kernel/cpu/proc.c +++ b/arch/x86/kernel/cpu/proc.c @@ -34,7 +34,7 @@ static void show_cpuinfo_misc(struct seq_file *m, struct cpuinfo_x86 *c)  		   "fpu_exception\t: %s\n"  		   "cpuid level\t: %d\n"  		   "wp\t\t: %s\n", -		   c->fdiv_bug ? "yes" : "no", +		   static_cpu_has_bug(X86_BUG_FDIV) ? "yes" : "no",  		   static_cpu_has_bug(X86_BUG_F00F) ? "yes" : "no",  		   c->coma_bug ? "yes" : "no",  		   c->hard_math ? "yes" : "no", diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 90d8cc930f5..29258c75a2f 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -173,12 +173,10 @@ static struct resource bss_resource = {  /* cpu data as detected by the assembly code in head.S */  struct cpuinfo_x86 new_cpu_data __cpuinitdata = {  	.wp_works_ok = -1, -	.fdiv_bug = -1,  };  /* common cpu data for all cpus */  struct cpuinfo_x86 boot_cpu_data __read_mostly = {  	.wp_works_ok = -1, -	.fdiv_bug = -1,  };  EXPORT_SYMBOL(boot_cpu_data);  |