[GIT PULL] iommu: Kill off pgsize_bitmap field from struct iommu_ops
From: Will Deacon <hidden>
Date: 2015-03-31 14:49:56
Also in:
linux-iommu
On Tue, Mar 31, 2015 at 03:24:40PM +0100, Joerg Roedel wrote:
Hi Will,
Hi Joerg,
On Fri, Mar 27, 2015 at 05:19:46PM +0000, Will Deacon wrote:quoted
Please can you pull the following IOMMU changes for 4.1? They move the per-iommu_ops pgsize_bitmap field into the iommu_domain, which allows IOMMUs such as the ARM SMMU to support different page sizes within a given SoC.I have some concerns about the direction taken with this patch-set. The goal for the IOMMU-API is still to have domains that can be attached to arbitrary devices (even when mappings already exist). But with this patch-set we move into a direction where a domain can only be used on IOMMUs that support the page-sizes required by the domain. In the end this would be visible to the user of the IOMMU-API, which is not what we want.
But isn't this restriction already the case in practice? For example, if
I have a domain with some mapping already configured, then that mapping
will be using some fixed set of page sizes. Attaching a device behind
another IOMMU that doesn't support that page size would effectively require
the domain page tables to be freed and re-allocated from scratch.
So I don't think this patch series leaves us any worse off that we currently
are already.
Ths plus points of the patches are that:
- We can support different page sizes per domain (the ARM SMMU hardware
really does support this and it would be nice to exploit that to gain
better TLB utilisation)
- We can support systems containing IOMMUs that don't support a common
page size (I believe the arm64 Juno platform has this feature)
- I don't have to manipulate a const data structure (iommu_ops) at runtime
whenever I find a new IOMMU with a different set of supported page
sizes.
I can understand the motivation behind these patches, but we need to think about how this could work with the desired semantics of the IOMMU-API.
Do we have any code using this feature of the IOMMU API? I don't think it's realistic in the general case to allow arbitrary devices to be attached to a domain unless the domain can also span multiple IOMMUs. In that case, we'd actually need multiple sets of page tables, potentially described using different formats... Will