coretemp: Get microcode revision from cpu_data
authorAndi Kleen <ak@linux.intel.com>
Thu, 13 Oct 2011 00:46:35 +0000 (17:46 -0700)
committerIngo Molnar <mingo@elte.hu>
Fri, 14 Oct 2011 11:16:42 +0000 (13:16 +0200)
Now that the ucode revision is available in cpu_data remove
the existing code in coretemp.c to query it manually. Read the
ucode revision from cpu_data instead

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: H. Peter Anvin <hpa@zytor.com>
Cc: jbeulich@novell.com
Cc: fenghua.yu@intel.com
Cc: khali@linux-fr.org
Link: http://lkml.kernel.org/r/1318466795-7393-3-git-send-email-andi@firstfloor.org
Signed-off-by: Ingo Molnar <mingo@elte.hu>
drivers/hwmon/coretemp.c

index 9323837866422c181df7bee75b48cd7693db7bc2..ce18c046f72885b09a79e6d9160f4381b004657d 100644 (file)
@@ -325,15 +325,6 @@ static int get_tjmax(struct cpuinfo_x86 *c, u32 id, struct device *dev)
        return adjust_tjmax(c, id, dev);
 }
 
-static void __devinit get_ucode_rev_on_cpu(void *edx)
-{
-       u32 eax;
-
-       wrmsr(MSR_IA32_UCODE_REV, 0, 0);
-       sync_core();
-       rdmsr(MSR_IA32_UCODE_REV, eax, *(u32 *)edx);
-}
-
 static int create_name_attr(struct platform_data *pdata, struct device *dev)
 {
        sysfs_attr_init(&pdata->name_attr.attr);
@@ -380,27 +371,16 @@ exit_free:
 static int __cpuinit chk_ucode_version(unsigned int cpu)
 {
        struct cpuinfo_x86 *c = &cpu_data(cpu);
-       int err;
-       u32 edx;
 
        /*
         * Check if we have problem with errata AE18 of Core processors:
         * Readings might stop update when processor visited too deep sleep,
         * fixed for stepping D0 (6EC).
         */
-       if (c->x86_model == 0xe && c->x86_mask < 0xc) {
-               /* check for microcode update */
-               err = smp_call_function_single(cpu, get_ucode_rev_on_cpu,
-                                              &edx, 1);
-               if (err) {
-                       pr_err("Cannot determine microcode revision of "
-                              "CPU#%u (%d)!\n", cpu, err);
-                       return -ENODEV;
-               } else if (edx < 0x39) {
-                       pr_err("Errata AE18 not fixed, update BIOS or "
-                              "microcode of the CPU!\n");
-                       return -ENODEV;
-               }
+       if (c->x86_model == 0xe && c->x86_mask < 0xc && c->microcode < 0x39) {
+               pr_err("Errata AE18 not fixed, update BIOS or "
+                      "microcode of the CPU!\n");
+               return -ENODEV;
        }
        return 0;
 }