lkml.org 
[lkml]   [2022]   [Jun]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH Part2 v6 02/49] iommu/amd: Introduce function to check SEV-SNP support
    On Mon, Jun 20, 2022 at 4:59 PM Ashish Kalra <Ashish.Kalra@amd.com> wrote:
    >
    > From: Brijesh Singh <brijesh.singh@amd.com>
    >
    > The SEV-SNP support requires that IOMMU must to enabled, see the IOMMU
    > spec section 2.12 for further details. If IOMMU is not enabled or the
    > SNPSup extended feature register is not set then the SNP_INIT command
    > (used for initializing firmware) will fail.
    >
    > The iommu_sev_snp_supported() can be used to check if IOMMU supports the
    > SEV-SNP feature.
    >
    > Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
    > ---
    > drivers/iommu/amd/init.c | 30 ++++++++++++++++++++++++++++++
    > include/linux/iommu.h | 9 +++++++++
    > 2 files changed, 39 insertions(+)
    >
    > diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c
    > index 1a3ad58ba846..82be8067ddf5 100644
    > --- a/drivers/iommu/amd/init.c
    > +++ b/drivers/iommu/amd/init.c
    > @@ -3361,3 +3361,33 @@ int amd_iommu_pc_set_reg(struct amd_iommu *iommu, u8 bank, u8 cntr, u8 fxn, u64
    >
    > return iommu_pc_get_set_reg(iommu, bank, cntr, fxn, value, true);
    > }
    > +
    > +bool iommu_sev_snp_supported(void)
    > +{
    > + struct amd_iommu *iommu;
    > +
    > + /*
    > + * The SEV-SNP support requires that IOMMU must be enabled, and is
    > + * not configured in the passthrough mode.
    > + */
    > + if (no_iommu || iommu_default_passthrough()) {
    > + pr_err("SEV-SNP: IOMMU is either disabled or configured in passthrough mode.\n");

    Like below could this say something like snp support is disabled
    because of iommu settings.

    > + return false;
    > + }
    > +
    > + /*
    > + * Iterate through all the IOMMUs and verify the SNPSup feature is
    > + * enabled.
    > + */
    > + for_each_iommu(iommu) {
    > + if (!iommu_feature(iommu, FEATURE_SNP)) {
    > + pr_err("SNPSup is disabled (devid: %02x:%02x.%x)\n",

    SNPSup might not be obvious to readers, what about " SNP Support is
    disabled ...".

    Also should this have the "SEV-SNP:" prefix like the above log?

    > + PCI_BUS_NUM(iommu->devid), PCI_SLOT(iommu->devid),
    > + PCI_FUNC(iommu->devid));
    > + return false;
    > + }
    > + }
    > +
    > + return true;
    > +}
    > +EXPORT_SYMBOL_GPL(iommu_sev_snp_supported);
    > diff --git a/include/linux/iommu.h b/include/linux/iommu.h
    > index 9208eca4b0d1..fecb72e1b11b 100644
    > --- a/include/linux/iommu.h
    > +++ b/include/linux/iommu.h
    > @@ -675,6 +675,12 @@ struct iommu_sva *iommu_sva_bind_device(struct device *dev,
    > void iommu_sva_unbind_device(struct iommu_sva *handle);
    > u32 iommu_sva_get_pasid(struct iommu_sva *handle);
    >
    > +#ifdef CONFIG_AMD_MEM_ENCRYPT
    > +bool iommu_sev_snp_supported(void);
    > +#else
    > +static inline bool iommu_sev_snp_supported(void) { return false; }
    > +#endif
    > +
    > #else /* CONFIG_IOMMU_API */
    >
    > struct iommu_ops {};
    > @@ -1031,6 +1037,9 @@ static inline struct iommu_fwspec *dev_iommu_fwspec_get(struct device *dev)
    > {
    > return NULL;
    > }
    > +
    > +static inline bool iommu_sev_snp_supported(void) { return false; }
    > +
    > #endif /* CONFIG_IOMMU_API */
    >
    > /**
    > --
    > 2.25.1
    >

    \
     
     \ /
      Last update: 2022-06-21 17:30    [W:2.336 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site