Commit 46b3df8e authored by Robin Murphy's avatar Robin Murphy Committed by Will Deacon
Browse files

iommu: Manage driver probe deferral better



Since iommu_fwspec_init() absorbed the basic driver probe deferral
check to wait for an IOMMU to register, we may as well handle the probe
deferral timeout there as well. The current inconsistency of callers
results in client devices deferring forever on an arm64 ACPI system
where an SMMU has failed its own driver probe.

Acked-by: default avatarWill Deacon <will@kernel.org>
Signed-off-by: default avatarRobin Murphy <robin.murphy@arm.com>
Link: https://lore.kernel.org/r/41fa59f156ef8d196d08fa75c4901e6d4b12e6c4.1733406914.git.robin.murphy@arm.com


Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent fcbd6215
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2819,7 +2819,7 @@ int iommu_fwspec_init(struct device *dev, struct fwnode_handle *iommu_fwnode)
	struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(dev);

	if (!ops)
		return -EPROBE_DEFER;
		return driver_deferred_probe_check_state(dev);

	if (fwspec)
		return ops == iommu_fwspec_ops(fwspec) ? 0 : -EINVAL;
+0 −2
Original line number Diff line number Diff line
@@ -29,8 +29,6 @@ static int of_iommu_xlate(struct device *dev,
		return -ENODEV;

	ret = iommu_fwspec_init(dev, of_fwnode_handle(iommu_spec->np));
	if (ret == -EPROBE_DEFER)
		return driver_deferred_probe_check_state(dev);
	if (ret)
		return ret;