FUJITA Tomonori wrote:
On Thu, 08 Jul 2010 16:59:52 -0700
Zach Pfeffer [off-list ref] wrote:
quoted
The problem I'm trying to solve boils down to this: map a set of
contiguous physical buffers to an aligned IOMMU address. I need to
allocate the set of physical buffers in a particular way: use 1 MB
contiguous physical memory, then 64 KB, then 4 KB, etc. and I need to
align the IOMMU address in a particular way.
Sounds like the DMA API already supports what you want.
You can set segment_boundary_mask in struct device_dma_parameters if
you want to align the IOMMU address. See IOMMU implementations that
support dma_get_seg_boundary() properly.
That function takes the wrong argument in a VCM world:
unsigned long dma_get_seg_boundary(struct device *dev);
The boundary should be an attribute of the device side mapping,
independent of the device. This would allow better code reuse.
--
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.