lkml.org 
[lkml]   [2011]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRE: [PATCH 3/3] coretemp: Get microcode revision from cpu_data v3
    > -----Original Message-----
    > From: Andi Kleen [mailto:andi@firstfloor.org]
    > Sent: Wednesday, October 12, 2011 5:47 PM
    > To: x86@kernel.org
    > Cc: linux-kernel@vger.kernel.org; Andi Kleen; jbeulich@novell.com; Yu,
    > Fenghua; khali@linux-fr.org
    > Subject: [PATCH 3/3] coretemp: Get microcode revision from cpu_data v3
    >
    > From: Andi Kleen <ak@linux.intel.com>
    >
    > 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
    >
    > v2: Fix misplaced variable init. Remove unused variables.
    > v3: Port to latest tree
    > Cc: jbeulich@novell.com
    > Cc: fenghua.yu@intel.com
    > Cc: khali@linux-fr.org
    > Signed-off-by: Andi Kleen <ak@linux.intel.com>
    > ---
    > drivers/hwmon/coretemp.c | 28 ++++------------------------
    > 1 files changed, 4 insertions(+), 24 deletions(-)
    >
    > diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c
    > index 9323837..ce18c04 100644
    > --- a/drivers/hwmon/coretemp.c
    > +++ b/drivers/hwmon/coretemp.c
    > @@ -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;
    > }
    > --
    > 1.7.4.4

    Acked-by: Fenghua Yu <fenghua.yu@intel.com>



    \
     
     \ /
      Last update: 2011-10-13 18:13    [W:0.029 / U:36.432 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site