From: Thierry Reding <thierry.reding@gmail.com>
To: Nicolin Chen <nicoleotsuka@gmail.com>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org,
jonathanh@nvidia.com, linux-tegra@vger.kernel.org,
digetx@gmail.com
Subject: Re: [PATCH v4 3/3] iommu/tegra-smmu: Add PCI support
Date: Mon, 5 Oct 2020 12:04:19 +0200 [thread overview]
Message-ID: <20201005100419.GK425362@ulmo> (raw)
In-Reply-To: <20201002060807.32138-4-nicoleotsuka@gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 3014 bytes --]
On Thu, Oct 01, 2020 at 11:08:07PM -0700, Nicolin Chen wrote:
> This patch simply adds support for PCI devices.
>
> Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
> ---
>
> Changelog
> v3->v4
> * Dropped !iommu_present() check
> * Added CONFIG_PCI check in the exit path
> v2->v3
> * Replaced ternary conditional operator with if-else in .device_group()
> * Dropped change in tegra_smmu_remove()
> v1->v2
> * Added error-out labels in tegra_smmu_probe()
> * Dropped pci_request_acs() since IOMMU core would call it.
>
> drivers/iommu/tegra-smmu.c | 37 +++++++++++++++++++++++++++----------
> 1 file changed, 27 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c
> index 02d02b0c55c4..b701a7b55e84 100644
> --- a/drivers/iommu/tegra-smmu.c
> +++ b/drivers/iommu/tegra-smmu.c
> @@ -10,6 +10,7 @@
> #include <linux/kernel.h>
> #include <linux/of.h>
> #include <linux/of_device.h>
> +#include <linux/pci.h>
> #include <linux/platform_device.h>
> #include <linux/slab.h>
> #include <linux/spinlock.h>
> @@ -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;
> + bus_set_iommu(&platform_bus_type, NULL);
> +err_unregister:
> + iommu_device_unregister(&smmu->iommu);
> +err_sysfs:
> + iommu_device_sysfs_remove(&smmu->iommu);
Can you please switch to label names that are more consistent with the
others in this driver? Notably the ones in tegra_smmu_domain_alloc().
The idea is to describe in the name of the label what's happening at the
label. Something like this, for example:
unset_platform_bus:
bus_set_iommu(&platform_bus_type, NULL);
unregister:
iommu_device_unregister(&smmu->iommu);
remove_sysfs:
iommu_device_sysfs_remove(&smmu->iommu);
Thierry
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 156 bytes --]
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Thierry Reding <thierry.reding@gmail.com>
To: Nicolin Chen <nicoleotsuka@gmail.com>
Cc: joro@8bytes.org, digetx@gmail.com, vdumpa@nvidia.com,
jonathanh@nvidia.com, linux-tegra@vger.kernel.org,
iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 3/3] iommu/tegra-smmu: Add PCI support
Date: Mon, 5 Oct 2020 12:04:19 +0200 [thread overview]
Message-ID: <20201005100419.GK425362@ulmo> (raw)
In-Reply-To: <20201002060807.32138-4-nicoleotsuka@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3014 bytes --]
On Thu, Oct 01, 2020 at 11:08:07PM -0700, Nicolin Chen wrote:
> This patch simply adds support for PCI devices.
>
> Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
> ---
>
> Changelog
> v3->v4
> * Dropped !iommu_present() check
> * Added CONFIG_PCI check in the exit path
> v2->v3
> * Replaced ternary conditional operator with if-else in .device_group()
> * Dropped change in tegra_smmu_remove()
> v1->v2
> * Added error-out labels in tegra_smmu_probe()
> * Dropped pci_request_acs() since IOMMU core would call it.
>
> drivers/iommu/tegra-smmu.c | 37 +++++++++++++++++++++++++++----------
> 1 file changed, 27 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c
> index 02d02b0c55c4..b701a7b55e84 100644
> --- a/drivers/iommu/tegra-smmu.c
> +++ b/drivers/iommu/tegra-smmu.c
> @@ -10,6 +10,7 @@
> #include <linux/kernel.h>
> #include <linux/of.h>
> #include <linux/of_device.h>
> +#include <linux/pci.h>
> #include <linux/platform_device.h>
> #include <linux/slab.h>
> #include <linux/spinlock.h>
> @@ -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;
> + bus_set_iommu(&platform_bus_type, NULL);
> +err_unregister:
> + iommu_device_unregister(&smmu->iommu);
> +err_sysfs:
> + iommu_device_sysfs_remove(&smmu->iommu);
Can you please switch to label names that are more consistent with the
others in this driver? Notably the ones in tegra_smmu_domain_alloc().
The idea is to describe in the name of the label what's happening at the
label. Something like this, for example:
unset_platform_bus:
bus_set_iommu(&platform_bus_type, NULL);
unregister:
iommu_device_unregister(&smmu->iommu);
remove_sysfs:
iommu_device_sysfs_remove(&smmu->iommu);
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2020-10-05 10:04 UTC|newest]
Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-02 6:08 [PATCH v4 0/3] iommu/tegra-smmu: Add PCI support Nicolin Chen
2020-10-02 6:08 ` Nicolin Chen
2020-10-02 6:08 ` [PATCH v4 1/3] iommu/tegra-smmu: Use fwspec in tegra_smmu_(de)attach_dev Nicolin Chen
2020-10-02 6:08 ` Nicolin Chen
2020-10-02 14:22 ` Dmitry Osipenko
2020-10-02 14:22 ` Dmitry Osipenko
2020-10-02 14:52 ` Dmitry Osipenko
2020-10-02 14:52 ` Dmitry Osipenko
2020-10-02 19:56 ` Nicolin Chen
2020-10-02 19:56 ` Nicolin Chen
2020-10-02 14:26 ` Dmitry Osipenko
2020-10-02 14:26 ` Dmitry Osipenko
2020-10-02 14:41 ` Dmitry Osipenko
2020-10-02 14:41 ` Dmitry Osipenko
2020-10-02 19:45 ` Nicolin Chen
2020-10-02 19:45 ` Nicolin Chen
2020-10-02 20:12 ` Dmitry Osipenko
2020-10-02 20:12 ` Dmitry Osipenko
2020-10-02 23:53 ` Nicolin Chen
2020-10-02 23:53 ` Nicolin Chen
2020-10-03 4:01 ` Dmitry Osipenko
2020-10-03 4:01 ` Dmitry Osipenko
2020-10-02 6:08 ` [PATCH v4 2/3] iommu/tegra-smmu: Rework tegra_smmu_probe_device() Nicolin Chen
2020-10-02 6:08 ` Nicolin Chen
2020-10-02 14:22 ` Dmitry Osipenko
2020-10-02 14:22 ` Dmitry Osipenko
2020-10-02 14:58 ` Dmitry Osipenko
2020-10-02 14:58 ` Dmitry Osipenko
2020-10-02 19:53 ` Nicolin Chen
2020-10-02 19:53 ` Nicolin Chen
2020-10-05 9:47 ` Thierry Reding
2020-10-05 9:47 ` Thierry Reding
2020-10-02 14:22 ` Dmitry Osipenko
2020-10-02 14:22 ` Dmitry Osipenko
2020-10-02 14:50 ` Dmitry Osipenko
2020-10-02 14:50 ` Dmitry Osipenko
2020-10-05 9:53 ` Thierry Reding
2020-10-05 9:53 ` Thierry Reding
2020-10-05 10:36 ` Dmitry Osipenko
2020-10-05 10:36 ` Dmitry Osipenko
2020-10-05 11:15 ` Thierry Reding
2020-10-05 11:15 ` Thierry Reding
2020-10-05 13:28 ` Dmitry Osipenko
2020-10-05 13:28 ` Dmitry Osipenko
2020-10-05 14:22 ` Thierry Reding
2020-10-05 14:22 ` Thierry Reding
2020-10-05 9:51 ` Thierry Reding
2020-10-05 9:51 ` Thierry Reding
2020-10-02 14:23 ` Dmitry Osipenko
2020-10-02 14:23 ` Dmitry Osipenko
2020-10-02 18:01 ` Nicolin Chen
2020-10-02 18:01 ` Nicolin Chen
2020-10-02 18:20 ` Dmitry Osipenko
2020-10-02 18:20 ` Dmitry Osipenko
2020-10-02 15:02 ` Dmitry Osipenko
2020-10-02 15:02 ` Dmitry Osipenko
2020-10-02 18:58 ` Nicolin Chen
2020-10-02 18:58 ` Nicolin Chen
2020-10-05 9:57 ` Thierry Reding
2020-10-05 9:57 ` Thierry Reding
2020-10-06 1:05 ` Nicolin Chen
2020-10-06 1:05 ` Nicolin Chen
2020-10-08 9:53 ` Thierry Reding
2020-10-08 9:53 ` Thierry Reding
2020-10-08 21:12 ` Nicolin Chen
2020-10-08 21:12 ` Nicolin Chen
2020-10-09 12:25 ` Thierry Reding
2020-10-09 12:25 ` Thierry Reding
2020-10-09 15:54 ` Nicolin Chen
2020-10-09 15:54 ` Nicolin Chen
2020-10-02 15:23 ` Dmitry Osipenko
2020-10-02 15:23 ` Dmitry Osipenko
2020-10-02 16:00 ` Dmitry Osipenko
2020-10-02 16:00 ` Dmitry Osipenko
2020-10-02 16:37 ` Dmitry Osipenko
2020-10-02 16:37 ` Dmitry Osipenko
2020-10-02 16:50 ` Dmitry Osipenko
2020-10-02 16:50 ` Dmitry Osipenko
2020-10-02 6:08 ` [PATCH v4 3/3] iommu/tegra-smmu: Add PCI support Nicolin Chen
2020-10-02 6:08 ` Nicolin Chen
2020-10-02 14:35 ` Dmitry Osipenko
2020-10-02 14:35 ` Dmitry Osipenko
2020-10-02 17:45 ` Nicolin Chen
2020-10-02 17:45 ` Nicolin Chen
2020-10-02 18:04 ` Dmitry Osipenko
2020-10-02 18:04 ` Dmitry Osipenko
2020-10-02 18:04 ` Dmitry Osipenko
2020-10-02 18:04 ` Dmitry Osipenko
2020-10-05 10:04 ` Thierry Reding [this message]
2020-10-05 10:04 ` Thierry Reding
2020-10-06 0:54 ` Nicolin Chen
2020-10-06 0:54 ` Nicolin Chen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201005100419.GK425362@ulmo \
--to=thierry.reding@gmail.com \
--cc=digetx@gmail.com \
--cc=iommu@lists.linux-foundation.org \
--cc=jonathanh@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=nicoleotsuka@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.