iommu/amd: Move informational prinks out of iommu_enable
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.roedel@amd.com>
This commit is contained in:
@@ -312,23 +312,6 @@ static void iommu_set_inv_tlb_timeout(struct amd_iommu *iommu, int timeout)
|
|||||||
/* Function to enable the hardware */
|
/* Function to enable the hardware */
|
||||||
static void iommu_enable(struct amd_iommu *iommu)
|
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);
|
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);
|
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)
|
static int amd_iommu_init_pci(void)
|
||||||
{
|
{
|
||||||
struct amd_iommu *iommu;
|
struct amd_iommu *iommu;
|
||||||
@@ -1112,6 +1120,8 @@ static int amd_iommu_init_pci(void)
|
|||||||
|
|
||||||
ret = amd_iommu_init_devices();
|
ret = amd_iommu_init_devices();
|
||||||
|
|
||||||
|
print_iommu_info();
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user