Re: [ 33/73] x86, microcode: Sanitize per-cpu microcode reloadinginterface

From: Borislav Petkov
Date: Fri Aug 03 2012 - 08:27:34 EST


On Fri, Aug 03, 2012 at 11:43:14AM +0200, Borislav Petkov wrote:
> On Fri, Aug 03, 2012 at 11:04:06AM +0200, Sven Joachim wrote:
> > On 2012-07-31 06:43 +0200, Ben Hutchings wrote:
> >
> > > 3.2-stable review patch. If anyone has any objections, please let me know.
> >
> > Alas, this does not build if CONFIG_SMP is unset:
> >
> > ,----
> > | arch/x86/kernel/microcode_core.c: In function 'reload_store':
> > | arch/x86/kernel/microcode_core.c:304:19: error: 'struct cpuinfo_x86' has no member named 'cpu_index'
> > `----
>
> Crap. :-(
>
> 3.2 still has this:
>
> <arch/x86/include/asm/processor.h>:
> ...
> #ifdef CONFIG_SMP
> /* number of cores as seen by the OS: */
> u16 booted_cores;
> /* Physical processor id: */
> u16 phys_proc_id;
> /* Core id: */
> u16 cpu_core_id;
> /* Compute unit id */
> u8 compute_unit_id;
> /* Index into per_cpu list: */
> u16 cpu_index;
> #endif
> u32 microcode;
> } __attribute__((__aligned__(SMP_CACHE_BYTES)));
> ---
>
> which got removed by
>
> commit 141168c36cdee3ff23d9c7700b0edc47cb65479f
> Author: Kevin Winchester <kjwinchester@xxxxxxxxx>
> Date: Tue Dec 20 20:52:22 2011 -0400
>
> x86: Simplify code by removing a !SMP #ifdefs from 'struct cpuinfo_x86'
>
> Ben, you might want to backport this one too... I'll run a couple of 3.2
> builds with it ontop of 3.2 to verify nothing else breaks.

Ok, 141168c36cdee3ff23d9c7700b0edc47cb65479f doesn't apply cleanly to
3.2-stable, as expected. I've attached a partly backported version. Why
partly? Well, it broke an UP build in mainline which got fixed later by

commit 3f806e50981825fa56a7f1938f24c0680816be45
Author: Borislav Petkov <bp@xxxxxxxxx>
Date: Fri Feb 3 20:18:01 2012 +0100

x86/mce/AMD: Fix UP build error

141168c36cde ("x86: Simplify code by removing a !SMP #ifdefs
from 'struct cpuinfo_x86'") removed a bunch of CONFIG_SMP ifdefs
around code touching struct cpuinfo_x86 members but also caused
the following build error with Randy's randconfigs:

mce_amd.c:(.cpuinit.text+0x4723): undefined reference to `cpu_llc_shared_map'
---

which reverted what the original patch removed.

So I've taken out the parts that introduce the breakage from the
backport.

And the attached version survives a bunch of smoke tests like
all{yes,no,mod}config builds on 32 and 64-bit.

@Sven: it should fix the issue on your box too.

HTH.

--