On Wed, Jan 10, 2018 at 01:25:45PM -0600, Tom Lendacky wrote:
> This patch series addresses an issue when SME is active and the BSP
> is attempting to check for and load microcode during load_ucode_bsp().
> Since the initrd has not been decrypted (yet) and the virtual address
> of the initrd treats the memory as encrypted, the CPIO archive parsing
> fails to locate the microcode.
> 
> This series moves the encryption of the initrd into the early boot code
> and encrypts it at the same time that the kernel is encrypted.  Since
> the initrd is now encrypted, the CPIO archive parsing succeeds in
> properly locating the microcode.
> 
> The following patches are included in this fix:
> - Cleanup register saving in arch/x86/mm/mem_encrypt_boot.S
> - Reduce parameters and complexity for creating the SME PGD mappings
> - Centralize the use of the PMD flags used in sme_encrypt_kernel() in
>   preparation for using PTE flags also.
> - Prepare sme_encrypt_kernel() to handle PAGE aligned encryption, not
>   just 2MB large page aligned encryption.
> - Encrypt the initrd in sme_encrypt_kernel() when the kernel is being
>   encrypted.
> 
> This patch series is based on tip/master.
> 
> ---
> 
> Changes from v2:
> - General code cleanup based on feedback.
> 
> Changes from v1:
> - Additional patch to cleanup the register saving performed in
>   arch/x86/mm/mem_encrypt_boot.S in prep for changes made in the
>   remainder of the patchset.
> - Additional patch to reduce parameters and complexity for creating the
>   SME PGD mappings by introducing and using a structure for referencing
>   the PGD to populate, the pagetable allocation area, the virtual/physical
>   addresses being mapped and the pagetable flags to be used.
> - Consolidate PMD/PTE mapping code to reduce duplication.
> 
> Tom Lendacky (5):
>       x86/mm: Cleanup register saving in mem_encrypt_boot.S
>       x86/mm: Use a struct to reduce parameters for SME PGD mapping
>       x86/mm: Centralize PMD flags in sme_encrypt_kernel()
>       x86/mm: Prepare sme_encrypt_kernel() for PAGE aligned encryption
>       x86/mm: Encrypt the initrd earlier for BSP microcode update
> 
> 
>  arch/x86/include/asm/mem_encrypt.h |    4 
>  arch/x86/kernel/head64.c           |    4 
>  arch/x86/kernel/setup.c            |   10 -
>  arch/x86/mm/mem_encrypt.c          |  356 
> ++++++++++++++++++++++++++----------
>  arch/x86/mm/mem_encrypt_boot.S     |   80 ++++----
>  5 files changed, 308 insertions(+), 146 deletions(-)

All 5:

Reviewed-by: Borislav Petkov <b...@suse.de>

-- 
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

Reply via email to