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

Commit 0e7d37ad authored by Thierry Reding's avatar Thierry Reding Committed by Will Deacon
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.

Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
parent cfdeec22
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -2075,8 +2075,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;