lkml.org 
[lkml]   [2024]   [Apr]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v3 01/14] x86/sev: Rename snp_init() in the boot/compressed/sev.c file
    From
    On 3/25/2024 11:26 PM, Tom Lendacky wrote:
    > The snp_init() in boot/compressed/sev.c is local to that file and is not
    > called from outside of the file. Change the name so that it is not tied
    > to the function definition in arch/x86/include/asm/sev.h. 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, too.
    >
    > This will allow the snp_init() function in arch/x86/kernel/sev.c to be
    > changed without having to make the same change in boot/compressed/sev.c.
    >
    > Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>

    Seems no functional change. Just rename snp_init() & move functions up
    in the file.

    Reviewed-by: Pankaj Gupta <pankaj.gupta@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)
    > {
    > /*


    \
     
     \ /
      Last update: 2024-04-12 18:21    [W:4.093 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site