Subject: [RFC 3/3] mm: iommu: The Virtual Contiguous Memory Manager

From: [email-masked] (Joerg Roedel)
Date: Sat, 10 Jul 2010 16:54:00 +0200

On Thu, Jul 01, 2010 at 03:00:17PM -0700, Zach Pfeffer wrote:
> Additionally, the current IOMMU interface does not allow users to
> associate one page table with multiple IOMMUs [...]

Thats not true. Multiple IOMMUs are completly handled by the IOMMU
drivers. In the case of the IOMMU-API backend drivers this also includes
the ability to use page-tables on multiple IOMMUs.

> Since the particular topology is run-time configurable all of these
> use-cases and more can be expressed without pushing the topology into
> the low-level IOMMU driver.

The IOMMU driver has to know about the topology anyway because it needs
to know which IOMMU it needs to program for a particular device.

> Already, there are ~20 different IOMMU map implementations in the
> kernel. Had the Linux kernel had the VCMM, many of those
> implementations could have leveraged the mapping and topology
> management of a VCMM, while focusing on a few key hardware specific
> functions (map this physical address, program the page table base
> register).

I partially agree here. All the IOMMU implementations in the Linux
kernel have a lot of functionality in common where code could be
shared. Work to share code has been done in the past by Fujita Tomonori
but there are more places to work on. I am just not sure if a new
front-end API is the right way to do this.

	Joerg