Re: [PATCH v2] devicetree: Add generic IOMMU device tree bindings

From: Thierry Reding
Date: Fri Jun 06 2014 - 18:45:57 EST


This is somewhat off-topic, but given the various concepts discussed in
this thread I'm beginning to wonder how they will be implemented. The
current implementation hooks the IOMMU API into the DMA mapping API, and
the way this is done is by setting a single IOMMU (or rather a set of
IOMMU operations) globally per bus type.

There are two issues that I can see with that: one is that we can't
support multiple IOMMUs in the system at all, and the other is that
there is no context associated with the IOMMU ops, and therefore there
is no way to differentiate between two instances of the same IOMMU. A
few drivers use global variables to keep track of context information
but that won't work with multiple instances, unless they keep a global
list of all instances and then require explicit lookup in each of the
IOMMU operations. That sounds more like a workaround rather than a
proper solution to me.

Discussion in this thread indicates that both of the above will be
required at some point. Have I completely missed something or will we
have to rework (parts of) the IOMMU API to make this work?

One other thing that I have some difficulty understanding is how we can
support things like process isolation using the current IOMMU API. Since
a device will be statically assigned to one IOMMU domain at probe time
there is no way we can change the address space upon a context switch.

Thierry

Attachment: pgpsgi5yzVfwZ.pgp
Description: PGP signature