On Wed, Sep 30, 2020 at 08:24:02AM +0300, Dmitry Osipenko wrote: > 30.09.2020 03:30, Nicolin Chen пишет: > > + /* > > + * IOMMU core allows -ENODEV return to carry on. So bypass any call > > + * from bus_set_iommu() during tegra_smmu_probe(), as a device will > > + * call in again via of_iommu_configure when fwspec is prepared. > > + */ > > + if (!mc->smmu || !fwspec || fwspec->ops != &tegra_smmu_ops) > > return ERR_PTR(-ENODEV); > > The !mc->smmu can't be true. Are you sure? I have removed the "mc->smmu = smmu" in probe() with this change. So the only time "mc->smmu == !NULL" is after probe() of SMMU driver is returned. As my comments says, tegra_smmu_probe() calls in this function via bus_set_iommu(), so mc->smmu can be NULL in this case.