Patch "x86/mm: Encrypt the initrd earlier for BSP microcode update" has been added to the 4.14-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
x86/mm: Encrypt the initrd earlier for BSP microcode update
to the 4.14-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-mm-encrypt-the-initrd-earlier-for-bsp-microcode-update.patch
and it can be found in the queue-4.14 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
107cd2532181b96c549e8f224cdcca8631c3076bMon Sep 17 00:00:00 2001
From: Tom Lendacky <[email protected]>
Date: Wed, 10 Jan 2018 13:26:34 -0600
Subject: x86/mm: Encrypt the initrd earlier for BSP microcode update
From: Tom Lendacky <[email protected]>
commit 107cd2532181b96c549e8f224cdcca8631c3076b upstream.
Currently the BSP microcode update code examines the initrd very early in the boot process. If SME is active, the initrd is treated as being encrypted but it has not been encrypted (in place) yet. Update the early boot code that encrypts the kernel to also encrypt the initrd so that early BSP microcode updates work.
--- arch/x86/include/asm/mem_encrypt.h | 4 +- arch/x86/kernel/head64.c | 4 +- arch/x86/kernel/setup.c | 8 ---- arch/x86/mm/mem_encrypt.c | 66 ++++++++++++++++++++++++++++++++----- arch/x86/mm/mem_encrypt_boot.S | 46 ++++++++++++------------- 5 files changed, 85 insertions(+), 43 deletions(-)
arch/x86/include/asm/mem_encrypt.h +2 -2
@@ -39,7 +39,7 @@ void __init sme_unmap_bootdata(char *reavoid __init sme_early_init (void ); -void __init sme_encrypt_kernel (void ); +void __init sme_encrypt_kernel (struct boot_params *bp);void __init sme_enable (struct boot_params *bp);/* Architecture __weak replacement functions */
@@ -61,7 +61,7 @@ static inline void __init sme_unmap_bootstatic inline void __init sme_early_init (void ) { } -static inline void __init sme_encrypt_kernel (void ) { } +static inline void __init sme_encrypt_kernel (struct boot_params *bp) { }static inline void __init sme_enable (struct boot_params *bp) { }#endif /* CONFIG_AMD_MEM_ENCRYPT */
arch/x86/kernel/head64.c +2 -2
@@ -157,8 +157,8 @@ unsigned long __head __startup_64(unsign p =fixup_pointer (&phys_base, physaddr); *p += load_delta -sme_get_me_mask (); -/* Encrypt the kernel (if SME is active) */ -sme_encrypt_kernel (); +/* Encrypt the kernel and related (if SME is active) */ +sme_encrypt_kernel (bp);/* * Return the SME encryption mask (if SME is active) to be used as a
arch/x86/kernel/setup.c +0 -8
@@ -376,14 +376,6 @@ static void __init reserve_initrd(void) !ramdisk_image || !ramdisk_size)return ;/* No initrd provided by bootloader */ -/* -* If SME is active, this memory will be marked encrypted by the -* kernel when it is accessed (including relocation). However, the -* ramdisk image was loaded decrypted by the bootloader, so make -* sure that it is encrypted before accessing it. -*/ -sme_early_encrypt (ramdisk_image, ramdisk_end - ramdisk_image); - initrd_start =0 ; mapped_size =memblock_mem_size (max_pfn_mapped);
arch/x86/mm/mem_encrypt.c +58 -8
128 lines not on this page · raw message
arch/x86/mm/mem_encrypt_boot.S +23 -23
99 lines not on this page · raw message
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/x86-mm-clean-up-register-saving-in-the-__enc_copy-assembly-code.patch queue-4.14/x86-mm-use-a-struct-to-reduce-parameters-for-sme-pgd-mapping.patch queue-4.14/x86-mm-centralize-pmd-flags-in-sme_encrypt_kernel.patch queue-4.14/x86-retpoline-fill-rsb-on-context-switch-for-affected-cpus.patch queue-4.14/x86-mm-prepare-sme_encrypt_kernel-for-page-aligned-encryption.patch queue-4.14/x86-retpoline-add-lfence-to-the-retpoline-rsb-filling-rsb-macros.patch queue-4.14/x86-mm-encrypt-the-initrd-earlier-for-bsp-microcode-update.patch