Message ID | 3-v1-c869a95191f2+5e8-iommu_single_grp_jgg@nvidia.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Introduce generic_single_device_group() | expand |
Dne torek, 22. avgust 2023 ob 18:15:58 CEST je Jason Gunthorpe napisal(a): > Use the new helper. > > Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com> Best regards, Jernej > --- > drivers/iommu/sun50i-iommu.c | 29 ++++++----------------------- > 1 file changed, 6 insertions(+), 23 deletions(-) > > diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c > index 74c5cb93e90027..b8df655185ab2a 100644 > --- a/drivers/iommu/sun50i-iommu.c > +++ b/drivers/iommu/sun50i-iommu.c > @@ -107,7 +107,6 @@ struct sun50i_iommu { > struct clk *clk; > > struct iommu_domain *domain; > - struct iommu_group *group; > struct kmem_cache *pt_pool; > }; > > @@ -808,13 +807,6 @@ static struct iommu_device > *sun50i_iommu_probe_device(struct device *dev) return &iommu->iommu; > } > > -static struct iommu_group *sun50i_iommu_device_group(struct device *dev) > -{ > - struct sun50i_iommu *iommu = sun50i_iommu_from_dev(dev); > - > - return iommu_group_ref_get(iommu->group); > -} > - > static int sun50i_iommu_of_xlate(struct device *dev, > struct of_phandle_args *args) > { > @@ -828,7 +820,7 @@ static int sun50i_iommu_of_xlate(struct device *dev, > > static const struct iommu_ops sun50i_iommu_ops = { > .pgsize_bitmap = SZ_4K, > - .device_group = sun50i_iommu_device_group, > + .device_group = generic_single_device_group, > .domain_alloc = sun50i_iommu_domain_alloc, > .of_xlate = sun50i_iommu_of_xlate, > .probe_device = sun50i_iommu_probe_device, > @@ -995,42 +987,36 @@ static int sun50i_iommu_probe(struct platform_device > *pdev) if (!iommu->pt_pool) > return -ENOMEM; > > - iommu->group = iommu_group_alloc(); > - if (IS_ERR(iommu->group)) { > - ret = PTR_ERR(iommu->group); > - goto err_free_cache; > - } > - > iommu->base = devm_platform_ioremap_resource(pdev, 0); > if (IS_ERR(iommu->base)) { > ret = PTR_ERR(iommu->base); > - goto err_free_group; > + goto err_free_cache; > } > > irq = platform_get_irq(pdev, 0); > if (irq < 0) { > ret = irq; > - goto err_free_group; > + goto err_free_cache; > } > > iommu->clk = devm_clk_get(&pdev->dev, NULL); > if (IS_ERR(iommu->clk)) { > dev_err(&pdev->dev, "Couldn't get our clock.\n"); > ret = PTR_ERR(iommu->clk); > - goto err_free_group; > + goto err_free_cache; > } > > iommu->reset = devm_reset_control_get(&pdev->dev, NULL); > if (IS_ERR(iommu->reset)) { > dev_err(&pdev->dev, "Couldn't get our reset line.\n"); > ret = PTR_ERR(iommu->reset); > - goto err_free_group; > + goto err_free_cache; > } > > ret = iommu_device_sysfs_add(&iommu->iommu, &pdev->dev, > NULL, dev_name(&pdev->dev)); > if (ret) > - goto err_free_group; > + goto err_free_cache; > > ret = iommu_device_register(&iommu->iommu, &sun50i_iommu_ops, &pdev->dev); > if (ret) > @@ -1049,9 +1035,6 @@ static int sun50i_iommu_probe(struct platform_device > *pdev) err_remove_sysfs: > iommu_device_sysfs_remove(&iommu->iommu); > > -err_free_group: > - iommu_group_put(iommu->group); > - > err_free_cache: > kmem_cache_destroy(iommu->pt_pool);
diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c index 74c5cb93e90027..b8df655185ab2a 100644 --- a/drivers/iommu/sun50i-iommu.c +++ b/drivers/iommu/sun50i-iommu.c @@ -107,7 +107,6 @@ struct sun50i_iommu { struct clk *clk; struct iommu_domain *domain; - struct iommu_group *group; struct kmem_cache *pt_pool; }; @@ -808,13 +807,6 @@ static struct iommu_device *sun50i_iommu_probe_device(struct device *dev) return &iommu->iommu; } -static struct iommu_group *sun50i_iommu_device_group(struct device *dev) -{ - struct sun50i_iommu *iommu = sun50i_iommu_from_dev(dev); - - return iommu_group_ref_get(iommu->group); -} - static int sun50i_iommu_of_xlate(struct device *dev, struct of_phandle_args *args) { @@ -828,7 +820,7 @@ static int sun50i_iommu_of_xlate(struct device *dev, static const struct iommu_ops sun50i_iommu_ops = { .pgsize_bitmap = SZ_4K, - .device_group = sun50i_iommu_device_group, + .device_group = generic_single_device_group, .domain_alloc = sun50i_iommu_domain_alloc, .of_xlate = sun50i_iommu_of_xlate, .probe_device = sun50i_iommu_probe_device, @@ -995,42 +987,36 @@ static int sun50i_iommu_probe(struct platform_device *pdev) if (!iommu->pt_pool) return -ENOMEM; - iommu->group = iommu_group_alloc(); - if (IS_ERR(iommu->group)) { - ret = PTR_ERR(iommu->group); - goto err_free_cache; - } - iommu->base = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(iommu->base)) { ret = PTR_ERR(iommu->base); - goto err_free_group; + goto err_free_cache; } irq = platform_get_irq(pdev, 0); if (irq < 0) { ret = irq; - goto err_free_group; + goto err_free_cache; } iommu->clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(iommu->clk)) { dev_err(&pdev->dev, "Couldn't get our clock.\n"); ret = PTR_ERR(iommu->clk); - goto err_free_group; + goto err_free_cache; } iommu->reset = devm_reset_control_get(&pdev->dev, NULL); if (IS_ERR(iommu->reset)) { dev_err(&pdev->dev, "Couldn't get our reset line.\n"); ret = PTR_ERR(iommu->reset); - goto err_free_group; + goto err_free_cache; } ret = iommu_device_sysfs_add(&iommu->iommu, &pdev->dev, NULL, dev_name(&pdev->dev)); if (ret) - goto err_free_group; + goto err_free_cache; ret = iommu_device_register(&iommu->iommu, &sun50i_iommu_ops, &pdev->dev); if (ret) @@ -1049,9 +1035,6 @@ static int sun50i_iommu_probe(struct platform_device *pdev) err_remove_sysfs: iommu_device_sysfs_remove(&iommu->iommu); -err_free_group: - iommu_group_put(iommu->group); - err_free_cache: kmem_cache_destroy(iommu->pt_pool);
Use the new helper. Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> --- drivers/iommu/sun50i-iommu.c | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-)