x86/mm: Extend cc_attr to include AMD SEV-SNP
authorBrijesh Singh <brijesh.singh@amd.com>
Thu, 24 Feb 2022 16:55:49 +0000 (10:55 -0600)
committerBorislav Petkov <bp@suse.de>
Wed, 6 Apr 2022 11:02:34 +0000 (13:02 +0200)
The CC_ATTR_GUEST_SEV_SNP can be used by the guest to query whether the
SNP (Secure Nested Paging) feature is active.

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/20220307213356.2797205-10-brijesh.singh@amd.com
arch/x86/coco/core.c
arch/x86/include/asm/msr-index.h
arch/x86/mm/mem_encrypt.c
include/linux/cc_platform.h

index fc1365d..dafd488 100644 (file)
@@ -57,6 +57,9 @@ static bool amd_cc_platform_has(enum cc_attr attr)
                return (sev_status & MSR_AMD64_SEV_ENABLED) &&
                        !(sev_status & MSR_AMD64_SEV_ES_ENABLED);
 
+       case CC_ATTR_GUEST_SEV_SNP:
+               return sev_status & MSR_AMD64_SEV_SNP_ENABLED;
+
        default:
                return false;
        }
index 0eb90d2..ef96f16 100644 (file)
 #define MSR_AMD64_SEV                  0xc0010131
 #define MSR_AMD64_SEV_ENABLED_BIT      0
 #define MSR_AMD64_SEV_ES_ENABLED_BIT   1
+#define MSR_AMD64_SEV_SNP_ENABLED_BIT  2
 #define MSR_AMD64_SEV_ENABLED          BIT_ULL(MSR_AMD64_SEV_ENABLED_BIT)
 #define MSR_AMD64_SEV_ES_ENABLED       BIT_ULL(MSR_AMD64_SEV_ES_ENABLED_BIT)
+#define MSR_AMD64_SEV_SNP_ENABLED      BIT_ULL(MSR_AMD64_SEV_SNP_ENABLED_BIT)
 
 #define MSR_AMD64_VIRT_SPEC_CTRL       0xc001011f
 
index 50d2099..f85868c 100644 (file)
@@ -62,6 +62,10 @@ static void print_mem_encrypt_feature_info(void)
        if (cc_platform_has(CC_ATTR_GUEST_STATE_ENCRYPT))
                pr_cont(" SEV-ES");
 
+       /* Secure Nested Paging */
+       if (cc_platform_has(CC_ATTR_GUEST_SEV_SNP))
+               pr_cont(" SEV-SNP");
+
        pr_cont("\n");
 }
 
index efd8205..d08dd65 100644 (file)
@@ -72,6 +72,14 @@ enum cc_attr {
         * Examples include TDX guest & SEV.
         */
        CC_ATTR_GUEST_UNROLL_STRING_IO,
+
+       /**
+        * @CC_ATTR_SEV_SNP: Guest SNP is active.
+        *
+        * The platform/OS is running as a guest/virtual machine and actively
+        * using AMD SEV-SNP features.
+        */
+       CC_ATTR_GUEST_SEV_SNP,
 };
 
 #ifdef CONFIG_ARCH_HAS_CC_PLATFORM