of: iommu: make of_iommu_init() postcore_initcall_sync

The of_iommu_init() is called multiple times by arch code,
make it postcore_initcall_sync, then we can drop relevant
calls fully.

Note, the IOMMUs should have a chance to perform some basic
initialisation before we start adding masters to them. So
postcore_initcall_sync is good choice, it ensures of_iommu_init()
called before of_platform_populate.

Acked-by: Rich Felker <[email protected]>
Tested-by: Marek Szyprowski <[email protected]>
Cc: Arnd Bergmann <[email protected]>
Cc: Catalin Marinas <[email protected]>
Cc: Marek Szyprowski <[email protected]>
Cc: Rich Felker <[email protected]>
Cc: Rob Herring <[email protected]>
Cc: Robin Murphy <[email protected]>
Cc: Will Deacon <[email protected]>
Signed-off-by: Kefeng Wang <[email protected]>
Acked-by: Joerg Roedel <[email protected]>
Signed-off-by: Rob Herring <[email protected]>
This commit is contained in:
Kefeng Wang 2016-06-01 14:06:15 +08:00 • committed by Rob Herring
commit bb8e15d604
5 changed files with 4 additions and 9 deletions

View file

@ -174,7 +174,7 @@ err_put_node:
return NULL;
}
void __init of_iommu_init(void)
static int __init of_iommu_init(void)
{
struct device_node *np;
const struct of_device_id *match, *matches = &__iommu_of_table;
@ -186,4 +186,7 @@ void __init of_iommu_init(void)
pr_err("Failed to initialise IOMMU %s\n",
of_node_full_name(np));
}
return 0;
}
postcore_initcall_sync(of_iommu_init);