This function will be called before the PCI subsystem is
initialized. Therefore dev_name doen't work and IOMMU
information can't be printed to the klog as before. Move the
code to print that information to a later point where PCI
initializtion has already happened.

Signed-off-by: Joerg Roedel <joerg.roe...@amd.com>
---
 drivers/iommu/amd_iommu_init.c |   41 +++++++++++++++++++++++-----------------
 1 file changed, 24 insertions(+), 17 deletions(-)

diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index 1354497..e6782fa 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -318,23 +318,6 @@ static void iommu_set_inv_tlb_timeout(struct amd_iommu 
*iommu, int timeout)
 /* Function to enable the hardware */
 static void iommu_enable(struct amd_iommu *iommu)
 {
-       static const char * const feat_str[] = {
-               "PreF", "PPR", "X2APIC", "NX", "GT", "[5]",
-               "IA", "GA", "HE", "PC", NULL
-       };
-       int i;
-
-       printk(KERN_INFO "AMD-Vi: Enabling IOMMU at %s cap 0x%hx",
-              dev_name(&iommu->dev->dev), iommu->cap_ptr);
-
-       if (iommu->cap & (1 << IOMMU_CAP_EFR)) {
-               printk(KERN_CONT " extended features: ");
-               for (i = 0; feat_str[i]; ++i)
-                       if (iommu_feature(iommu, (1ULL << i)))
-                               printk(KERN_CONT " %s", feat_str[i]);
-       }
-       printk(KERN_CONT "\n");
-
        iommu_feature_enable(iommu, CONTROL_IOMMU_EN);
 }
 
@@ -1102,6 +1085,28 @@ static int iommu_init_pci(struct amd_iommu *iommu)
        return pci_enable_device(iommu->dev);
 }
 
+static void print_iommu_info(void)
+{
+       static const char * const feat_str[] = {
+               "PreF", "PPR", "X2APIC", "NX", "GT", "[5]",
+               "IA", "GA", "HE", "PC", NULL
+       };
+       struct amd_iommu *iommu;
+
+       for_each_iommu(iommu) {
+               int i;
+               pr_info("AMD-Vi: Found IOMMU at %s cap 0x%hx\n",
+                       dev_name(&iommu->dev->dev), iommu->cap_ptr);
+               if (iommu->cap & (1 << IOMMU_CAP_EFR)) {
+                       pr_info("AMD-Vi:  Extended features: ");
+                       for (i = 0; feat_str[i]; ++i)
+                               if (iommu_feature(iommu, (1ULL << i)))
+                                       pr_cont(" %s", feat_str[i]);
+               }
+               pr_cont("\n");
+       }
+}
+
 static int amd_iommu_init_pci(void)
 {
        struct amd_iommu *iommu;
@@ -1118,6 +1123,8 @@ static int amd_iommu_init_pci(void)
 
        ret = amd_iommu_init_devices();
 
+       print_iommu_info();
+
        return ret;
 }
 
-- 
1.7.9.5


_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to