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>
- return (ACPI_SUCCESS(status) ? 1 : 0);
+ return ACPI_SUCCESS(status) ? 0 : -ENOENT;
}
static int dmar_walk_remapping_entries(struct acpi_dmar_header *start,
}
static int dmar_walk_remapping_entries(struct acpi_dmar_header *start,
down_write(&dmar_global_lock);
ret = dmar_table_detect();
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
iommu_detected = 1;
/* Make sure ACS will be enabled */
pci_request_acs();
}
#ifdef CONFIG_X86
x86_init.iommu.iommu_init = intel_iommu_init;
#endif
x86_init.iommu.iommu_init = intel_iommu_init;
#endif
}
up_write(&dmar_global_lock);
}
up_write(&dmar_global_lock);
- return ret ? 1 : -ENODEV;
static void unmap_iommu(struct intel_iommu *iommu)
{
iounmap(iommu->reg);
static void unmap_iommu(struct intel_iommu *iommu)
{
iounmap(iommu->reg);