02.10.2020 09:08, Nicolin Chen пишет:
> @@ -865,7 +866,11 @@ static struct iommu_group 
> *tegra_smmu_device_group(struct device *dev)
>       group->smmu = smmu;
>       group->soc = soc;
>  
> -     group->group = iommu_group_alloc();
> +     if (dev_is_pci(dev))
> +             group->group = pci_device_group(dev);
> +     else
> +             group->group = generic_device_group(dev);
> +
>       if (IS_ERR(group->group)) {
>               devm_kfree(smmu->dev, group);
>               mutex_unlock(&smmu->lock);
> @@ -1069,22 +1074,32 @@ struct tegra_smmu *tegra_smmu_probe(struct device 
> *dev,
>       iommu_device_set_fwnode(&smmu->iommu, dev->fwnode);
>  
>       err = iommu_device_register(&smmu->iommu);
> -     if (err) {
> -             iommu_device_sysfs_remove(&smmu->iommu);
> -             return ERR_PTR(err);
> -     }
> +     if (err)
> +             goto err_sysfs;
>  
>       err = bus_set_iommu(&platform_bus_type, &tegra_smmu_ops);
> -     if (err < 0) {
> -             iommu_device_unregister(&smmu->iommu);
> -             iommu_device_sysfs_remove(&smmu->iommu);
> -             return ERR_PTR(err);
> -     }
> +     if (err < 0)
> +             goto err_unregister;
> +
> +#ifdef CONFIG_PCI
> +     err = bus_set_iommu(&pci_bus_type, &tegra_smmu_ops);
> +     if (err < 0)
> +             goto err_bus_set;
> +#endif
>  
>       if (IS_ENABLED(CONFIG_DEBUG_FS))
>               tegra_smmu_debugfs_init(smmu);
>  
>       return smmu;
> +
> +err_bus_set: __maybe_unused;

__maybe_unused?

Reply via email to