Patch "x86/microcode/intel: Make early loader look for builtin microcode too" has been added to the 4.5-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
x86/microcode/intel: Make early loader look for builtin microcode too
to the 4.5-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
x86-microcode-intel-make-early-loader-look-for-builtin-microcode-too.patch
and it can be found in the queue-4.5 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
264285ac01673e70557c43ecee338ce97c4c0672Mon Sep 17 00:00:00 2001
From: Borislav Petkov <[email protected]>
Date: Wed, 3 Feb 2016 12:33:30 +0100
Subject: x86/microcode/intel: Make early loader look for builtin microcode too
From: Borislav Petkov <[email protected]>
commit 264285ac01673e70557c43ecee338ce97c4c0672 upstream.
Set the initrd @start depending on the presence of an initrd. Otherwise, builtin microcode loading doesn't work as the start is wrong and we're using it to compute offset to the microcode blobs.
--- arch/x86/kernel/cpu/microcode/intel.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-)
arch/x86/kernel/cpu/microcode/intel.c +16 -8
@@ -551,10 +551,14 @@ scan_microcode(struct mc_saved_data *mc_ cd.data =NULL ; cd.size =0 ; - cd =find_cpio_data (p, (void *)start, size, &offset); -if (!cd.data) { +/* try built-in microcode if no initrd */ +if (!size) {if (!load_builtin_intel_microcode (&cd))return UCODE_ERROR ; + }else { + cd =find_cpio_data (p, (void *)start, size, &offset); +if (!cd.data) +return UCODE_ERROR ; } return get_matching_model_microcode(0, start, cd.data, cd.size,
@@ -728,16 +732,20 @@ void __init load_ucode_intel_bsp(void)struct boot_params *p; p = (struct boot_params *)__pa_nodebug (&boot_params); - start = p->hdr.ramdisk_image; size = p->hdr.ramdisk_size; -_load_ucode_intel_bsp ( - (struct mc_saved_data *)__pa_nodebug (&mc_saved_data), - (unsigned long *)__pa_nodebug (&mc_saved_in_initrd), - start, size); +/* +* Set start only if we have an initrd image. We cannot use initrd_start +* because it is not set that early yet. +*/ + start = (size ? p->hdr.ramdisk_image :0 ); + +_load_ucode_intel_bsp ((struct mc_saved_data *)__pa_nodebug (&mc_saved_data), + (unsigned long *)__pa_nodebug (&mc_saved_in_initrd), + start, size);#else - start = boot_params.hdr.ramdisk_image +PAGE_OFFSET ; size = boot_params.hdr.ramdisk_size; + start = (size ? boot_params.hdr.ramdisk_image +PAGE_OFFSET :0 );_load_ucode_intel_bsp (&mc_saved_data, mc_saved_in_initrd, start, size);#endif
Patches currently in stable-queue which might be from [email protected] are
queue-4.5/x86-microcode-intel-make-early-loader-look-for-builtin-microcode-too.patch queue-4.5/edac-amd64_edac-shift-wrapping-issue-in-f1x_get_norm_dct_addr.patch queue-4.5/x86-microcode-untangle-from-blk_dev_initrd.patch