Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f22c274c authored by Thierry Reding's avatar Thierry Reding Committed by Matt Wagantall
Browse files

iommu/arm-smmu: Play nice on non-ARM/SMMU systems



Currently the driver registers IOMMU bus operations for all busses even
if no ARM SMMU is present on a system. Depending on the driver probing
order this prevents the driver for the real IOMMU to register itself as
the bus-wide IOMMU.

Change-Id: I345b0e922ae3d0d71622217fd869747d25ae2bb4
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
Git-commit: 0e7d37adbe45404a76d05d4ef11544f23cf639dd
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git


Signed-off-by: default avatarMitchel Humpherys <mitchelh@codeaurora.org>
parent aba4e0dd
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -2798,8 +2798,20 @@ static struct platform_driver arm_smmu_driver = {

static int __init arm_smmu_init(void)
{
	struct device_node *np;
	int ret;

	/*
	 * Play nice with systems that don't have an ARM SMMU by checking that
	 * an ARM SMMU exists in the system before proceeding with the driver
	 * and IOMMU bus operation registration.
	 */
	np = of_find_matching_node(NULL, arm_smmu_of_match);
	if (!np)
		return 0;

	of_node_put(np);

	ret = platform_driver_register(&arm_smmu_driver);
	if (ret)
		return ret;