On Fri, Oct 08, 2010 at 04:59:38AM -0400, Jan Beulich wrote: > According to the documentation, simply reading the respective MSR > isn't sufficient: It should be written with zeros, cpuid(1) be > executed, and then read (see arch/x86/kernel/cpu/intel.c for an > example). > > v2: Fail probe when microcode revision cannot be determined, but is > needed to check for proper operation. > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx> > Cc: Fenghua Yu <fenghua.yu@xxxxxxxxx> > Cc: Chen Gong <gong.chen@xxxxxxxxxxxxxxx> > Cc: Jean Delvare <khali@xxxxxxxxxxxx> > > --- > drivers/hwmon/coretemp.c | 20 ++++++++++++++++++-- > 1 file changed, 18 insertions(+), 2 deletions(-) > > --- linux-2.6.36-rc7/drivers/hwmon/coretemp.c > +++ 2.6.36-rc7-coretemp-ucode/drivers/hwmon/coretemp.c > @@ -292,6 +292,15 @@ static int __devinit get_tjmax(struct cp > } > } > > +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 __devinit coretemp_probe(struct platform_device *pdev) > { > struct coretemp_data *data; > @@ -327,8 +336,15 @@ static int __devinit coretemp_probe(stru > > if ((c->x86_model == 0xe) && (c->x86_mask < 0xc)) { > /* check for microcode update */ > - rdmsr_on_cpu(data->id, MSR_IA32_UCODE_REV, &eax, &edx); > - if (edx < 0x39) { > + err = smp_call_function_single(data->id, get_ucode_rev_on_cpu, > + &edx, 1); > + if (err) { > + dev_err(&pdev->dev, > + "Cannot determine microcode revision of " > + "CPU#%u (%d)!\n", data->id, err); > + err = -ENODEV; > + goto exit_free; > + } else if (edx < 0x39) { > err = -ENODEV; > dev_err(&pdev->dev, > "Errata AE18 not fixed, update BIOS or " > Do we have a conclusion on this ? Looks like no one Acked it, and there was a suggestion to provice a generic piece of code to retrieve the ucode version. Turns out the ucode revision is already available via ucode_cpu_info[cpu].cpu_sig.rev unless I am missing something. Guenter _______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors