x86, cpu: Convert F00F bug detection
... to using the new facility and drop the cpuinfo_x86 member. Signed-off-by: Borislav Petkov <bp@suse.de> Link: http://lkml.kernel.org/r/1363788448-31325-3-git-send-email-bp@alien8.de Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
parent
65fc985b37
commit
e2604b49e8
|
@ -222,6 +222,8 @@
|
||||||
*/
|
*/
|
||||||
#define X86_BUG(x) (NCAPINTS*32 + (x))
|
#define X86_BUG(x) (NCAPINTS*32 + (x))
|
||||||
|
|
||||||
|
#define X86_BUG_F00F X86_BUG(0) /* Intel F00F */
|
||||||
|
|
||||||
#if defined(__KERNEL__) && !defined(__ASSEMBLY__)
|
#if defined(__KERNEL__) && !defined(__ASSEMBLY__)
|
||||||
|
|
||||||
#include <asm/asm.h>
|
#include <asm/asm.h>
|
||||||
|
|
|
@ -92,7 +92,6 @@ struct cpuinfo_x86 {
|
||||||
char hard_math;
|
char hard_math;
|
||||||
char rfu;
|
char rfu;
|
||||||
char fdiv_bug;
|
char fdiv_bug;
|
||||||
char f00f_bug;
|
|
||||||
char coma_bug;
|
char coma_bug;
|
||||||
char pad0;
|
char pad0;
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -209,11 +209,11 @@ static void __cpuinit intel_workarounds(struct cpuinfo_x86 *c)
|
||||||
* system.
|
* system.
|
||||||
* Note that the workaround only should be initialized once...
|
* Note that the workaround only should be initialized once...
|
||||||
*/
|
*/
|
||||||
c->f00f_bug = 0;
|
clear_cpu_bug(c, X86_BUG_F00F);
|
||||||
if (!paravirt_enabled() && c->x86 == 5) {
|
if (!paravirt_enabled() && c->x86 == 5) {
|
||||||
static int f00f_workaround_enabled;
|
static int f00f_workaround_enabled;
|
||||||
|
|
||||||
c->f00f_bug = 1;
|
set_cpu_bug(c, X86_BUG_F00F);
|
||||||
if (!f00f_workaround_enabled) {
|
if (!f00f_workaround_enabled) {
|
||||||
trap_init_f00f_bug();
|
trap_init_f00f_bug();
|
||||||
printk(KERN_NOTICE "Intel Pentium with F0 0F bug - workaround enabled.\n");
|
printk(KERN_NOTICE "Intel Pentium with F0 0F bug - workaround enabled.\n");
|
||||||
|
|
|
@ -35,7 +35,7 @@ static void show_cpuinfo_misc(struct seq_file *m, struct cpuinfo_x86 *c)
|
||||||
"cpuid level\t: %d\n"
|
"cpuid level\t: %d\n"
|
||||||
"wp\t\t: %s\n",
|
"wp\t\t: %s\n",
|
||||||
c->fdiv_bug ? "yes" : "no",
|
c->fdiv_bug ? "yes" : "no",
|
||||||
c->f00f_bug ? "yes" : "no",
|
static_cpu_has_bug(X86_BUG_F00F) ? "yes" : "no",
|
||||||
c->coma_bug ? "yes" : "no",
|
c->coma_bug ? "yes" : "no",
|
||||||
c->hard_math ? "yes" : "no",
|
c->hard_math ? "yes" : "no",
|
||||||
c->hard_math ? "yes" : "no",
|
c->hard_math ? "yes" : "no",
|
||||||
|
|
|
@ -555,7 +555,7 @@ static int is_f00f_bug(struct pt_regs *regs, unsigned long address)
|
||||||
/*
|
/*
|
||||||
* Pentium F0 0F C7 C8 bug workaround:
|
* Pentium F0 0F C7 C8 bug workaround:
|
||||||
*/
|
*/
|
||||||
if (boot_cpu_data.f00f_bug) {
|
if (boot_cpu_has_bug(X86_BUG_F00F)) {
|
||||||
nr = (address - idt_descr.address) >> 3;
|
nr = (address - idt_descr.address) >> 3;
|
||||||
|
|
||||||
if (nr == 6) {
|
if (nr == 6) {
|
||||||
|
|
Loading…
Reference in New Issue