Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1291218
| From | Joerg Roedel <joro@8bytes.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH v6 4/5] iommu/mediatek: Add mt8173 IOMMU driver |
| Date | 2015-12-14 15:20 +0100 |
| Message-ID | <qFC8N-7gr-3@gated-at.bofh.it> (permalink) |
| References | <qDn4e-xE-1@gated-at.bofh.it> <qDndV-AW-25@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Tue, Dec 08, 2015 at 05:49:12PM +0800, Yong Wu wrote:
> +static int mtk_iommu_attach_device(struct iommu_domain *domain,
> + struct device *dev)
> +{
> + struct mtk_iommu_domain *dom = to_mtk_domain(domain);
> + struct mtk_iommu_client_priv *priv = dev->archdata.iommu;
> + struct mtk_iommu_data *data;
> + int ret;
> +
> + if (!priv)
> + return -ENODEV;
> +
> + data = dev_get_drvdata(priv->m4udev);
> + if (!data) {
> + /*
> + * The DMA core will run earlier than this probe, and it will
> + * create a default iommu domain for each a iommu device.
> + * But here there is only one domain called the m4u domain
> + * which all the multimedia HW share.
> + * The default domain isn't needed here.
> + */
The iommu core creates one domain per iommu-group. In your case this
means one default domain per iommu in the system.
> + iommu_domain_free(domain);
This function is not supposed to free the domain passed to it.
> +static int mtk_iommu_add_device(struct device *dev)
> +{
> + struct iommu_group *group;
> +
> + if (!dev->archdata.iommu) /* Not a iommu client device */
> + return -ENODEV;
> +
> + group = iommu_group_get_for_dev(dev);
> + if (IS_ERR(group))
> + return PTR_ERR(group);
> +
> + iommu_group_put(group);
> + return 0;
> +}
[...]
> +static struct iommu_group *mtk_iommu_device_group(struct device *dev)
> +{
> + struct mtk_iommu_data *data;
> + struct mtk_iommu_client_priv *priv;
> +
> + priv = dev->archdata.iommu;
> + if (!priv)
> + return ERR_PTR(-ENODEV);
> +
> + /* All the client devices are in the same m4u iommu-group */
> + data = dev_get_drvdata(priv->m4udev);
> + if (!data->m4u_group) {
> + data->m4u_group = iommu_group_alloc();
> + if (IS_ERR(data->m4u_group))
> + dev_err(dev, "Failed to allocate M4U IOMMU group\n");
> + }
> + return data->m4u_group;
> +}
This looks much better than before, thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
Re: [PATCH v6 4/5] iommu/mediatek: Add mt8173 IOMMU driver Joerg Roedel <joro@8bytes.org> - 2015-12-14 15:20 +0100
Re: [PATCH v6 4/5] iommu/mediatek: Add mt8173 IOMMU driver Yong Wu <yong.wu@mediatek.com> - 2015-12-15 04:30 +0100
Re: [PATCH v6 4/5] iommu/mediatek: Add mt8173 IOMMU driver Robin Murphy <robin.murphy@arm.com> - 2015-12-15 13:40 +0100
Re: [PATCH v6 4/5] iommu/mediatek: Add mt8173 IOMMU driver Yong Wu <yong.wu@mediatek.com> - 2015-12-16 07:10 +0100
Re: [PATCH v6 4/5] iommu/mediatek: Add mt8173 IOMMU driver Robin Murphy <robin.murphy@arm.com> - 2015-12-16 13:50 +0100
Re: [PATCH v6 4/5] iommu/mediatek: Add mt8173 IOMMU driver Yong Wu <yong.wu@mediatek.com> - 2015-12-17 04:20 +0100
Re: [PATCH v6 4/5] iommu/mediatek: Add mt8173 IOMMU driver Joerg Roedel <joro@8bytes.org> - 2015-12-16 16:20 +0100
csiph-web