From: Joerg Roedel <joro@8bytes.org>
To: Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
Robin Murphy <robin.murphy@arm.com>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Kukjin Kim <kgene@kernel.org>,
Krzysztof Kozlowski <krzk@kernel.org>,
David Woodhouse <dwmw2@infradead.org>,
Lu Baolu <baolu.lu@linux.intel.com>,
Andy Gross <agross@kernel.org>,
Bjorn Andersson <bjorn.andersson@linaro.org>,
Matthias Brugger <matthias.bgg@gmail.com>,
Rob Clark <robdclark@gmail.com>, Heiko Stuebner <heiko@sntech.de>,
Gerald Schaefer <gerald.schaefer@de.ibm.com>,
Thierry Reding <thierry.reding@gmail.com>,
Jonathan Hunter <jonathanh@nvidia.com>,
Jean-Philippe Brucker <jean-philippe@linaro.org>
Cc: Daniel Drake <drake@endlessm.com>,
jonathan.derrick@intel.com, iommu@lists.linux-foundation.org,
linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
linux-arm-msm@vger.kernel.org,
linux-mediatek@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-s390@vger.kernel.org,
linux-tegra@vger.kernel.org,
virtualization@lists.linux-foundation.org,
Joerg Roedel <jroedel@suse.de>
Subject: [PATCH v3 33/34] iommu: Move more initialization to __iommu_probe_device()
Date: Wed, 29 Apr 2020 15:37:11 +0200 [thread overview]
Message-ID: <20200429133712.31431-34-joro@8bytes.org> (raw)
In-Reply-To: <20200429133712.31431-1-joro@8bytes.org>
From: Joerg Roedel <jroedel@suse.de>
Move the calls to dev_iommu_get() and try_module_get() into
__iommu_probe_device(), so that the callers don't have to do it on
their own.
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Acked-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/iommu/iommu.c | 47 +++++++++++++++++--------------------------
1 file changed, 18 insertions(+), 29 deletions(-)
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index 7f99e5ae432c..48a95f7d7999 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -194,9 +194,19 @@ static int __iommu_probe_device(struct device *dev, struct list_head *group_list
struct iommu_group *group;
int ret;
+ if (!dev_iommu_get(dev))
+ return -ENOMEM;
+
+ if (!try_module_get(ops->owner)) {
+ ret = -EINVAL;
+ goto err_free;
+ }
+
iommu_dev = ops->probe_device(dev);
- if (IS_ERR(iommu_dev))
- return PTR_ERR(iommu_dev);
+ if (IS_ERR(iommu_dev)) {
+ ret = PTR_ERR(iommu_dev);
+ goto out_module_put;
+ }
dev->iommu->iommu_dev = iommu_dev;
@@ -217,6 +227,12 @@ static int __iommu_probe_device(struct device *dev, struct list_head *group_list
out_release:
ops->release_device(dev);
+out_module_put:
+ module_put(ops->owner);
+
+err_free:
+ dev_iommu_free(dev);
+
return ret;
}
@@ -226,14 +242,6 @@ int iommu_probe_device(struct device *dev)
struct iommu_group *group;
int ret;
- if (!dev_iommu_get(dev))
- return -ENOMEM;
-
- if (!try_module_get(ops->owner)) {
- ret = -EINVAL;
- goto err_out;
- }
-
ret = __iommu_probe_device(dev, NULL);
if (ret)
goto err_out;
@@ -1532,14 +1540,10 @@ struct iommu_domain *iommu_group_default_domain(struct iommu_group *group)
static int probe_iommu_group(struct device *dev, void *data)
{
- const struct iommu_ops *ops = dev->bus->iommu_ops;
struct list_head *group_list = data;
struct iommu_group *group;
int ret;
- if (!dev_iommu_get(dev))
- return -ENOMEM;
-
/* Device is probed already if in a group */
group = iommu_group_get(dev);
if (group) {
@@ -1547,22 +1551,7 @@ static int probe_iommu_group(struct device *dev, void *data)
return 0;
}
- if (!try_module_get(ops->owner)) {
- ret = -EINVAL;
- goto err_free_dev_iommu;
- }
-
ret = __iommu_probe_device(dev, group_list);
- if (ret)
- goto err_module_put;
-
- return 0;
-
-err_module_put:
- module_put(ops->owner);
-err_free_dev_iommu:
- dev_iommu_free(dev);
-
if (ret == -ENODEV)
ret = 0;
--
2.17.1
next prev parent reply other threads:[~2020-04-29 13:38 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-29 13:36 [PATCH v3 00/34] iommu: Move iommu_group setup to IOMMU core code Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 01/34] iommu: Move default domain allocation to separate function Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 02/34] iommu: Add def_domain_type() callback in iommu_ops Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 03/34] iommu/amd: Implement iommu_ops->def_domain_type call-back Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 04/34] iommu/vt-d: Wire up iommu_ops->def_domain_type Joerg Roedel
2020-04-29 23:58 ` Lu Baolu
2020-04-29 13:36 ` [PATCH v3 05/34] iommu/amd: Remove dma_mask check from check_device() Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 06/34] iommu/amd: Return -ENODEV in add_device when device is not handled by IOMMU Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 07/34] iommu: Add probe_device() and release_device() call-backs Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 08/34] iommu: Move default domain allocation to iommu_probe_device() Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 09/34] iommu: Keep a list of allocated groups in __iommu_probe_device() Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 10/34] iommu: Move new probe_device path to separate function Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 11/34] iommu: Split off default domain allocation from group assignment Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 12/34] iommu: Move iommu_group_create_direct_mappings() out of iommu_group_add_device() Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 13/34] iommu: Export bus_iommu_probe() and make is safe for re-probing Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 14/34] iommu/amd: Remove dev_data->passthrough Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 15/34] iommu/amd: Convert to probe/release_device() call-backs Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 16/34] iommu/vt-d: " Joerg Roedel
2020-04-30 0:07 ` Lu Baolu
2020-04-29 13:36 ` [PATCH v3 17/34] iommu/arm-smmu: " Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 18/34] iommu/pamu: " Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 19/34] iommu/s390: " Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 20/34] iommu/virtio: " Joerg Roedel
2020-04-29 13:36 ` [PATCH v3 21/34] iommu/msm: " Joerg Roedel
2020-04-29 13:37 ` [PATCH v3 22/34] iommu/mediatek: " Joerg Roedel
2020-04-29 13:37 ` [PATCH v3 23/34] iommu/mediatek-v1 " Joerg Roedel
2020-04-29 13:37 ` [PATCH v3 24/34] iommu/qcom: " Joerg Roedel
2020-04-29 13:37 ` [PATCH v3 25/34] iommu/rockchip: " Joerg Roedel
2020-04-29 13:37 ` [PATCH v3 26/34] iommu/tegra: " Joerg Roedel
2020-04-29 13:37 ` [PATCH v3 27/34] iommu/renesas: " Joerg Roedel
2020-04-29 13:37 ` [PATCH v3 28/34] iommu/omap: Remove orphan_dev tracking Joerg Roedel
2020-04-29 13:37 ` [PATCH v3 29/34] iommu/omap: Convert to probe/release_device() call-backs Joerg Roedel
2020-04-29 13:37 ` [PATCH v3 30/34] iommu/exynos: Use first SYSMMU in controllers list for IOMMU core Joerg Roedel
2020-04-29 13:37 ` [PATCH v3 31/34] iommu/exynos: Convert to probe/release_device() call-backs Joerg Roedel
2020-04-29 13:37 ` [PATCH v3 32/34] iommu: Remove add_device()/remove_device() code-paths Joerg Roedel
2020-04-29 13:37 ` Joerg Roedel [this message]
2020-04-29 13:37 ` [PATCH v3 34/34] iommu: Unexport iommu_group_get_for_dev() Joerg Roedel
2020-05-05 12:37 ` [PATCH v3 00/34] iommu: Move iommu_group setup to IOMMU core code Joerg Roedel
2020-07-01 0:40 ` Qian Cai
2020-07-01 10:53 ` Robin Murphy
2020-07-04 0:17 ` Qian Cai
2020-07-09 15:24 ` Joerg Roedel
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=20200429133712.31431-34-joro@8bytes.org \
--to=joro@8bytes.org \
--cc=agross@kernel.org \
--cc=baolu.lu@linux.intel.com \
--cc=bjorn.andersson@linaro.org \
--cc=drake@endlessm.com \
--cc=dwmw2@infradead.org \
--cc=gerald.schaefer@de.ibm.com \
--cc=heiko@sntech.de \
--cc=iommu@lists.linux-foundation.org \
--cc=jean-philippe@linaro.org \
--cc=jonathan.derrick@intel.com \
--cc=jonathanh@nvidia.com \
--cc=jroedel@suse.de \
--cc=kgene@kernel.org \
--cc=krzk@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=matthias.bgg@gmail.com \
--cc=robdclark@gmail.com \
--cc=robin.murphy@arm.com \
--cc=thierry.reding@gmail.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=will@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).