Message ID | 20180924004153.8232-17-digetx@gmail.com |
---|---|
State | Deferred |
Headers | show |
Series | IOMMU: Tegra GART driver clean up and optimization | expand |
On Mon, Sep 24, 2018 at 03:41:49AM +0300, Dmitry Osipenko wrote: > GART is a part of the Memory Controller driver that is always built-in, > hence there is no benefit from the use of managed resources. > > Signed-off-by: Dmitry Osipenko <digetx@gmail.com> > --- > drivers/iommu/tegra-gart.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) One benefit would be cleanup on probe error. Also, we may eventually want to make even the memory controller driver buildable as a module. Thierry
On 9/24/18 1:52 PM, Thierry Reding wrote: > On Mon, Sep 24, 2018 at 03:41:49AM +0300, Dmitry Osipenko wrote: >> GART is a part of the Memory Controller driver that is always built-in, >> hence there is no benefit from the use of managed resources. >> >> Signed-off-by: Dmitry Osipenko <digetx@gmail.com> >> --- >> drivers/iommu/tegra-gart.c | 12 +++++++----- >> 1 file changed, 7 insertions(+), 5 deletions(-) > > One benefit would be cleanup on probe error. Also, we may eventually > want to make even the memory controller driver buildable as a module. Please, let's keep that patch as is and re-introduce devm once it will become really relevant.
On Mon, Sep 24, 2018 at 09:57:10PM +0300, Dmitry Osipenko wrote: > On 9/24/18 1:52 PM, Thierry Reding wrote: > > On Mon, Sep 24, 2018 at 03:41:49AM +0300, Dmitry Osipenko wrote: > >> GART is a part of the Memory Controller driver that is always built-in, > >> hence there is no benefit from the use of managed resources. > >> > >> Signed-off-by: Dmitry Osipenko <digetx@gmail.com> > >> --- > >> drivers/iommu/tegra-gart.c | 12 +++++++----- > >> 1 file changed, 7 insertions(+), 5 deletions(-) > > > > One benefit would be cleanup on probe error. Also, we may eventually > > want to make even the memory controller driver buildable as a module. > > Please, let's keep that patch as is and re-introduce devm once it will > become really relevant. Alright, fine with me. Thierry
On 9/25/18 1:03 PM, Thierry Reding wrote: > On Mon, Sep 24, 2018 at 09:57:10PM +0300, Dmitry Osipenko wrote: >> On 9/24/18 1:52 PM, Thierry Reding wrote: >>> On Mon, Sep 24, 2018 at 03:41:49AM +0300, Dmitry Osipenko wrote: >>>> GART is a part of the Memory Controller driver that is always built-in, >>>> hence there is no benefit from the use of managed resources. >>>> >>>> Signed-off-by: Dmitry Osipenko <digetx@gmail.com> >>>> --- >>>> drivers/iommu/tegra-gart.c | 12 +++++++----- >>>> 1 file changed, 7 insertions(+), 5 deletions(-) >>> >>> One benefit would be cleanup on probe error. Also, we may eventually >>> want to make even the memory controller driver buildable as a module. >> >> Please, let's keep that patch as is and re-introduce devm once it will >> become really relevant. > > Alright, fine with me. Thanks, I'm taking that as ACK.
diff --git a/drivers/iommu/tegra-gart.c b/drivers/iommu/tegra-gart.c index 9f7d3afb686f..d019ae8ecfc9 100644 --- a/drivers/iommu/tegra-gart.c +++ b/drivers/iommu/tegra-gart.c @@ -171,7 +171,7 @@ static int gart_iommu_attach_dev(struct iommu_domain *domain, struct gart_client *client, *c; int err = 0; - client = devm_kzalloc(gart->dev, sizeof(*c), GFP_KERNEL); + client = kzalloc(sizeof(*c), GFP_KERNEL); if (!client) return -ENOMEM; client->dev = dev; @@ -197,7 +197,7 @@ static int gart_iommu_attach_dev(struct iommu_domain *domain, return 0; fail: - devm_kfree(gart->dev, client); + kfree(client); spin_unlock(&gart->client_lock); return err; } @@ -212,7 +212,7 @@ static void __gart_iommu_detach_dev(struct iommu_domain *domain, list_for_each_entry(c, &gart->client, list) { if (c->dev == dev) { list_del(&c->list); - devm_kfree(gart->dev, c); + kfree(c); if (list_empty(&gart->client)) gart->active_domain = NULL; dev_dbg(gart->dev, "Detached %s\n", dev_name(dev)); @@ -459,7 +459,7 @@ struct gart_device *tegra_gart_probe(struct device *dev, return ERR_PTR(-ENXIO); } - gart = devm_kzalloc(dev, sizeof(*gart), GFP_KERNEL); + gart = kzalloc(sizeof(*gart), GFP_KERNEL); if (!gart) { dev_err(dev, "failed to allocate gart_device\n"); return ERR_PTR(-ENOMEM); @@ -468,7 +468,7 @@ struct gart_device *tegra_gart_probe(struct device *dev, ret = iommu_device_sysfs_add(&gart->iommu, dev, NULL, "gart"); if (ret) { dev_err(dev, "Failed to register IOMMU in sysfs\n"); - return ERR_PTR(ret); + goto free_gart; } iommu_device_set_ops(&gart->iommu, &gart_iommu_ops); @@ -506,6 +506,8 @@ struct gart_device *tegra_gart_probe(struct device *dev, iommu_device_unregister(&gart->iommu); remove_sysfs: iommu_device_sysfs_remove(&gart->iommu); +free_gart: + kfree(gart); return ERR_PTR(ret); }
GART is a part of the Memory Controller driver that is always built-in, hence there is no benefit from the use of managed resources. Signed-off-by: Dmitry Osipenko <digetx@gmail.com> --- drivers/iommu/tegra-gart.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)