iommu/amd: Globally detect SNP support
authorSuravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Wed, 13 Jul 2022 22:56:47 +0000 (17:56 -0500)
committerJoerg Roedel <jroedel@suse.de>
Fri, 15 Jul 2022 08:41:03 +0000 (10:41 +0200)
Modify existing SNP feature check to use the helper function
check_feature_on_all_iommus() to ensure consistency among all IOMMUs.
Also report IOMMU SNP support information for each IOMMU.

Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Link: https://lore.kernel.org/r/20220713225651.20758-6-suravee.suthikulpanit@amd.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd/init.c

index 371f0b2..7c6e614 100644 (file)
@@ -389,7 +389,7 @@ static void iommu_set_cwwb_range(struct amd_iommu *iommu)
        u64 start = iommu_virt_to_phys((void *)iommu->cmd_sem);
        u64 entry = start & PM_ADDR_MASK;
 
-       if (!iommu_feature(iommu, FEATURE_SNP))
+       if (!check_feature_on_all_iommus(FEATURE_SNP))
                return;
 
        /* Note:
@@ -804,7 +804,7 @@ static void *__init iommu_alloc_4k_pages(struct amd_iommu *iommu,
        void *buf = (void *)__get_free_pages(gfp, order);
 
        if (buf &&
-           iommu_feature(iommu, FEATURE_SNP) &&
+           check_feature_on_all_iommus(FEATURE_SNP) &&
            set_memory_4k((unsigned long)buf, (1 << order))) {
                free_pages((unsigned long)buf, order);
                buf = NULL;
@@ -2143,6 +2143,9 @@ static void print_iommu_info(void)
                        if (iommu->features & FEATURE_GAM_VAPIC)
                                pr_cont(" GA_vAPIC");
 
+                       if (iommu->features & FEATURE_SNP)
+                               pr_cont(" SNP");
+
                        pr_cont("\n");
                }
        }