]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
iommu/dmar: Rectify return code handling in detect_intel_iommu()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 16 Mar 2017 14:23:51 +0000 (16:23 +0200)
committerJoerg Roedel <jroedel@suse.de>
Wed, 22 Mar 2017 14:42:17 +0000 (15:42 +0100)
There is inconsistency in return codes across the functions called from
detect_intel_iommu().

Make it consistent and propagate return code to the caller.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/dmar.c

index 36e3f430d2651af655480ae323dff48d919c5ecc..edcf7410f7367085e74ad8c397025ae87330e30b 100644 (file)
@@ -551,7 +551,7 @@ static int __init dmar_table_detect(void)
                status = AE_NOT_FOUND;
        }
 
-       return (ACPI_SUCCESS(status) ? 1 : 0);
+       return ACPI_SUCCESS(status) ? 0 : -ENOENT;
 }
 
 static int dmar_walk_remapping_entries(struct acpi_dmar_header *start,
@@ -891,17 +891,17 @@ int __init detect_intel_iommu(void)
 
        down_write(&dmar_global_lock);
        ret = dmar_table_detect();
-       if (ret)
-               ret = !dmar_walk_dmar_table((struct acpi_table_dmar *)dmar_tbl,
-                                           &validate_drhd_cb);
-       if (ret && !no_iommu && !iommu_detected && !dmar_disabled) {
+       if (!ret)
+               ret = dmar_walk_dmar_table((struct acpi_table_dmar *)dmar_tbl,
+                                          &validate_drhd_cb);
+       if (!ret && !no_iommu && !iommu_detected && !dmar_disabled) {
                iommu_detected = 1;
                /* Make sure ACS will be enabled */
                pci_request_acs();
        }
 
 #ifdef CONFIG_X86
-       if (ret)
+       if (!ret)
                x86_init.iommu.iommu_init = intel_iommu_init;
 #endif
 
@@ -911,10 +911,9 @@ int __init detect_intel_iommu(void)
        }
        up_write(&dmar_global_lock);
 
-       return ret ? 1 : -ENODEV;
+       return ret ? ret : 1;
 }
 
-
 static void unmap_iommu(struct intel_iommu *iommu)
 {
        iounmap(iommu->reg);