2017-07-18 05:10:03 +08:00
|
|
|
/*
|
|
|
|
* AMD Memory Encryption Support
|
|
|
|
*
|
|
|
|
* Copyright (C) 2016 Advanced Micro Devices, Inc.
|
|
|
|
*
|
|
|
|
* Author: Tom Lendacky <thomas.lendacky@amd.com>
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
|
|
* published by the Free Software Foundation.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <linux/linkage.h>
|
2017-07-18 05:10:05 +08:00
|
|
|
#include <linux/init.h>
|
2017-07-18 05:10:07 +08:00
|
|
|
#include <linux/mm.h>
|
2017-07-18 05:10:03 +08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Since SME related variables are set early in the boot process they must
|
|
|
|
* reside in the .data section so as not to be zeroed out when the .bss
|
|
|
|
* section is later cleared.
|
|
|
|
*/
|
|
|
|
unsigned long sme_me_mask __section(.data) = 0;
|
|
|
|
EXPORT_SYMBOL_GPL(sme_me_mask);
|
2017-07-18 05:10:05 +08:00
|
|
|
|
2017-07-18 05:10:07 +08:00
|
|
|
void __init sme_early_init(void)
|
|
|
|
{
|
|
|
|
unsigned int i;
|
|
|
|
|
|
|
|
if (!sme_me_mask)
|
|
|
|
return;
|
|
|
|
|
|
|
|
early_pmd_flags = __sme_set(early_pmd_flags);
|
|
|
|
|
|
|
|
__supported_pte_mask = __sme_set(__supported_pte_mask);
|
|
|
|
|
|
|
|
/* Update the protection map with memory encryption mask */
|
|
|
|
for (i = 0; i < ARRAY_SIZE(protection_map); i++)
|
|
|
|
protection_map[i] = pgprot_encrypted(protection_map[i]);
|
|
|
|
}
|
|
|
|
|
2017-07-18 05:10:05 +08:00
|
|
|
void __init sme_encrypt_kernel(void)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void __init sme_enable(void)
|
|
|
|
{
|
|
|
|
}
|