[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160922144506.GK3541@8bytes.org>
Date: Thu, 22 Sep 2016 16:45:06 +0200
From: Joerg Roedel <joro@...tes.org>
To: Magnus Damm <magnus.damm@...il.com>
Cc: iommu@...ts.linux-foundation.org,
laurent.pinchart+renesas@...asonboard.com, geert+renesas@...der.be,
linux-kernel@...r.kernel.org, linux-renesas-soc@...r.kernel.org,
horms+renesas@...ge.net.au, robin.murphy@....com,
m.szyprowski@...sung.com
Subject: Re: [PATCH v5 05/07] iommu/ipmmu-vmsa: Add new IOMMU_DOMAIN_DMA ops
On Tue, Sep 20, 2016 at 10:44:46PM +0900, Magnus Damm wrote:
> +#ifdef CONFIG_IOMMU_DMA
> +
> +static struct iommu_domain *ipmmu_domain_alloc_dma(unsigned type)
> +{
> + struct iommu_domain *io_domain;
> +
> + if (type != IOMMU_DOMAIN_DMA)
> + return NULL;
> +
> + io_domain = __ipmmu_domain_alloc(type);
> + if (io_domain)
> + iommu_get_dma_cookie(io_domain);
> +
> + return io_domain;
> +}
> +
> +static void ipmmu_domain_free_dma(struct iommu_domain *io_domain)
> +{
> + iommu_put_dma_cookie(io_domain);
> + ipmmu_domain_free(io_domain);
> +}
> [...]
> +static const struct iommu_ops ipmmu_ops = {
> + .domain_alloc = ipmmu_domain_alloc_dma,
> + .domain_free = ipmmu_domain_free_dma,
Okay, so when CONFIG_IOMMU_DMA is enabled, you only support allocation
of DMA domains, not UNMANAGED domains anymore. Is there a reason for
that?
You can reduce the #ifdef'ed coded by supporting both types of domains
and call into allocation-subfunctions for DMA and UNMANAGED domains. The
#ifdef could then only let the dma-allocation function return NULL.
This would be much more compatible to what other IOMMU drivers do and
will allow VFIO usage in the future.
Joerg
Powered by blists - more mailing lists