mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
crypto: ccp - Add an API to return the supported SEV-SNP policy bits
Supported policy bits are dependent on the level of SEV firmware that is currently running. Create an API to return the supported policy bits for the current level of firmware. Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> Acked-by: Herbert Xu <herbert@gondor.apana.org.au> Link: https://patch.msgid.link/e3f711366ddc22e3dd215c987fd2e28dc1c07f54.1761593632.git.thomas.lendacky@amd.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
committed by
Sean Christopherson
parent
ce62118a2e
commit
c9434e64e8
@@ -2777,6 +2777,43 @@ void sev_platform_shutdown(void)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sev_platform_shutdown);
|
||||
|
||||
u64 sev_get_snp_policy_bits(void)
|
||||
{
|
||||
struct psp_device *psp = psp_master;
|
||||
struct sev_device *sev;
|
||||
u64 policy_bits;
|
||||
|
||||
if (!cc_platform_has(CC_ATTR_HOST_SEV_SNP))
|
||||
return 0;
|
||||
|
||||
if (!psp || !psp->sev_data)
|
||||
return 0;
|
||||
|
||||
sev = psp->sev_data;
|
||||
|
||||
policy_bits = SNP_POLICY_MASK_BASE;
|
||||
|
||||
if (sev->snp_plat_status.feature_info) {
|
||||
if (sev->snp_feat_info_0.ecx & SNP_RAPL_DISABLE_SUPPORTED)
|
||||
policy_bits |= SNP_POLICY_MASK_RAPL_DIS;
|
||||
|
||||
if (sev->snp_feat_info_0.ecx & SNP_CIPHER_TEXT_HIDING_SUPPORTED)
|
||||
policy_bits |= SNP_POLICY_MASK_CIPHERTEXT_HIDING_DRAM;
|
||||
|
||||
if (sev->snp_feat_info_0.ecx & SNP_AES_256_XTS_POLICY_SUPPORTED)
|
||||
policy_bits |= SNP_POLICY_MASK_MEM_AES_256_XTS;
|
||||
|
||||
if (sev->snp_feat_info_0.ecx & SNP_CXL_ALLOW_POLICY_SUPPORTED)
|
||||
policy_bits |= SNP_POLICY_MASK_CXL_ALLOW;
|
||||
|
||||
if (sev_version_greater_or_equal(1, 58))
|
||||
policy_bits |= SNP_POLICY_MASK_PAGE_SWAP_DISABLE;
|
||||
}
|
||||
|
||||
return policy_bits;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sev_get_snp_policy_bits);
|
||||
|
||||
void sev_dev_destroy(struct psp_device *psp)
|
||||
{
|
||||
struct sev_device *sev = psp->sev_data;
|
||||
|
||||
Reference in New Issue
Block a user