1
linux/arch/x86/kernel/cpu/microcode
Borislav Petkov (AMD) 1d81d85d1a x86/microcode/AMD: Split load_microcode_amd()
This function should've been split a long time ago because it is used in
two paths:

1) On the late loading path, when the microcode is loaded through the
   request_firmware interface

2) In the save_microcode_in_initrd() path which collects all the
   microcode patches which are relevant for the current system before
   the initrd with the microcode container has been jettisoned.

   In that path, it is not really necessary to iterate over the nodes on
   a system and match a patch however it didn't cause any trouble so it
   was left for a later cleanup

However, that later cleanup was expedited by the fact that Jens was
enabling "Use L3 as a NUMA node" in the BIOS setting in his machine and
so this causes the NUMA CPU masks used in cpumask_of_node() to be
generated *after* 2) above happened on the first node. Which means, all
those masks were funky, wrong, uninitialized and whatnot, leading to
explosions when dereffing c->microcode in load_microcode_amd().

So split that function and do only the necessary work needed at each
stage.

Fixes: 94838d230a ("x86/microcode/AMD: Use the family,model,stepping encoded in the patch ID")
Reported-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Tested-by: Jens Axboe <axboe@kernel.dk>
Link: https://lore.kernel.org/r/91194406-3fdf-4e38-9838-d334af538f74@kernel.dk
2024-10-22 16:48:00 +02:00
..
amd.c x86/microcode/AMD: Split load_microcode_amd() 2024-10-22 16:48:00 +02:00
core.c x86/microcode: Remove unused struct cpu_info_ctx 2024-05-06 11:00:57 +02:00
intel.c x86/microcode/intel: Switch to new Intel CPU model defines 2024-04-29 10:31:26 +02:00
internal.h x86/microcode: Rework early revisions reporting 2023-11-21 16:35:48 +01:00
Makefile x86/microcode: Hide the config knob 2023-08-13 10:26:39 +02:00