From: "Heiko Stübner" <heiko@sntech.de>
To: Joerg Roedel <joro@8bytes.org>,
djkurtz@chromium.org, Tomasz Figa <tfiga@chromium.org>
Cc: iommu@lists.linux-foundation.org,
Will Deacon <will.deacon@arm.com>, Kukjin Kim <kgene@kernel.org>,
David Woodhouse <dwmw2@infradead.org>,
Hiroshi Doyu <hdoyu@nvidia.com>,
Thierry Reding <thierry.reding@gmail.com>,
Alex Williamson <alex.williamson@redhat.com>,
Robin Murphy <robin.murphy@arm.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Oded Gabbay <oded.gabbay@gmail.com>,
jroedel@suse.de, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 03/22] iommu: Propagate error in add_iommu_group
Date: Mon, 29 Jun 2015 11:28:40 +0200 [thread overview]
Message-ID: <7180470.n5cCZefX9d@diego> (raw)
In-Reply-To: <1432831305-11126-4-git-send-email-joro@8bytes.org>
Hi Joerg,
Am Donnerstag, 28. Mai 2015, 18:41:26 schrieb Joerg Roedel:
> From: Joerg Roedel <jroedel@suse.de>
>
> Make sure any errors reported from the IOMMU drivers get
> progapated back to the IOMMU core.
>
> Signed-off-by: Joerg Roedel <jroedel@suse.de>
sorry that this series slipped through my inbox without testing somehow.
Anyway, it seems to have now made its way in the merge-window and everything
on the Rockchip side still works - except this patch.
> ---
> drivers/iommu/iommu.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
> index 755e488..9c9336a 100644
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -750,9 +750,7 @@ static int add_iommu_group(struct device *dev, void
> *data)
>
> WARN_ON(dev->iommu_group);
>
> - ops->add_device(dev);
> -
> - return 0;
> + return ops->add_device(dev);
> }
>
> static int iommu_bus_notifier(struct notifier_block *nb,
The Rockchip iommu uses bus_set_ops to set its iommu-ops for the platform
bus and currently returns -ENODEV if it encounters a platform_devices that
does not have an iommu. As add_iommu_group ignored these returns
till now this worked, but of course starts to fail now.
All two invocations of the add_device callback ignored (or still ignore) the
return value so I've come with the following small patch to fix the breakage
that now exists in the 4.2 tree.
There is probably a better solution possible in the longer term, likely
similar to what Samsung does, but I'm not sure yet how this would work
with our drm device that needs an iommu mapping without having an
iommu (the iommus being attached to the crtc-components).
Heiko
------------- 8< ------------------
From: Heiko Stuebner <heiko@sntech.de>
Date: Sun, 28 Jun 2015 12:50:01 +0200
Subject: [PATCH] iommu/rockchip: ignore non-master devices in rk_iommu_add_device
During init we set the rockchip iommu ops as bus_ops for the platform bus.
While all Rockchip devices implementing an iommu use these same ops, there
are also platform devices without iommu. Until recently bus_set_iommu
ignored errors from the add_device callback and we simply returned -ENODEV
for devices without iommu. But we can also simply ignore devices without
iommu which simply ends up doing the same as before the iommu change that
began checking add_device return values.
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Fixes: 19762d7095e6 ("iommu: Propagate error in add_iommu_group")
---
drivers/iommu/rockchip-iommu.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c
index ebf0adb..63bcf48 100644
--- a/drivers/iommu/rockchip-iommu.c
+++ b/drivers/iommu/rockchip-iommu.c
@@ -931,8 +931,9 @@ static int rk_iommu_add_device(struct device *dev)
struct iommu_group *group;
int ret;
+ /* nothing to do if device does not have an iommu */
if (!rk_iommu_is_dev_iommu_master(dev))
- return -ENODEV;
+ return 0;
group = iommu_group_get(dev);
if (!group) {
--
2.1.4
next prev parent reply other threads:[~2015-06-29 9:29 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-28 16:41 [PATCH 00/22 v2] Introduce default domains for iommu groups Joerg Roedel
2015-05-28 16:41 ` [PATCH 01/22] iommu: Remove function name from pr_fmt() Joerg Roedel
2015-05-28 16:41 ` [PATCH 02/22] iommu: Add a few printk messages to group handling code Joerg Roedel
2015-05-28 16:41 ` [PATCH 03/22] iommu: Propagate error in add_iommu_group Joerg Roedel
2015-06-29 9:28 ` Heiko Stübner [this message]
2015-06-29 9:37 ` Joerg Roedel
2015-06-29 14:06 ` Joerg Roedel
2015-06-29 19:55 ` Heiko Stübner
2015-05-28 16:41 ` [PATCH 04/22] iommu: Clean up after a failed bus initialization Joerg Roedel
2015-05-28 16:41 ` [PATCH 05/22] iommu: Call remove_device call-back after driver release Joerg Roedel
2015-05-28 16:41 ` [PATCH 06/22] iommu: Allocate a default domain for iommu groups Joerg Roedel
2015-06-11 17:33 ` Robin Murphy
2015-06-11 17:33 ` Robin Murphy
2015-05-28 16:41 ` [PATCH 07/22] iommu: Limit iommu_attach/detach_device to devices with their own group Joerg Roedel
2015-05-28 16:41 ` [PATCH 08/22] iommu: Make sure a device is always attached to a domain Joerg Roedel
2015-06-11 17:41 ` Robin Murphy
2015-05-28 16:41 ` [PATCH 09/22] iommu: Add iommu_get_domain_for_dev function Joerg Roedel
2015-05-28 16:41 ` [PATCH 10/22] iommu: Introduce direct mapped region handling Joerg Roedel
2015-06-05 14:17 ` Will Deacon
2015-06-05 14:32 ` jroedel
2015-06-11 19:22 ` Robin Murphy
2015-05-28 16:41 ` [PATCH 11/22] iommu: Create direct mappings in default domains Joerg Roedel
2015-05-28 16:41 ` [PATCH 12/22] iommu: Add function to query the default domain of a group Joerg Roedel
2015-05-28 16:41 ` [PATCH 13/22] iommu: Introduce iommu_request_dm_for_dev() Joerg Roedel
2015-05-28 16:41 ` [PATCH 14/22] iommu/amd: Implement dm_region call-backs Joerg Roedel
2015-05-28 16:41 ` [PATCH 15/22] iommu/amd: Use default domain if available for DMA-API Joerg Roedel
2015-05-28 16:41 ` [PATCH 16/22] iommu/amd: Implement add_device and remove_device Joerg Roedel
2015-05-28 16:41 ` [PATCH 17/22] iommu/amd: Support IOMMU_DOMAIN_DMA type allocation Joerg Roedel
2015-05-28 16:41 ` [PATCH 18/22] iommu/amd: Support IOMMU_DOMAIN_IDENTITY " Joerg Roedel
2015-05-28 16:41 ` [PATCH 19/22] iommu/amd: Put IOMMUv2 devices in a direct mapped domain Joerg Roedel
2015-05-28 16:41 ` [PATCH 20/22] iommu/amd: Get rid of device_dma_ops_init() Joerg Roedel
2015-05-28 16:41 ` [PATCH 21/22] iommu/amd: Remove unused fields from struct dma_ops_domain Joerg Roedel
2015-05-28 16:41 ` [PATCH 22/22] iommu/amd: Propagate errors from amd_iommu_init_api Joerg Roedel
2015-06-05 14:22 ` [PATCH 00/22 v2] Introduce default domains for iommu groups Will Deacon
2015-06-05 14:35 ` jroedel
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=7180470.n5cCZefX9d@diego \
--to=heiko@sntech.de \
--cc=alex.williamson@redhat.com \
--cc=djkurtz@chromium.org \
--cc=dwmw2@infradead.org \
--cc=hdoyu@nvidia.com \
--cc=iommu@lists.linux-foundation.org \
--cc=joro@8bytes.org \
--cc=jroedel@suse.de \
--cc=kgene@kernel.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oded.gabbay@gmail.com \
--cc=robin.murphy@arm.com \
--cc=tfiga@chromium.org \
--cc=thierry.reding@gmail.com \
--cc=will.deacon@arm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox