[PATCH v7 08/36] x86/mm: Add support to enable SME in early boot processing

Tom Lendacky thomas.lendacky at amd.com
Tue Jun 20 08:52:48 PDT 2017


On 6/20/2017 2:38 AM, Borislav Petkov wrote:
> On Fri, Jun 16, 2017 at 01:51:15PM -0500, Tom Lendacky wrote:
>> Add support to the early boot code to use Secure Memory Encryption (SME).
>> Since the kernel has been loaded into memory in a decrypted state, encrypt
>> the kernel in place and update the early pagetables with the memory
>> encryption mask so that new pagetable entries will use memory encryption.
>>
>> The routines to set the encryption mask and perform the encryption are
>> stub routines for now with functionality to be added in a later patch.
>>
>> Because of the need to have the routines available to head_64.S, the
>> mem_encrypt.c is always built and #ifdefs in mem_encrypt.c will provide
>> functionality or stub routines depending on CONFIG_AMD_MEM_ENCRYPT.
>>
>> Signed-off-by: Tom Lendacky <thomas.lendacky at amd.com>
>> ---
>>   arch/x86/include/asm/mem_encrypt.h |    8 +++++++
>>   arch/x86/kernel/head64.c           |   33 +++++++++++++++++++++---------
>>   arch/x86/kernel/head_64.S          |   39 ++++++++++++++++++++++++++++++++++--
>>   arch/x86/mm/Makefile               |    4 +---
>>   arch/x86/mm/mem_encrypt.c          |   24 ++++++++++++++++++++++
>>   5 files changed, 93 insertions(+), 15 deletions(-)
> 
> ...
> 
>> diff --git a/arch/x86/mm/mem_encrypt.c b/arch/x86/mm/mem_encrypt.c
>> index b99d469..9a78277 100644
>> --- a/arch/x86/mm/mem_encrypt.c
>> +++ b/arch/x86/mm/mem_encrypt.c
>> @@ -11,6 +11,9 @@
>>    */
>>   
>>   #include <linux/linkage.h>
>> +#include <linux/init.h>
>> +
>> +#ifdef CONFIG_AMD_MEM_ENCRYPT
>>   
>>   /*
>>    * Since SME related variables are set early in the boot process they must
>> @@ -19,3 +22,24 @@
>>    */
>>   unsigned long sme_me_mask __section(.data) = 0;
>>   EXPORT_SYMBOL_GPL(sme_me_mask);
>> +
>> +void __init sme_encrypt_kernel(void)
>> +{
>> +}
> 
> Just the minor:
> 
> void __init sme_encrypt_kernel(void) { }
> 
> in case you have to respin.

I have to re-spin for the kbuild test error.  But given that this
function will be filled in later it's probably not worth doing the
space savings here.

Thanks,
Tom

> 
> Reviewed-by: Borislav Petkov <bp at suse.de>
> 



More information about the kexec mailing list