diff options
| -rw-r--r-- | drivers/iommu/amd_iommu_init.c | 44 | 
1 files changed, 27 insertions, 17 deletions
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c index c3d650dea24..b18034a8fdb 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c @@ -312,23 +312,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);  } @@ -1096,6 +1079,31 @@ 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" +	}; +	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; ARRAY_SIZE(feat_str); ++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; @@ -1112,6 +1120,8 @@ static int amd_iommu_init_pci(void)  	ret = amd_iommu_init_devices(); +	print_iommu_info(); +  	return ret;  }  |