lkml.org 
[lkml]   [2022]   [Mar]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v12 09/46] x86/mm: Extend cc_attr to include AMD SEV-SNP
    Date
    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>
    ---
    arch/x86/coco/core.c | 3 +++
    arch/x86/include/asm/msr-index.h | 2 ++
    arch/x86/mm/mem_encrypt.c | 4 ++++
    include/linux/cc_platform.h | 8 ++++++++
    4 files changed, 17 insertions(+)

    diff --git a/arch/x86/coco/core.c b/arch/x86/coco/core.c
    index fc1365dd927e..dafd4881ce29 100644
    --- a/arch/x86/coco/core.c
    +++ b/arch/x86/coco/core.c
    @@ -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;
    }
    diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
    index a142cab6882e..1315531e66ef 100644
    --- a/arch/x86/include/asm/msr-index.h
    +++ b/arch/x86/include/asm/msr-index.h
    @@ -484,8 +484,10 @@
    #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

    diff --git a/arch/x86/mm/mem_encrypt.c b/arch/x86/mm/mem_encrypt.c
    index 50d209939c66..f85868c031c6 100644
    --- a/arch/x86/mm/mem_encrypt.c
    +++ b/arch/x86/mm/mem_encrypt.c
    @@ -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");
    }

    diff --git a/include/linux/cc_platform.h b/include/linux/cc_platform.h
    index efd8205282da..d08dd65b5c43 100644
    --- a/include/linux/cc_platform.h
    +++ b/include/linux/cc_platform.h
    @@ -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
    --
    2.25.1
    \
     
     \ /
      Last update: 2022-03-07 22:35    [W:3.975 / U:1.264 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site