x86, cpu: Convert FDIV bug detection
... to the new facility. Add a reference to the wikipedia article explaining the FDIV test we're doing here. Signed-off-by: Borislav Petkov <bp@suse.de> Link: http://lkml.kernel.org/r/1363788448-31325-4-git-send-email-bp@alien8.de Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
parent
e2604b49e8
commit
93a829e8e2
|
@ -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__)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue