]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/x86/kernel/amd_iommu_init.c
x86, amd-iommu: propagate PCI device enabling error
[linux-2.6-omap-h63xx.git] / arch / x86 / kernel / amd_iommu_init.c
index db0c83af44dec0a3c77bb880ef422d58738662a6..4cd8083c58be75d2eea19124ddf3758b15e860aa 100644 (file)
@@ -122,6 +122,7 @@ LIST_HEAD(amd_iommu_unity_map);             /* a list of required unity mappings
                                           we find in ACPI */
 unsigned amd_iommu_aperture_order = 26; /* size of aperture in power of 2 */
 int amd_iommu_isolate;                 /* if 1, device isolation is enabled */
+bool amd_iommu_unmap_flush;            /* if true, flush on every unmap */
 
 LIST_HEAD(amd_iommu_list);             /* list of all AMD IOMMUs in the
                                           system */
@@ -722,9 +723,7 @@ static int __init init_iommu_one(struct amd_iommu *iommu, struct ivhd_header *h)
        init_iommu_from_acpi(iommu, h);
        init_iommu_devices(iommu);
 
-       pci_enable_device(iommu->dev);
-
-       return 0;
+       return pci_enable_device(iommu->dev);
 }
 
 /*
@@ -1144,7 +1143,7 @@ int __init amd_iommu_init(void)
        else
                printk("disabled\n");
 
-       if (iommu_fullflush)
+       if (amd_iommu_unmap_flush)
                printk(KERN_INFO "AMD IOMMU: IO/TLB flush on unmap enabled\n");
        else
                printk(KERN_INFO "AMD IOMMU: Lazy IO/TLB flushing enabled\n");
@@ -1214,6 +1213,8 @@ static int __init parse_amd_iommu_options(char *str)
        for (; *str; ++str) {
                if (strncmp(str, "isolate", 7) == 0)
                        amd_iommu_isolate = 1;
+               if (strncmp(str, "fullflush", 11) == 0)
+                       amd_iommu_unmap_flush = true;
        }
 
        return 1;