From 10b6753c575c76662c4f86a43c8cf2b1891b1b6d Mon Sep 17 00:00:00 2001 From: Joerg Roedel Date: Thu, 14 Jun 2012 12:21:55 +0200 Subject: [PATCH] --- yaml --- r: 316571 b: refs/heads/master c: 4d121c3256edc66fe8a8e7f975eba72add120a26 h: refs/heads/master i: 316569: e28065a56c94516391be1e6430d27af872a7a20a 316567: f5ac89326e9e011a6dc7d8f848a4297b11f51d16 v: v3 --- [refs] | 2 +- trunk/drivers/iommu/amd_iommu_init.c | 44 +++++++++++++++++----------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/[refs] b/[refs] index a364c675ebdb..9211ca90d33d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 23c742db217113585ccc6c4a9b6ff96d642b6158 +refs/heads/master: 4d121c3256edc66fe8a8e7f975eba72add120a26 diff --git a/trunk/drivers/iommu/amd_iommu_init.c b/trunk/drivers/iommu/amd_iommu_init.c index c3d650dea240..b18034a8fdb3 100644 --- a/trunk/drivers/iommu/amd_iommu_init.c +++ b/trunk/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; }