Re: [PATCH 1/3] x86, intel: Output microcode revision

From: Ingo Molnar
Date: Wed May 25 2011 - 03:06:18 EST



* Andi Kleen <andi@xxxxxxxxxxxxxx> wrote:

> --- a/arch/x86/include/asm/processor.h
> +++ b/arch/x86/include/asm/processor.h
> @@ -111,6 +111,8 @@ struct cpuinfo_x86 {
> /* Index into per_cpu list: */
> u16 cpu_index;
> #endif
> + /* CPU update signature */
> + u32 x86_cpu_update;

Btw,. there's one subtle thing here: it's possible to have *different*
microcode versions on different CPUs in te system.

This can happen if for example the BIOS somehow does not apply the right
microcode to all CPUs. It can also happen if physically different microcode
version CPUs are mixed. In theory people can mix steppings as well.

Would you be interested in adding a quick debugging check after all CPUs have
been brought online, and print some very visible boot warning message if
there's a mismatch between the steppings or microcode versions? Perhaps also
taint the kernel.

Having non-updated microcode is one thing, but having *mixed* versions can
introduce its own set of problems: there are workarounds that have to be
activated on all CPUs, otherwise the result may be undefined.

We did not check for this before, so this would be a separate patch as well.

This should be done in a generic way, so it should work with other x86 CPUs as
well.

Thanks,

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/