lkml.org 
[lkml]   [2024]   [Apr]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 02/15] x86/sev: Rename snp_init() in the boot/compressed/sev.c file
    Date
    The snp_init() function in boot/compressed/sev.c is local to that file, is
    not called from outside of the file and is independent of the snp_init()
    function in kernel/sev.c. Change the name to better differentiate when
    each function is used.

    Move the renamed snp_init() and related functions up in the file to avoid
    having to add a forward declaration and make the function static.

    No functional change.

    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    ---
    arch/x86/boot/compressed/sev.c | 162 ++++++++++++++++-----------------
    1 file changed, 81 insertions(+), 81 deletions(-)

    diff --git a/arch/x86/boot/compressed/sev.c b/arch/x86/boot/compressed/sev.c
    index ec71846d28c9..5ad0ff4664f1 100644
    --- a/arch/x86/boot/compressed/sev.c
    +++ b/arch/x86/boot/compressed/sev.c
    @@ -413,6 +413,85 @@ void snp_check_features(void)
    }
    }

    +/* Search for Confidential Computing blob in the EFI config table. */
    +static struct cc_blob_sev_info *find_cc_blob_efi(struct boot_params *bp)
    +{
    + unsigned long cfg_table_pa;
    + unsigned int cfg_table_len;
    + int ret;
    +
    + ret = efi_get_conf_table(bp, &cfg_table_pa, &cfg_table_len);
    + if (ret)
    + return NULL;
    +
    + return (struct cc_blob_sev_info *)efi_find_vendor_table(bp, cfg_table_pa,
    + cfg_table_len,
    + EFI_CC_BLOB_GUID);
    +}
    +
    +/*
    + * Initial set up of SNP relies on information provided by the
    + * Confidential Computing blob, which can be passed to the boot kernel
    + * by firmware/bootloader in the following ways:
    + *
    + * - via an entry in the EFI config table
    + * - via a setup_data structure, as defined by the Linux Boot Protocol
    + *
    + * Scan for the blob in that order.
    + */
    +static struct cc_blob_sev_info *find_cc_blob(struct boot_params *bp)
    +{
    + struct cc_blob_sev_info *cc_info;
    +
    + cc_info = find_cc_blob_efi(bp);
    + if (cc_info)
    + goto found_cc_info;
    +
    + cc_info = find_cc_blob_setup_data(bp);
    + if (!cc_info)
    + return NULL;
    +
    +found_cc_info:
    + if (cc_info->magic != CC_BLOB_SEV_HDR_MAGIC)
    + sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SNP_UNSUPPORTED);
    +
    + return cc_info;
    +}
    +
    +/*
    + * Indicate SNP based on presence of SNP-specific CC blob. Subsequent checks
    + * will verify the SNP CPUID/MSR bits.
    + */
    +static bool early_snp_init(struct boot_params *bp)
    +{
    + struct cc_blob_sev_info *cc_info;
    +
    + if (!bp)
    + return false;
    +
    + cc_info = find_cc_blob(bp);
    + if (!cc_info)
    + return false;
    +
    + /*
    + * If a SNP-specific Confidential Computing blob is present, then
    + * firmware/bootloader have indicated SNP support. Verifying this
    + * involves CPUID checks which will be more reliable if the SNP
    + * CPUID table is used. See comments over snp_setup_cpuid_table() for
    + * more details.
    + */
    + setup_cpuid_table(cc_info);
    +
    + /*
    + * Pass run-time kernel a pointer to CC info via boot_params so EFI
    + * config table doesn't need to be searched again during early startup
    + * phase.
    + */
    + bp->cc_blob_address = (u32)(unsigned long)cc_info;
    +
    + return true;
    +}
    +
    /*
    * sev_check_cpu_support - Check for SEV support in the CPU capabilities
    *
    @@ -463,7 +542,7 @@ void sev_enable(struct boot_params *bp)
    bp->cc_blob_address = 0;

    /*
    - * Do an initial SEV capability check before snp_init() which
    + * Do an initial SEV capability check before early_snp_init() which
    * loads the CPUID page and the same checks afterwards are done
    * without the hypervisor and are trustworthy.
    *
    @@ -478,7 +557,7 @@ void sev_enable(struct boot_params *bp)
    * Setup/preliminary detection of SNP. This will be sanity-checked
    * against CPUID/MSR values later.
    */
    - snp = snp_init(bp);
    + snp = early_snp_init(bp);

    /* Now repeat the checks with the SNP CPUID table. */

    @@ -535,85 +614,6 @@ u64 sev_get_status(void)
    return m.q;
    }

    -/* Search for Confidential Computing blob in the EFI config table. */
    -static struct cc_blob_sev_info *find_cc_blob_efi(struct boot_params *bp)
    -{
    - unsigned long cfg_table_pa;
    - unsigned int cfg_table_len;
    - int ret;
    -
    - ret = efi_get_conf_table(bp, &cfg_table_pa, &cfg_table_len);
    - if (ret)
    - return NULL;
    -
    - return (struct cc_blob_sev_info *)efi_find_vendor_table(bp, cfg_table_pa,
    - cfg_table_len,
    - EFI_CC_BLOB_GUID);
    -}
    -
    -/*
    - * Initial set up of SNP relies on information provided by the
    - * Confidential Computing blob, which can be passed to the boot kernel
    - * by firmware/bootloader in the following ways:
    - *
    - * - via an entry in the EFI config table
    - * - via a setup_data structure, as defined by the Linux Boot Protocol
    - *
    - * Scan for the blob in that order.
    - */
    -static struct cc_blob_sev_info *find_cc_blob(struct boot_params *bp)
    -{
    - struct cc_blob_sev_info *cc_info;
    -
    - cc_info = find_cc_blob_efi(bp);
    - if (cc_info)
    - goto found_cc_info;
    -
    - cc_info = find_cc_blob_setup_data(bp);
    - if (!cc_info)
    - return NULL;
    -
    -found_cc_info:
    - if (cc_info->magic != CC_BLOB_SEV_HDR_MAGIC)
    - sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SNP_UNSUPPORTED);
    -
    - return cc_info;
    -}
    -
    -/*
    - * Indicate SNP based on presence of SNP-specific CC blob. Subsequent checks
    - * will verify the SNP CPUID/MSR bits.
    - */
    -bool snp_init(struct boot_params *bp)
    -{
    - struct cc_blob_sev_info *cc_info;
    -
    - if (!bp)
    - return false;
    -
    - cc_info = find_cc_blob(bp);
    - if (!cc_info)
    - return false;
    -
    - /*
    - * If a SNP-specific Confidential Computing blob is present, then
    - * firmware/bootloader have indicated SNP support. Verifying this
    - * involves CPUID checks which will be more reliable if the SNP
    - * CPUID table is used. See comments over snp_setup_cpuid_table() for
    - * more details.
    - */
    - setup_cpuid_table(cc_info);
    -
    - /*
    - * Pass run-time kernel a pointer to CC info via boot_params so EFI
    - * config table doesn't need to be searched again during early startup
    - * phase.
    - */
    - bp->cc_blob_address = (u32)(unsigned long)cc_info;
    -
    - return true;
    -}
    -
    void sev_prep_identity_maps(unsigned long top_level_pgt)
    {
    /*
    --
    2.43.2

    \
     
     \ /
      Last update: 2024-05-27 18:01    [W:4.449 / U:1.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site