[PATCH 00/16 v2] x86/microcode: 4.11 queue

From: Borislav Petkov
Date: Fri Jan 20 2017 - 16:47:28 EST


From: Borislav Petkov <bp@xxxxxxx>

Hi,

here's v2 incorporating all feedback from tglx. As a result, the final
version has gotten even cleaner. To the point that I might even start
sharing code between the Intel and AMD side. We'll see how ugly it gets.

Btw, 1/16 needs to go to tip/x86/urgent as it is another fix for the
loading rework that went in in 4.10.

Please queue the rest for 4.11.

Thanks.

Changelog:

v1:

so this is more of a lessons-learned pile after the rewriting of the
whole patch loading method and not caching addresses. It largely
simplifies the loader - just look at the diffstat - without any
functionality loss (I hope :-)). The driver is also very much readable
now with unified, common paths where possible.

What is more, 6/13 reworks the whole AMD container parsing into much
more readable separation of functionality and functions doing only one
thing properly.

13/13 is also another nice simplification for the AP update path which
looks almost straightforward in comparison with what we had before.

All has been tested on a lot of boxes and in different configurations:

* builtin vs initrd microcode
* old microcode_ctl application method for Intel
* "echo 1 > /sys/devices/system/cpu/microcode/reload" late method
* CONFIG_RANDOMIZE_MEMORY

both on Intel and AMD machines.

Borislav Petkov (16):
x86/microcode/intel: Drop stashed AP patch pointer optimization
x86/MSR: Carve out bare minimum accessors
x86/microcode: Convert to bare minimum MSR accessors
x86/microcode/AMD: Clean up find_equiv_id()
x86/microcode/AMD: Shorten function parameter's name
x86/microcode/AMD: Extend the container struct
x86/microcode/AMD: Rework container parsing
x86/microcode: Decrease CPUID use
x86/microcode/AMD: Get rid of global this_equiv_id
x86/microcode/AMD: Use find_microcode_in_initrd()
x86/microcode: Remove local vendor variable
x86/microcode/AMD: Check patch level only on the BSP
x86/microcode/AMD: Unify load_ucode_amd_ap()
x86/microcode/AMD: Simplify saving from initrd
x86/microcode/AMD: Remove AP scanning optimization
x86/microcode/AMD: Remove struct cont_desc.eq_id

arch/x86/include/asm/apic.h | 2 +-
arch/x86/include/asm/microcode.h | 9 +-
arch/x86/include/asm/microcode_amd.h | 2 -
arch/x86/include/asm/msr.h | 51 ++--
arch/x86/kernel/cpu/microcode/amd.c | 500 +++++++++++-----------------------
arch/x86/kernel/cpu/microcode/core.c | 81 ++++--
arch/x86/kernel/cpu/microcode/intel.c | 9 +-
7 files changed, 250 insertions(+), 404 deletions(-)

--
2.11.0