Re: [PATCH v5 05/19] iommu/arm-smmu: Implement of_xlate() for SMMUv3
From: Will Deacon <hidden>
Date: 2016-09-01 17:06:04
Also in:
linux-iommu
Hi Robin, On Tue, Aug 23, 2016 at 08:05:16PM +0100, Robin Murphy wrote:
Now that we can properly describe the mapping between PCI RIDs and
stream IDs via "iommu-map", and have it fed it to the driver
automatically via of_xlate(), rework the SMMUv3 driver to benefit from
that, and get rid of the current misuse of the "iommus" binding.
Since having of_xlate wired up means that masters will now be given the
appropriate DMA ops, we also need to make sure that default domains work
properly. This necessitates dispensing with the "whole group at a time"
notion for attaching to a domain, as devices which share a group get
attached to the group's default domain one by one as they are initially
probed.
Signed-off-by: Robin Murphy <redacted>
---
v5: Simplify init code, use firmware-agnostic (and more efficient)
driver-based instance lookupI'm largely happy with this, just one question below...
quoted hunk
@@ -2649,7 +2602,14 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev) platform_set_drvdata(pdev, smmu); /* Reset the device */ - return arm_smmu_device_reset(smmu); + ret = arm_smmu_device_reset(smmu); + if (ret) + return ret;
... if we fail the probe at this point, the drvdata remains set. Do you need to clear it, or we can we guarantee that nobody is going to try arm_smmu_get_by_node with the (failed) SMMU's device node? Alternatively, we could postpone setting the drvdata until the very end of probe. Will