Hi Linus,
Apparently, on a HT (hyper-threading) enabled processors the processor
resources (for microcode update) are shared by all logical processors in a
single CPU package, so if one logical processor accepted the update then
it (currently) will fail on all others. Removing that check is harmless
for other (non-HT) processors and required on HT, so please apply this
patch.
Regards,
Tigran
--- arch/i386/kernel/microcode.c.0 Tue Oct 30 12:29:00 2001
+++ arch/i386/kernel/microcode.c Tue Oct 30 12:27:33 2001
@@ -47,6 +47,10 @@
* 1.08 11 Dec 2000, Richard Schaal <[email protected]> and
* Tigran Aivazian <[email protected]>
* Intel Pentium 4 processor support and bugfixes.
+ * 1.09 30 Oct 2001, Tigran Aivazian <[email protected]>
+ * Bugfix for HT (Hyper-Threading) enabled processors
+ * whereby processor resources are shared by all logical processors
+ * in a single CPU package.
*/
#include <linux/init.h>
@@ -61,7 +65,7 @@
#include <asm/uaccess.h>
#include <asm/processor.h>
-#define MICROCODE_VERSION "1.08"
+#define MICROCODE_VERSION "1.09"
MODULE_DESCRIPTION("Intel CPU (IA-32) microcode update driver");
MODULE_AUTHOR("Tigran Aivazian <[email protected]>");
@@ -240,10 +244,6 @@
printk(KERN_ERR
"microcode: CPU%d not 'upgrading' to earlier revision"
" %d (current=%d)\n", cpu_num, microcode[i].rev, rev);
- } else if (microcode[i].rev == rev) {
- printk(KERN_ERR
- "microcode: CPU%d already up-to-date (revision %d)\n",
- cpu_num, rev);
} else {
int sum = 0;
struct microcode *m = µcode[i];