Re: mode of the i586 F0 bug

Andrea Arcangeli (arcangeli@mbox.queen.it)
Thu, 13 Nov 1997 20:24:54 +0100 (CET)


On Wed, 12 Nov 1997, Alan Cox wrote:

>Hopefully that info and the 2.1.63 linux patch is enough to get the fix into
>other free OS's too. And if anyone can find a way to break the linux 2.1.63
>fix we'd all love to know. Hopefully a complete official intel workaround
>will appear shortly and we can switch to that.

_Only_ if I compile the kernel with SMP=1 the fix don' t work: my _one_
CPU Pentium MMX machine locks. This happen always and _only_ when the
filesystem is mounted. I _think_ that is caused by syslogd that want to
write the `printk' to the log. I may be wrong...

Please Linus, apply the patch at the end to 2.1.63 to a better look:
arca:~$ cat /proc/cpuinfo
processor : 0
cpu : 586
model : Pentium MMX
vendor_id : GenuineIntel
stepping : 3
fdiv_bug : no
hlt_bug : no
sep_bug : no
pentium_f00f_bug : yes
^^^^^^^^^^^^^^^^ bleah :).
fpu : yes
fpu_exception : yes
cpuid : yes
wp : yes
flags : fpu vme de pse tsc msr mce cx8 mmx
bogomips : 466.94

Andreas Arcangeli

--- linux/include/asm-i386/bugs.h Thu Nov 13 19:40:00 1997
+++ /home/andrea/devel/linux_dev/include/asm-i386/bugs.h Thu Nov 13 19:51:58 1997
@@ -178,16 +178,15 @@
/*
* Pentium and Pentium MMX
*/
- printk("checking for F00F bug ...");
+ printk("Checking for f00f bug... ");
if(x86==5 && !memcmp(x86_vendor_id, "GenuineIntel", 12))
{
extern void trap_init_f00f_bug(void);

- printk(KERN_INFO "\nIntel Pentium/[MMX] F0 0F bug detected - turning on workaround.\n");
+ printk("Bad - turning on workaround.\n");
pentium_f00f_bug = 1;
trap_init_f00f_bug();
} else {
- printk(KERN_INFO " no F0 0F bug in this CPU, great!\n");
pentium_f00f_bug = 0;
}
}
--- linux/arch/i386/kernel/setup.c Thu Nov 13 15:54:23 1997
+++ /home/andrea/devel/linux_dev/arch/i386/kernel/setup.c Thu Nov 13 16:40:05 1997
@@ -360,7 +360,7 @@
"fdiv_bug\t: %s\n"
"hlt_bug\t\t: %s\n"
"sep_bug\t\t: %s\n"
- "pentium_f00f_bug\t\t: %s\n"
+ "f00f_bug\t\t: %s\n"
"fpu\t\t: %s\n"
"fpu_exception\t: %s\n"
"cpuid\t\t: %s\n"