Re: [PATCH 1/2] arm: msm: Add System MMU support.

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Arnd Bergmann
Date: Friday, July 30, 2010 - 2:59 pm

On Friday 30 July 2010 18:25:48 stepanm@codeaurora.org wrote:


The primary key is always the device pointer. If you look e.g. at 
arch/powerpc/include/asm/dma-mapping.h, you find

static inline struct dma_map_ops *get_dma_ops(struct device *dev)
{
        return dev->archdata.dma_ops;
}

From there, you know the type of the iommu, each of which has its
own dma_ops pointer. The dma_ops->map_sg() referenced there is
specific to one (or a fixed small number of) bus_type, e.g. PCI
or in your case an MSM specific SoC bus, so it can cast the device
to the bus specific data structure:

int msm_dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
                enum dma_data_direction dir)
{
	struct msm_device *dev = container_of(dev, struct msm_device, dev);

	...
}


The iommu_domain is currently a concept that is only used in KVM, and there
a domain currently would always span all of the IOMMUs that can host
virtualized devices. I'm not sure what you want to do with domains though.
Are you implementing KVM or another hypervisor, or is there another use
case?

I've seen discussions about using an IOMMU to share page tables with
regular processes so that user space can program a device to do DMA into
its own address space, which would require an IOMMU domain per process
using the device.

However, most of the time, it is better to change the programming model
of those devices to do the mapping inside of a kernel device driver
that allocates a physical memory area and maps it into both the BUS
address space (using dma_map_{sg,single}) and the user address space
(using mmap()).


My impression is that you are confusing the multi-IOMMU and the multi-domain
problem, which are orthogonal. The dma-mapping API can deal with multiple
IOMMUs as I described above, but has no concept of domains. KVM uses the
iommu.h API to get one domain per guest OS, but as you said, it does not
have a concept of multiple IOMMUs because neither Intel nor AMD require that
today.

If you really need multiple domains across multiple IOMMUs, I'd suggest that
we first merge the APIs and then port your code to that, but as a first step
you could implement the standard dma-mapping.h API, which allows you to use
the IOMMUs in kernel space.

	Arnd
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 1/2] arm: msm: Add System MMU support., Stepan Moskovchenko, (Tue Jul 27, 3:41 pm)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Daniel Walker, (Tue Jul 27, 3:43 pm)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Arnd Bergmann, (Wed Jul 28, 1:39 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., stepanm, (Wed Jul 28, 10:39 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Arnd Bergmann, (Wed Jul 28, 10:50 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Russell King - ARM Linux, (Wed Jul 28, 2:21 pm)
Re: [PATCH 1/2] arm: msm: Add System MMU support., FUJITA Tomonori, (Wed Jul 28, 8:35 pm)
Re: [PATCH 1/2] arm: msm: Add System MMU support., FUJITA Tomonori, (Wed Jul 28, 9:15 pm)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Arnd Bergmann, (Thu Jul 29, 1:12 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Arnd Bergmann, (Thu Jul 29, 1:26 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., FUJITA Tomonori, (Thu Jul 29, 1:35 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Roedel, Joerg, (Thu Jul 29, 1:40 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., FUJITA Tomonori, (Thu Jul 29, 1:46 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Roedel, Joerg, (Thu Jul 29, 2:06 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., FUJITA Tomonori, (Thu Jul 29, 2:14 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Roedel, Joerg, (Thu Jul 29, 2:25 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Roedel, Joerg, (Thu Jul 29, 2:28 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., FUJITA Tomonori, (Thu Jul 29, 2:44 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Roedel, Joerg, (Thu Jul 29, 3:01 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Arnd Bergmann, (Thu Jul 29, 4:25 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Russell King - ARM Linux, (Thu Jul 29, 4:47 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Roedel, Joerg, (Thu Jul 29, 5:12 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Arnd Bergmann, (Thu Jul 29, 6:01 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., stepanm, (Thu Jul 29, 10:19 pm)
Re: [PATCH 1/2] arm: msm: Add System MMU support., FUJITA Tomonori, (Thu Jul 29, 11:14 pm)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Arnd Bergmann, (Fri Jul 30, 1:01 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Arnd Bergmann, (Fri Jul 30, 2:59 pm)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Benjamin Herrenschmidt, (Fri Jul 30, 7:30 pm)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Benjamin Herrenschmidt, (Fri Jul 30, 8:15 pm)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Arnd Bergmann, (Sat Jul 31, 2:37 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Roedel, Joerg, (Mon Aug 2, 12:48 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Roedel, Joerg, (Mon Aug 2, 12:58 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Benjamin Herrenschmidt, (Mon Aug 2, 1:03 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Roedel, Joerg, (Mon Aug 2, 1:10 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., FUJITA Tomonori, (Mon Aug 2, 1:30 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Roedel, Joerg, (Mon Aug 2, 1:35 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Russell King - ARM Linux, (Mon Aug 2, 2:03 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., FUJITA Tomonori, (Mon Aug 2, 2:20 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Roedel, Joerg, (Mon Aug 2, 2:45 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Russell King - ARM Linux, (Mon Aug 2, 3:04 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., FUJITA Tomonori, (Mon Aug 2, 8:26 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Zach Pfeffer, (Mon Aug 2, 1:29 pm)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Roedel, Joerg, (Tue Aug 3, 2:23 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Stepan Moskovchenko, (Tue Aug 3, 11:43 am)
Re: [PATCH 1/2] arm: msm: Add System MMU support., Roedel, Joerg, (Wed Aug 4, 2:52 am)